Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 121 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Update Price | 16049321 | 1223 days ago | IN | 0 ETH | 0.00173604 | ||||
| Update Price | 16049255 | 1223 days ago | IN | 0 ETH | 0.00238281 | ||||
| Update Price | 16042088 | 1224 days ago | IN | 0 ETH | 0.00281668 | ||||
| Update Price | 16034942 | 1225 days ago | IN | 0 ETH | 0.00254935 | ||||
| Update Price | 16027786 | 1226 days ago | IN | 0 ETH | 0.00477349 | ||||
| Update Price | 16020634 | 1227 days ago | IN | 0 ETH | 0.0032148 | ||||
| Update Price | 16013472 | 1228 days ago | IN | 0 ETH | 0.00278643 | ||||
| Update Price | 16006457 | 1229 days ago | IN | 0 ETH | 0.00281808 | ||||
| Update Price | 16006429 | 1229 days ago | IN | 0 ETH | 0.00282116 | ||||
| Update Price | 16006322 | 1229 days ago | IN | 0 ETH | 0.00275699 | ||||
| Update Price | 15999145 | 1230 days ago | IN | 0 ETH | 0.00319052 | ||||
| Update Price | 15992118 | 1231 days ago | IN | 0 ETH | 0.00476063 | ||||
| Update Price | 15984898 | 1232 days ago | IN | 0 ETH | 0.01101666 | ||||
| Update Price | 15977750 | 1233 days ago | IN | 0 ETH | 0.00474658 | ||||
| Update Price | 15970525 | 1234 days ago | IN | 0 ETH | 0.00578369 | ||||
| Update Price | 15963354 | 1235 days ago | IN | 0 ETH | 0.00384377 | ||||
| Update Price | 15956186 | 1236 days ago | IN | 0 ETH | 0.00262236 | ||||
| Update Price | 15949045 | 1237 days ago | IN | 0 ETH | 0.00509368 | ||||
| Update Price | 15934731 | 1239 days ago | IN | 0 ETH | 0.01174834 | ||||
| Update Price | 15927583 | 1240 days ago | IN | 0 ETH | 0.02808444 | ||||
| Update Price | 15920394 | 1241 days ago | IN | 0 ETH | 0.00483554 | ||||
| Update Price | 15913253 | 1242 days ago | IN | 0 ETH | 0.00255231 | ||||
| Update Price | 15906059 | 1243 days ago | IN | 0 ETH | 0.00280217 | ||||
| Update Price | 15898901 | 1244 days ago | IN | 0 ETH | 0.00401784 | ||||
| Update Price | 15891770 | 1245 days ago | IN | 0 ETH | 0.006864 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
GMUOracle
Compiler Version
v0.8.4+commit.c7e474f2
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
//SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.0;
import {SafeMath} from "@openzeppelin/contracts/utils/math/SafeMath.sol";
import {IPriceFeed} from "./interfaces/IPriceFeed.sol";
import {Epoch} from "./utils/Epoch.sol";
import {console} from "hardhat/console.sol";
/**
* This is the GMU oracle that algorithmically apprecaites ARTH based on the
* growth of the underlying.
*
* @author Steven Enamakel enamakel@mahadao.com
*/
contract GMUOracle is IPriceFeed, Epoch {
using SafeMath for uint256;
/**
* @dev last captured price from the 7 day oracle
*/
uint256 public lastPrice7d;
/**
* @dev last captured price from the 30 day oracle
*/
uint256 public lastPrice30d;
/**
* @dev max price the gmu can change by per epoch; if this gets hit then
* the oracle breaks and the protocol will have to restart using a new oracle.
*/
uint256 public constant MAX_PRICE_CHANGE = 50 * 1e16;
/**
* @dev has the oracle been broken? If there was a large price change
* in the target price then the oracle breaks reverting and stopping
* the protocol.
*
* The only way for the protocol to continue operations is to use a new oracle
* and disregard this one.
*/
bool public broken;
/**
* @dev the trusted oracle providing the ETH/USD pricefeed
*/
IPriceFeed public immutable oracle;
/**
* @dev a dampening factor that dampens the appreciation of ARTH whenever ETH
* appreciates. This is ideally set at 10%;
*/
uint256 public constant DAMPENING_FACTOR = 10 * 1e18;
/**
* @dev track the historic prices captured from the oracle
*/
mapping(uint256 => uint256) public priceHistory;
/**
* @dev last known index of the priceHistory
*/
uint256 public lastPriceIndex;
uint256 internal _cummulativePrice30d;
uint256 internal _cummulativePrice7d;
uint256 internal _startPrice;
uint256 internal _endPrice;
uint256 internal _endPriceTime;
uint256 internal _startPriceTime;
uint256 internal _priceDiff;
uint256 internal _timeDiff;
constructor(
uint256 _startingPrice18,
address _oracle,
uint256[] memory _priceHistory30d
) Epoch(86400, block.timestamp, 0) {
_startPrice = _startingPrice18;
_endPrice = _startingPrice18;
_endPriceTime = block.timestamp;
_startPriceTime = block.timestamp;
for (uint256 index = 0; index < 30; index++) {
priceHistory[index] = _priceHistory30d[index];
_cummulativePrice30d += _priceHistory30d[index];
if (index >= 23) _cummulativePrice7d += _priceHistory30d[index];
}
lastPriceIndex = 30;
lastPrice30d = _cummulativePrice30d / 30;
lastPrice7d = _cummulativePrice7d / 7;
oracle = IPriceFeed(_oracle);
}
function fetchPrice() external override returns (uint256) {
require(!broken, "oracle is broken"); // failsafe check
if (_callable()) _updatePrice(); // update oracle if needed
return _fetchPriceAt(block.timestamp);
}
function fetchPriceAt(uint256 time) external returns (uint256) {
require(!broken, "oracle is broken"); // failsafe check
if (_callable()) _updatePrice(); // update oracle if needed
return _fetchPriceAt(time);
}
function fetchLastGoodPrice() external view returns (uint256) {
return _fetchPriceAt(block.timestamp);
}
function fetchLastGoodPriceAt(uint256 time)
external
view
returns (uint256)
{
return _fetchPriceAt(time);
}
function _fetchPriceAt(uint256 time) internal view returns (uint256) {
if (_startPriceTime >= time) return _startPrice;
if (_endPriceTime <= time) return _endPrice;
uint256 percentage = (time.sub(_startPriceTime)).mul(1e24).div(
_timeDiff
);
return _startPrice + _priceDiff.mul(percentage).div(1e24);
}
function _notifyNewPrice(uint256 newPrice, uint256 extraTime) internal {
require(extraTime > 0, "bad time");
_startPrice = _fetchPriceAt(block.timestamp);
require(newPrice > _startPrice, "bad price");
_endPrice = newPrice;
_endPriceTime = block.timestamp + extraTime;
_startPriceTime = block.timestamp;
_priceDiff = _endPrice.sub(_startPrice);
_timeDiff = _endPriceTime.sub(_startPriceTime);
}
function updatePrice() external {
_updatePrice();
}
function _updatePrice() internal checkEpoch {
// record the new price point
priceHistory[lastPriceIndex] = oracle.fetchPrice();
// update the 30d TWAP
_cummulativePrice30d =
_cummulativePrice30d +
priceHistory[lastPriceIndex] -
priceHistory[lastPriceIndex - 30];
// update the 7d TWAP
_cummulativePrice7d =
_cummulativePrice7d +
priceHistory[lastPriceIndex] -
priceHistory[lastPriceIndex - 7];
lastPriceIndex += 1;
// calculate the TWAP prices
uint256 price30d = _cummulativePrice30d / 30;
uint256 price7d = _cummulativePrice7d / 7;
// If we are going to change the price, check if both the 30d and 7d price are
// appreciating
if (price30d > lastPrice30d && price7d > lastPrice7d) {
// Calculate for appreciation using the 30d price feed
uint256 delta = price30d.sub(lastPrice30d);
// % of change in e18 from 0-1
uint256 priceChange18 = delta.mul(1e18).div(lastPrice30d);
if (priceChange18 > MAX_PRICE_CHANGE) {
// dont change the price and break the oracle
broken = true;
return;
}
// Appreciate the price by the same %. Since this is an addition; the price
// can only go up.
uint256 newPrice = _endPrice +
_endPrice
.mul(priceChange18)
.div(1e18)
.mul(DAMPENING_FACTOR)
.div(1e20);
_notifyNewPrice(newPrice, 86400);
emit LastGoodPriceUpdated(newPrice);
}
// Update the TWAP price trackers
lastPrice7d = price7d;
lastPrice30d = price30d;
}
function getDecimalPercision() external pure override returns (uint256) {
return 18;
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/math/SafeMath.sol)
pragma solidity ^0.8.0;
// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.
/**
* @dev Wrappers over Solidity's arithmetic operations.
*
* NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
* now has built in overflow checking.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
}
/**
* @dev Returns the substraction of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b > a) return (false, 0);
return (true, a - b);
}
}
/**
* @dev Returns the multiplication of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
}
/**
* @dev Returns the division of two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a / b);
}
}
/**
* @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
*
* _Available since v3.4._
*/
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a % b);
}
}
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
*
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
return a + b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return a - b;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
*
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
return a * b;
}
/**
* @dev Returns the integer division of two unsigned integers, reverting on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator.
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return a / b;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return a % b;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {trySub}.
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b <= a, errorMessage);
return a - b;
}
}
/**
* @dev Returns the integer division of two unsigned integers, reverting with custom message on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a / b;
}
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* reverting with custom message when dividing by zero.
*
* CAUTION: This function is deprecated because it requires allocating memory for the error
* message unnecessarily. For custom revert reasons use {tryMod}.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a % b;
}
}
}//SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.0;
pragma experimental ABIEncoderV2;
interface IPriceFeed {
// --- Events ---
event LastGoodPriceUpdated(uint256 _lastGoodPrice);
// --- Function ---
function fetchPrice() external returns (uint256);
function getDecimalPercision() external view returns (uint256);
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
import {SafeMath} from "@openzeppelin/contracts/utils/math/SafeMath.sol";
import {Operator} from "./Operator.sol";
import {IEpoch} from "../interfaces/IEpoch.sol";
contract Epoch is IEpoch, Operator {
using SafeMath for uint256;
uint256 private period;
uint256 private startTime;
uint256 private lastExecutedAt;
/* ========== CONSTRUCTOR ========== */
constructor(
uint256 _period,
uint256 _startTime,
uint256 _startEpoch
) {
require(_startTime >= block.timestamp, "Epoch: invalid start time");
period = _period;
startTime = _startTime;
lastExecutedAt = startTime.add(_startEpoch.mul(period));
}
/* ========== Modifier ========== */
modifier checkStartTime() {
require(block.timestamp >= startTime, "Epoch: not started yet");
_;
}
modifier checkEpoch() {
require(block.timestamp > startTime, "Epoch: not started yet");
require(_callable(), "Epoch: not allowed");
_;
emit EpochTriggered();
lastExecutedAt = block.timestamp;
}
function _getLastEpoch() internal view returns (uint256) {
return lastExecutedAt.sub(startTime).div(period);
}
function _getCurrentEpoch() internal view returns (uint256) {
return Math.max(startTime, block.timestamp).sub(startTime).div(period);
}
function callable() external view override returns (bool) {
return _callable();
}
function _callable() internal view returns (bool) {
return _getCurrentEpoch() >= _getNextEpoch();
}
function _getNextEpoch() internal view returns (uint256) {
if (startTime == lastExecutedAt) {
return _getLastEpoch();
}
return _getLastEpoch().add(1);
}
// epoch
function getLastEpoch() external view override returns (uint256) {
return _getLastEpoch();
}
function getCurrentEpoch() external view override returns (uint256) {
return Math.max(startTime, block.timestamp).sub(startTime).div(period);
}
function getNextEpoch() external view override returns (uint256) {
return _getNextEpoch();
}
function nextEpochPoint() external view override returns (uint256) {
return startTime.add(_getNextEpoch().mul(period));
}
// params
function getPeriod() external view override returns (uint256) {
return period;
}
function getStartTime() external view override returns (uint256) {
return startTime;
}
/* ========== GOVERNANCE ========== */
function setPeriod(uint256 _period) external onlyOperator {
period = _period;
}
}// 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(int p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(int)", p0));
}
function logUint(uint p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint)", 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(uint p0) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint)", 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(uint p0, uint p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint)", p0, p1));
}
function log(uint p0, string memory p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string)", p0, p1));
}
function log(uint p0, bool p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool)", p0, p1));
}
function log(uint p0, address p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address)", p0, p1));
}
function log(string memory p0, uint p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint)", 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, uint p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint)", 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, uint p1) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint)", 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(uint p0, uint p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint)", p0, p1, p2));
}
function log(uint p0, uint p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string)", p0, p1, p2));
}
function log(uint p0, uint p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool)", p0, p1, p2));
}
function log(uint p0, uint p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address)", p0, p1, p2));
}
function log(uint p0, string memory p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint)", p0, p1, p2));
}
function log(uint p0, string memory p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string)", p0, p1, p2));
}
function log(uint p0, string memory p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool)", p0, p1, p2));
}
function log(uint p0, string memory p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address)", p0, p1, p2));
}
function log(uint p0, bool p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint)", p0, p1, p2));
}
function log(uint p0, bool p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string)", p0, p1, p2));
}
function log(uint p0, bool p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool)", p0, p1, p2));
}
function log(uint p0, bool p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address)", p0, p1, p2));
}
function log(uint p0, address p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint)", p0, p1, p2));
}
function log(uint p0, address p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string)", p0, p1, p2));
}
function log(uint p0, address p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool)", p0, p1, p2));
}
function log(uint p0, address p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address)", p0, p1, p2));
}
function log(string memory p0, uint p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint)", p0, p1, p2));
}
function log(string memory p0, uint p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string)", p0, p1, p2));
}
function log(string memory p0, uint p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool)", p0, p1, p2));
}
function log(string memory p0, uint p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address)", p0, p1, p2));
}
function log(string memory p0, string memory p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint)", 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, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint)", 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, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint)", 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, uint p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint)", p0, p1, p2));
}
function log(bool p0, uint p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string)", p0, p1, p2));
}
function log(bool p0, uint p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool)", p0, p1, p2));
}
function log(bool p0, uint p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address)", p0, p1, p2));
}
function log(bool p0, string memory p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint)", 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, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint)", 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, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint)", 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, uint p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint)", p0, p1, p2));
}
function log(address p0, uint p1, string memory p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string)", p0, p1, p2));
}
function log(address p0, uint p1, bool p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool)", p0, p1, p2));
}
function log(address p0, uint p1, address p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address)", p0, p1, p2));
}
function log(address p0, string memory p1, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint)", 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, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint)", 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, uint p2) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint)", 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(uint p0, uint p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,uint)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,string)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,bool)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,address)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,uint)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,string)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,bool)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,address)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,uint)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,string)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,bool)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,address)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,uint)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,string)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,bool)", p0, p1, p2, p3));
}
function log(uint p0, uint p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,address)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,uint)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,string)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,bool)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,address)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,uint)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,string)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,bool)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,string,address)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,uint)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,string)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,bool)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,address)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,uint)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,string)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,bool)", p0, p1, p2, p3));
}
function log(uint p0, string memory p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,string,address,address)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,uint)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,string)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,bool)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,address)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,uint)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,string)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,bool)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,address)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,uint)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,string)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,bool)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,address)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,uint)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,string)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,bool)", p0, p1, p2, p3));
}
function log(uint p0, bool p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,address)", p0, p1, p2, p3));
}
function log(uint p0, address p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,uint)", p0, p1, p2, p3));
}
function log(uint p0, address p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,string)", p0, p1, p2, p3));
}
function log(uint p0, address p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,bool)", p0, p1, p2, p3));
}
function log(uint p0, address p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,address)", p0, p1, p2, p3));
}
function log(uint p0, address p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,uint)", p0, p1, p2, p3));
}
function log(uint p0, address p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,string)", p0, p1, p2, p3));
}
function log(uint p0, address p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,bool)", p0, p1, p2, p3));
}
function log(uint p0, address p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,string,address)", p0, p1, p2, p3));
}
function log(uint p0, address p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,uint)", p0, p1, p2, p3));
}
function log(uint p0, address p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,string)", p0, p1, p2, p3));
}
function log(uint p0, address p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,bool)", p0, p1, p2, p3));
}
function log(uint p0, address p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,address)", p0, p1, p2, p3));
}
function log(uint p0, address p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,uint)", p0, p1, p2, p3));
}
function log(uint p0, address p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,string)", p0, p1, p2, p3));
}
function log(uint p0, address p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,bool)", p0, p1, p2, p3));
}
function log(uint p0, address p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(uint,address,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,uint)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,uint)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,string,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,uint)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,address)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,uint)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,string)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,bool)", p0, p1, p2, p3));
}
function log(string memory p0, uint p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,uint,address,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,uint)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,string)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,bool)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,uint,address)", p0, p1, p2, p3));
}
function log(string memory p0, string memory p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,string,uint)", 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, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,bool,uint)", 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, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,string,address,uint)", 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, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,uint)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,string)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,bool)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,address)", p0, p1, p2, p3));
}
function log(string memory p0, bool p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,string,uint)", 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, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,uint)", 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, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,bool,address,uint)", 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, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,uint)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,string)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,bool)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,uint,address)", p0, p1, p2, p3));
}
function log(string memory p0, address p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,string,uint)", 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, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,bool,uint)", 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, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(string,address,address,uint)", 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, uint p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,uint)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,string)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,address)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,uint)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,string)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,address)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,uint)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,string)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,address)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,uint)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,string)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,bool)", p0, p1, p2, p3));
}
function log(bool p0, uint p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,uint)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,string)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,bool)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,address)", p0, p1, p2, p3));
}
function log(bool p0, string memory p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,string,uint)", 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, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,uint)", 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, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,string,address,uint)", 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, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,uint)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,string)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,bool)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,address)", p0, p1, p2, p3));
}
function log(bool p0, bool p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,uint)", 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, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,uint)", 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, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,uint)", 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, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,uint)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,string)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,bool)", p0, p1, p2, p3));
}
function log(bool p0, address p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,address)", p0, p1, p2, p3));
}
function log(bool p0, address p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,string,uint)", 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, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,uint)", 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, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(bool,address,address,uint)", 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, uint p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,uint)", p0, p1, p2, p3));
}
function log(address p0, uint p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,string)", p0, p1, p2, p3));
}
function log(address p0, uint p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,bool)", p0, p1, p2, p3));
}
function log(address p0, uint p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,address)", p0, p1, p2, p3));
}
function log(address p0, uint p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,uint)", p0, p1, p2, p3));
}
function log(address p0, uint p1, string memory p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,string)", p0, p1, p2, p3));
}
function log(address p0, uint p1, string memory p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,bool)", p0, p1, p2, p3));
}
function log(address p0, uint p1, string memory p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,string,address)", p0, p1, p2, p3));
}
function log(address p0, uint p1, bool p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,uint)", p0, p1, p2, p3));
}
function log(address p0, uint p1, bool p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,string)", p0, p1, p2, p3));
}
function log(address p0, uint p1, bool p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,bool)", p0, p1, p2, p3));
}
function log(address p0, uint p1, bool p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,address)", p0, p1, p2, p3));
}
function log(address p0, uint p1, address p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,uint)", p0, p1, p2, p3));
}
function log(address p0, uint p1, address p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,string)", p0, p1, p2, p3));
}
function log(address p0, uint p1, address p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,bool)", p0, p1, p2, p3));
}
function log(address p0, uint p1, address p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,uint,address,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,uint)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,string)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,bool)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,uint,address)", p0, p1, p2, p3));
}
function log(address p0, string memory p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,string,uint)", 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, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,bool,uint)", 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, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,string,address,uint)", 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, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,uint)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,string)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,bool)", p0, p1, p2, p3));
}
function log(address p0, bool p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,address)", p0, p1, p2, p3));
}
function log(address p0, bool p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,string,uint)", 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, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,uint)", 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, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,bool,address,uint)", 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, uint p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,uint)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint p2, string memory p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,string)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint p2, bool p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,bool)", p0, p1, p2, p3));
}
function log(address p0, address p1, uint p2, address p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,uint,address)", p0, p1, p2, p3));
}
function log(address p0, address p1, string memory p2, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,string,uint)", 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, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,bool,uint)", 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, uint p3) internal view {
_sendLogPayload(abi.encodeWithSignature("log(address,address,address,uint)", 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));
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (utils/math/Math.sol)
pragma solidity ^0.8.0;
/**
* @dev Standard math utilities missing in the Solidity language.
*/
library Math {
/**
* @dev Returns the largest of two numbers.
*/
function max(uint256 a, uint256 b) internal pure returns (uint256) {
return a >= b ? a : b;
}
/**
* @dev Returns the smallest of two numbers.
*/
function min(uint256 a, uint256 b) internal pure returns (uint256) {
return a < b ? a : b;
}
/**
* @dev Returns the average of two numbers. The result is rounded towards
* zero.
*/
function average(uint256 a, uint256 b) internal pure returns (uint256) {
// (a + b) / 2 can overflow.
return (a & b) + (a ^ b) / 2;
}
/**
* @dev Returns the ceiling of the division of two numbers.
*
* This differs from standard division with `/` in that it rounds up instead
* of rounding down.
*/
function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {
// (a + b - 1) / b can overflow on addition, so we distribute.
return a / b + (a % b == 0 ? 0 : 1);
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import { Context, Ownable } from "@openzeppelin/contracts/access/Ownable.sol";
abstract contract Operator is Context, Ownable {
address private _operator;
event OperatorTransferred(
address indexed previousOperator,
address indexed newOperator
);
constructor() {
_operator = _msgSender();
emit OperatorTransferred(address(0), _operator);
}
function operator() public view returns (address) {
return _operator;
}
modifier onlyOperator() {
require(_operator == _msgSender(), "operator: caller is not the operator");
_;
}
function isOperator() public view returns (bool) {
return _msgSender() == _operator;
}
function transferOperator(address newOperator_) public onlyOwner {
_transferOperator(newOperator_);
}
function _transferOperator(address newOperator_) internal {
require(
newOperator_ != address(0),
"operator: zero address given for new operator"
);
emit OperatorTransferred(address(0), newOperator_);
_operator = newOperator_;
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
interface IEpoch {
event EpochTriggered();
function callable() external view returns (bool);
function getLastEpoch() external view returns (uint256);
function getCurrentEpoch() external view returns (uint256);
function getNextEpoch() external view returns (uint256);
function nextEpochPoint() external view returns (uint256);
function getPeriod() external view returns (uint256);
function getStartTime() external view returns (uint256);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (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 Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_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 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;
}
}{
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"uint256","name":"_startingPrice18","type":"uint256"},{"internalType":"address","name":"_oracle","type":"address"},{"internalType":"uint256[]","name":"_priceHistory30d","type":"uint256[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[],"name":"EpochTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_lastGoodPrice","type":"uint256"}],"name":"LastGoodPriceUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOperator","type":"address"},{"indexed":true,"internalType":"address","name":"newOperator","type":"address"}],"name":"OperatorTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"DAMPENING_FACTOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PRICE_CHANGE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"broken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"callable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fetchLastGoodPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"fetchLastGoodPriceAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fetchPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"fetchPriceAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCurrentEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDecimalPercision","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getLastEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNextEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastPrice30d","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastPrice7d","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastPriceIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextEpochPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oracle","outputs":[{"internalType":"contract IPriceFeed","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"priceHistory","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"setPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOperator_","type":"address"}],"name":"transferOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updatePrice","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60a06040523480156200001157600080fd5b50604051620024923803806200249283398181016040528101906200003791906200055c565b620151804260006200005e620000526200039060201b60201c565b6200039860201b60201c565b6200006e6200039060201b60201c565b600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f74da04524d50c64947f5dd5381ef1a4dca5cba8ed1d816243f9e48aa0b5617ed60405160405180910390a34282101562000171576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200016890620005f2565b60405180910390fd5b8260028190555081600381905550620001b66200019f600254836200045c60201b62000ac31790919060201c565b6003546200047460201b62000ad91790919060201c565b60048190555050505082600c8190555082600d8190555042600e8190555042600f8190555060005b601e811015620003195781818151811062000222577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015160086000838152602001908152602001600020819055508181815181106200027b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151600a60008282546200029691906200067d565b92505081905550601781106200030357818181518110620002e0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151600b6000828254620002fb91906200067d565b925050819055505b80806200031090620007e7565b915050620001de565b50601e600981905550601e600a54620003339190620006da565b6006819055506007600b546200034a9190620006da565b6005819055508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505050505062000930565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081836200046c919062000712565b905092915050565b600081836200048491906200067d565b905092915050565b6000620004a36200049d846200063d565b62000614565b90508083825260208201905082856020860282011115620004c357600080fd5b60005b85811015620004f75781620004dc888262000545565b845260208401935060208301925050600181019050620004c6565b5050509392505050565b6000815190506200051281620008fc565b92915050565b600082601f8301126200052a57600080fd5b81516200053c8482602086016200048c565b91505092915050565b600081519050620005568162000916565b92915050565b6000806000606084860312156200057257600080fd5b6000620005828682870162000545565b9350506020620005958682870162000501565b925050604084015167ffffffffffffffff811115620005b357600080fd5b620005c18682870162000518565b9150509250925092565b6000620005da6019836200066c565b9150620005e782620008d3565b602082019050919050565b600060208201905081810360008301526200060d81620005cb565b9050919050565b60006200062062000633565b90506200062e8282620007b1565b919050565b6000604051905090565b600067ffffffffffffffff8211156200065b576200065a62000893565b5b602082029050602081019050919050565b600082825260208201905092915050565b60006200068a82620007a7565b91506200069783620007a7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620006cf57620006ce62000835565b5b828201905092915050565b6000620006e782620007a7565b9150620006f483620007a7565b92508262000707576200070662000864565b5b828204905092915050565b60006200071f82620007a7565b91506200072c83620007a7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000768576200076762000835565b5b828202905092915050565b6000620007808262000787565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b620007bc82620008c2565b810181811067ffffffffffffffff82111715620007de57620007dd62000893565b5b80604052505050565b6000620007f482620007a7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156200082a576200082962000835565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45706f63683a20696e76616c69642073746172742074696d6500000000000000600082015250565b620009078162000773565b81146200091357600080fd5b50565b6200092181620007a7565b81146200092d57600080fd5b50565b60805160601c611b3c62000956600039600081816108900152610b9d0152611b3c6000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80637dc0d1d0116100f9578063c5967c2611610097578063cbaf8dcf11610071578063cbaf8dcf14610491578063e8bc9965146104c1578063efe97d05146104df578063f2fde38b146104fd576101c4565b8063c5967c2614610437578063c7ade9ec14610455578063c828371e14610473576101c4565b80638da5cb5b116100d35780638da5cb5b146103ad578063a3c8f5d9146103cb578063b27a0484146103e9578063b97dd9e214610419576101c4565b80637dc0d1d0146103535780637fb1ad62146103715780638545b2c31461038f576101c4565b8063398bac6311610166578063673a7e2811610140578063673a7e281461030357806368ad8e031461030d5780636a2ab6021461032b578063715018a614610349576101c4565b8063398bac63146102a95780634456eda2146102c7578063570ca735146102e5576101c4565b80632084bf9f116101a25780632084bf9f1461022157806329605e771461023f5780632ada80bd1461025b5780632bcd51c61461028b576101c4565b80630f3a9f65146101c95780630fdb11cf146101e55780631ed2419514610203575b600080fd5b6101e360048036038101906101de91906113b0565b610519565b005b6101ed6105ba565b6040516101fa91906116ea565b60405180910390f35b61020b610630565b60405161021891906116ea565b60405180910390f35b61022961063a565b60405161023691906116ea565b60405180910390f35b61025960048036038101906102549190611387565b610646565b005b610275600480360381019061027091906113b0565b6106ce565b60405161028291906116ea565b60405180910390f35b610293610746565b6040516102a091906116ea565b60405180910390f35b6102b161074c565b6040516102be91906116ea565b60405180910390f35b6102cf61075b565b6040516102dc9190611594565b60405180910390f35b6102ed6107ba565b6040516102fa9190611579565b60405180910390f35b61030b6107e4565b005b6103156107ee565b60405161032291906116ea565b60405180910390f35b6103336107f7565b6040516103409190611594565b60405180910390f35b610351610806565b005b61035b61088e565b60405161036891906115af565b60405180910390f35b6103796108b2565b6040516103869190611594565b60405180910390f35b6103976108c5565b6040516103a491906116ea565b60405180910390f35b6103b56108cb565b6040516103c29190611579565b60405180910390f35b6103d36108f4565b6040516103e091906116ea565b60405180910390f35b61040360048036038101906103fe91906113b0565b610904565b60405161041091906116ea565b60405180910390f35b61042161091c565b60405161042e91906116ea565b60405180910390f35b61043f610957565b60405161044c91906116ea565b60405180910390f35b61045d61098e565b60405161046a91906116ea565b60405180910390f35b61047b610994565b60405161048891906116ea565b60405180910390f35b6104ab60048036038101906104a691906113b0565b61099e565b6040516104b891906116ea565b60405180910390f35b6104c96109b0565b6040516104d691906116ea565b60405180910390f35b6104e76109bc565b6040516104f491906116ea565b60405180910390f35b61051760048036038101906105129190611387565b6109cb565b005b610521610aef565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a79061168a565b60405180910390fd5b8060028190555050565b6000600760009054906101000a900460ff161561060c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106039061160a565b60405180910390fd5b610614610af7565b1561062257610621610b10565b5b61062b42610ed8565b905090565b6000600254905090565b6706f05b59d3b2000081565b61064e610aef565b73ffffffffffffffffffffffffffffffffffffffff1661066c6108cb565b73ffffffffffffffffffffffffffffffffffffffff16146106c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b99061166a565b60405180910390fd5b6106cb81610f90565b50565b6000600760009054906101000a900460ff1615610720576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107179061160a565b60405180910390fd5b610728610af7565b1561073657610735610b10565b5b61073f82610ed8565b9050919050565b60055481565b600061075661109f565b905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661079e610aef565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6107ec610b10565b565b60006012905090565b6000610801610af7565b905090565b61080e610aef565b73ffffffffffffffffffffffffffffffffffffffff1661082c6108cb565b73ffffffffffffffffffffffffffffffffffffffff1614610882576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108799061166a565b60405180910390fd5b61088c60006110d1565b565b7f000000000000000000000000000000000000000000000000000000000000000081565b600760009054906101000a900460ff1681565b60095481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006108ff42610ed8565b905090565b60086020528060005260406000206000915090505481565b600061095260025461094460035461093660035442611195565b6111af90919063ffffffff16565b6111c590919063ffffffff16565b905090565b600061098961097860025461096a6111db565b610ac390919063ffffffff16565b600354610ad990919063ffffffff16565b905090565b60065481565b6000600354905090565b60006109a982610ed8565b9050919050565b678ac7230489e8000081565b60006109c66111db565b905090565b6109d3610aef565b73ffffffffffffffffffffffffffffffffffffffff166109f16108cb565b73ffffffffffffffffffffffffffffffffffffffff1614610a47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3e9061166a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ab7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aae906115ea565b60405180910390fd5b610ac0816110d1565b50565b60008183610ad1919061179d565b905092915050565b60008183610ae79190611716565b905092915050565b600033905090565b6000610b016111db565b610b09611219565b1015905090565b6003544211610b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4b9061164a565b60405180910390fd5b610b5c610af7565b610b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b92906116aa565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630fdb11cf6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610c0357600080fd5b505af1158015610c17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3b91906113d9565b6008600060095481526020019081526020016000208190555060086000601e600954610c6791906117f7565b81526020019081526020016000205460086000600954815260200190815260200160002054600a54610c999190611716565b610ca391906117f7565b600a81905550600860006007600954610cbc91906117f7565b81526020019081526020016000205460086000600954815260200190815260200160002054600b54610cee9190611716565b610cf891906117f7565b600b81905550600160096000828254610d119190611716565b925050819055506000601e600a54610d29919061176c565b905060006007600b54610d3c919061176c565b905060065482118015610d50575060055481115b15610e92576000610d6c600654846111af90919063ffffffff16565b90506000610d9f600654610d91670de0b6b3a764000085610ac390919063ffffffff16565b6111c590919063ffffffff16565b90506706f05b59d3b20000811115610dd5576001600760006101000a81548160ff02191690831515021790555050505050610ea3565b6000610e3b68056bc75e2d63100000610e2d678ac7230489e80000610e1f670de0b6b3a7640000610e1188600d54610ac390919063ffffffff16565b6111c590919063ffffffff16565b610ac390919063ffffffff16565b6111c590919063ffffffff16565b600d54610e489190611716565b9050610e578162015180611254565b7f4d29de21de555af78a62fc82dd4bc05e9ae5b0660a37f04729527e0f22780cd381604051610e8691906116ea565b60405180910390a15050505b806005819055508160068190555050505b7f816e920c8556df6a9ccc92d1047473c56db4481fb54730162f952912cb06329a60405160405180910390a142600481905550565b600081600f5410610eed57600c549050610f8b565b81600e5411610f0057600d549050610f8b565b6000610f47601154610f3969d3c21bcecceda1000000610f2b600f54886111af90919063ffffffff16565b610ac390919063ffffffff16565b6111c590919063ffffffff16565b9050610f7a69d3c21bcecceda1000000610f6c83601054610ac390919063ffffffff16565b6111c590919063ffffffff16565b600c54610f879190611716565b9150505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611000576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff79061162a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f74da04524d50c64947f5dd5381ef1a4dca5cba8ed1d816243f9e48aa0b5617ed60405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006110cc6002546110be6003546004546111af90919063ffffffff16565b6111c590919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000818310156111a557816111a7565b825b905092915050565b600081836111bd91906117f7565b905092915050565b600081836111d3919061176c565b905092915050565b600060045460035414156111f8576111f161109f565b9050611216565b611213600161120561109f565b610ad990919063ffffffff16565b90505b90565b600061124f60025461124160035461123360035442611195565b6111af90919063ffffffff16565b6111c590919063ffffffff16565b905090565b60008111611297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128e906116ca565b60405180910390fd5b6112a042610ed8565b600c81905550600c5482116112ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e1906115ca565b60405180910390fd5b81600d8190555080426112fd9190611716565b600e8190555042600f81905550611321600c54600d546111af90919063ffffffff16565b60108190555061133e600f54600e546111af90919063ffffffff16565b6011819055505050565b60008135905061135781611ad8565b92915050565b60008135905061136c81611aef565b92915050565b60008151905061138181611aef565b92915050565b60006020828403121561139957600080fd5b60006113a784828501611348565b91505092915050565b6000602082840312156113c257600080fd5b60006113d08482850161135d565b91505092915050565b6000602082840312156113eb57600080fd5b60006113f984828501611372565b91505092915050565b61140b8161182b565b82525050565b61141a8161183d565b82525050565b61142981611873565b82525050565b600061143c600983611705565b9150611447826118f5565b602082019050919050565b600061145f602683611705565b915061146a8261191e565b604082019050919050565b6000611482601083611705565b915061148d8261196d565b602082019050919050565b60006114a5602d83611705565b91506114b082611996565b604082019050919050565b60006114c8601683611705565b91506114d3826119e5565b602082019050919050565b60006114eb602083611705565b91506114f682611a0e565b602082019050919050565b600061150e602483611705565b915061151982611a37565b604082019050919050565b6000611531601283611705565b915061153c82611a86565b602082019050919050565b6000611554600883611705565b915061155f82611aaf565b602082019050919050565b61157381611869565b82525050565b600060208201905061158e6000830184611402565b92915050565b60006020820190506115a96000830184611411565b92915050565b60006020820190506115c46000830184611420565b92915050565b600060208201905081810360008301526115e38161142f565b9050919050565b6000602082019050818103600083015261160381611452565b9050919050565b6000602082019050818103600083015261162381611475565b9050919050565b6000602082019050818103600083015261164381611498565b9050919050565b60006020820190508181036000830152611663816114bb565b9050919050565b60006020820190508181036000830152611683816114de565b9050919050565b600060208201905081810360008301526116a381611501565b9050919050565b600060208201905081810360008301526116c381611524565b9050919050565b600060208201905081810360008301526116e381611547565b9050919050565b60006020820190506116ff600083018461156a565b92915050565b600082825260208201905092915050565b600061172182611869565b915061172c83611869565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561176157611760611897565b5b828201905092915050565b600061177782611869565b915061178283611869565b925082611792576117916118c6565b5b828204905092915050565b60006117a882611869565b91506117b383611869565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156117ec576117eb611897565b5b828202905092915050565b600061180282611869565b915061180d83611869565b9250828210156118205761181f611897565b5b828203905092915050565b600061183682611849565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061187e82611885565b9050919050565b600061189082611849565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f6261642070726963650000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f6f7261636c652069732062726f6b656e00000000000000000000000000000000600082015250565b7f6f70657261746f723a207a65726f206164647265737320676976656e20666f7260008201527f206e6577206f70657261746f7200000000000000000000000000000000000000602082015250565b7f45706f63683a206e6f7420737461727465642079657400000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f6f70657261746f723a2063616c6c6572206973206e6f7420746865206f70657260008201527f61746f7200000000000000000000000000000000000000000000000000000000602082015250565b7f45706f63683a206e6f7420616c6c6f7765640000000000000000000000000000600082015250565b7f6261642074696d65000000000000000000000000000000000000000000000000600082015250565b611ae18161182b565b8114611aec57600080fd5b50565b611af881611869565b8114611b0357600080fd5b5056fea264697066735822122093bf91eb881e9fe8587a596111441eebfd6dbbca778f5f52057883346f6c28b164736f6c634300080400330000000000000000000000000000000000000000000000001bc16d674ec800000000000000000000000000004c517d4e2c851ca76d7ec94b805269df0f2201de0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000061d3940cece66a0000000000000000000000000000000000000000000000000061ea56803c7e0e0000000000000000000000000000000000000000000000000064d2770225368000000000000000000000000000000000000000000000000000624d024b90df150000000000000000000000000000000000000000000000000061235496367ef40000000000000000000000000000000000000000000000000060f8963a880ac0000000000000000000000000000000000000000000000000005a25831a8674d30000000000000000000000000000000000000000000000000053191f45669489000000000000000000000000000000000000000000000000004dc867b1e4517c00000000000000000000000000000000000000000000000000418ef6c2a45ee6000000000000000000000000000000000000000000000000004188db90f929ba0000000000000000000000000000000000000000000000000043162dc248f9290000000000000000000000000000000000000000000000000039ec6a90d828e2000000000000000000000000000000000000000000000000003aec2f1432b3550000000000000000000000000000000000000000000000000035f2106fa0d6b8000000000000000000000000000000000000000000000000003d2d7ff7cab395000000000000000000000000000000000000000000000000003d2979ae540ab8000000000000000000000000000000000000000000000000003d084eb1fdb5890000000000000000000000000000000000000000000000000038ee5060dadb7b000000000000000000000000000000000000000000000000003e0e0ae0110567000000000000000000000000000000000000000000000000004268914f90dd0600000000000000000000000000000000000000000000000000435883baf5a3870000000000000000000000000000000000000000000000000040eeacead62b230000000000000000000000000000000000000000000000000040a56696cfad13000000000000000000000000000000000000000000000000003e04e2159035a5000000000000000000000000000000000000000000000000003ba47b1dd66c85000000000000000000000000000000000000000000000000003a0f63677e2ade000000000000000000000000000000000000000000000000003972b5444f50b50000000000000000000000000000000000000000000000000039d7bd05bd1d8d000000000000000000000000000000000000000000000000003a3c5a32539b220000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101c45760003560e01c80637dc0d1d0116100f9578063c5967c2611610097578063cbaf8dcf11610071578063cbaf8dcf14610491578063e8bc9965146104c1578063efe97d05146104df578063f2fde38b146104fd576101c4565b8063c5967c2614610437578063c7ade9ec14610455578063c828371e14610473576101c4565b80638da5cb5b116100d35780638da5cb5b146103ad578063a3c8f5d9146103cb578063b27a0484146103e9578063b97dd9e214610419576101c4565b80637dc0d1d0146103535780637fb1ad62146103715780638545b2c31461038f576101c4565b8063398bac6311610166578063673a7e2811610140578063673a7e281461030357806368ad8e031461030d5780636a2ab6021461032b578063715018a614610349576101c4565b8063398bac63146102a95780634456eda2146102c7578063570ca735146102e5576101c4565b80632084bf9f116101a25780632084bf9f1461022157806329605e771461023f5780632ada80bd1461025b5780632bcd51c61461028b576101c4565b80630f3a9f65146101c95780630fdb11cf146101e55780631ed2419514610203575b600080fd5b6101e360048036038101906101de91906113b0565b610519565b005b6101ed6105ba565b6040516101fa91906116ea565b60405180910390f35b61020b610630565b60405161021891906116ea565b60405180910390f35b61022961063a565b60405161023691906116ea565b60405180910390f35b61025960048036038101906102549190611387565b610646565b005b610275600480360381019061027091906113b0565b6106ce565b60405161028291906116ea565b60405180910390f35b610293610746565b6040516102a091906116ea565b60405180910390f35b6102b161074c565b6040516102be91906116ea565b60405180910390f35b6102cf61075b565b6040516102dc9190611594565b60405180910390f35b6102ed6107ba565b6040516102fa9190611579565b60405180910390f35b61030b6107e4565b005b6103156107ee565b60405161032291906116ea565b60405180910390f35b6103336107f7565b6040516103409190611594565b60405180910390f35b610351610806565b005b61035b61088e565b60405161036891906115af565b60405180910390f35b6103796108b2565b6040516103869190611594565b60405180910390f35b6103976108c5565b6040516103a491906116ea565b60405180910390f35b6103b56108cb565b6040516103c29190611579565b60405180910390f35b6103d36108f4565b6040516103e091906116ea565b60405180910390f35b61040360048036038101906103fe91906113b0565b610904565b60405161041091906116ea565b60405180910390f35b61042161091c565b60405161042e91906116ea565b60405180910390f35b61043f610957565b60405161044c91906116ea565b60405180910390f35b61045d61098e565b60405161046a91906116ea565b60405180910390f35b61047b610994565b60405161048891906116ea565b60405180910390f35b6104ab60048036038101906104a691906113b0565b61099e565b6040516104b891906116ea565b60405180910390f35b6104c96109b0565b6040516104d691906116ea565b60405180910390f35b6104e76109bc565b6040516104f491906116ea565b60405180910390f35b61051760048036038101906105129190611387565b6109cb565b005b610521610aef565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105a79061168a565b60405180910390fd5b8060028190555050565b6000600760009054906101000a900460ff161561060c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106039061160a565b60405180910390fd5b610614610af7565b1561062257610621610b10565b5b61062b42610ed8565b905090565b6000600254905090565b6706f05b59d3b2000081565b61064e610aef565b73ffffffffffffffffffffffffffffffffffffffff1661066c6108cb565b73ffffffffffffffffffffffffffffffffffffffff16146106c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b99061166a565b60405180910390fd5b6106cb81610f90565b50565b6000600760009054906101000a900460ff1615610720576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107179061160a565b60405180910390fd5b610728610af7565b1561073657610735610b10565b5b61073f82610ed8565b9050919050565b60055481565b600061075661109f565b905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661079e610aef565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6107ec610b10565b565b60006012905090565b6000610801610af7565b905090565b61080e610aef565b73ffffffffffffffffffffffffffffffffffffffff1661082c6108cb565b73ffffffffffffffffffffffffffffffffffffffff1614610882576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108799061166a565b60405180910390fd5b61088c60006110d1565b565b7f0000000000000000000000004c517d4e2c851ca76d7ec94b805269df0f2201de81565b600760009054906101000a900460ff1681565b60095481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006108ff42610ed8565b905090565b60086020528060005260406000206000915090505481565b600061095260025461094460035461093660035442611195565b6111af90919063ffffffff16565b6111c590919063ffffffff16565b905090565b600061098961097860025461096a6111db565b610ac390919063ffffffff16565b600354610ad990919063ffffffff16565b905090565b60065481565b6000600354905090565b60006109a982610ed8565b9050919050565b678ac7230489e8000081565b60006109c66111db565b905090565b6109d3610aef565b73ffffffffffffffffffffffffffffffffffffffff166109f16108cb565b73ffffffffffffffffffffffffffffffffffffffff1614610a47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3e9061166a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ab7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aae906115ea565b60405180910390fd5b610ac0816110d1565b50565b60008183610ad1919061179d565b905092915050565b60008183610ae79190611716565b905092915050565b600033905090565b6000610b016111db565b610b09611219565b1015905090565b6003544211610b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4b9061164a565b60405180910390fd5b610b5c610af7565b610b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b92906116aa565b60405180910390fd5b7f0000000000000000000000004c517d4e2c851ca76d7ec94b805269df0f2201de73ffffffffffffffffffffffffffffffffffffffff16630fdb11cf6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610c0357600080fd5b505af1158015610c17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3b91906113d9565b6008600060095481526020019081526020016000208190555060086000601e600954610c6791906117f7565b81526020019081526020016000205460086000600954815260200190815260200160002054600a54610c999190611716565b610ca391906117f7565b600a81905550600860006007600954610cbc91906117f7565b81526020019081526020016000205460086000600954815260200190815260200160002054600b54610cee9190611716565b610cf891906117f7565b600b81905550600160096000828254610d119190611716565b925050819055506000601e600a54610d29919061176c565b905060006007600b54610d3c919061176c565b905060065482118015610d50575060055481115b15610e92576000610d6c600654846111af90919063ffffffff16565b90506000610d9f600654610d91670de0b6b3a764000085610ac390919063ffffffff16565b6111c590919063ffffffff16565b90506706f05b59d3b20000811115610dd5576001600760006101000a81548160ff02191690831515021790555050505050610ea3565b6000610e3b68056bc75e2d63100000610e2d678ac7230489e80000610e1f670de0b6b3a7640000610e1188600d54610ac390919063ffffffff16565b6111c590919063ffffffff16565b610ac390919063ffffffff16565b6111c590919063ffffffff16565b600d54610e489190611716565b9050610e578162015180611254565b7f4d29de21de555af78a62fc82dd4bc05e9ae5b0660a37f04729527e0f22780cd381604051610e8691906116ea565b60405180910390a15050505b806005819055508160068190555050505b7f816e920c8556df6a9ccc92d1047473c56db4481fb54730162f952912cb06329a60405160405180910390a142600481905550565b600081600f5410610eed57600c549050610f8b565b81600e5411610f0057600d549050610f8b565b6000610f47601154610f3969d3c21bcecceda1000000610f2b600f54886111af90919063ffffffff16565b610ac390919063ffffffff16565b6111c590919063ffffffff16565b9050610f7a69d3c21bcecceda1000000610f6c83601054610ac390919063ffffffff16565b6111c590919063ffffffff16565b600c54610f879190611716565b9150505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611000576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff79061162a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f74da04524d50c64947f5dd5381ef1a4dca5cba8ed1d816243f9e48aa0b5617ed60405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006110cc6002546110be6003546004546111af90919063ffffffff16565b6111c590919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000818310156111a557816111a7565b825b905092915050565b600081836111bd91906117f7565b905092915050565b600081836111d3919061176c565b905092915050565b600060045460035414156111f8576111f161109f565b9050611216565b611213600161120561109f565b610ad990919063ffffffff16565b90505b90565b600061124f60025461124160035461123360035442611195565b6111af90919063ffffffff16565b6111c590919063ffffffff16565b905090565b60008111611297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128e906116ca565b60405180910390fd5b6112a042610ed8565b600c81905550600c5482116112ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e1906115ca565b60405180910390fd5b81600d8190555080426112fd9190611716565b600e8190555042600f81905550611321600c54600d546111af90919063ffffffff16565b60108190555061133e600f54600e546111af90919063ffffffff16565b6011819055505050565b60008135905061135781611ad8565b92915050565b60008135905061136c81611aef565b92915050565b60008151905061138181611aef565b92915050565b60006020828403121561139957600080fd5b60006113a784828501611348565b91505092915050565b6000602082840312156113c257600080fd5b60006113d08482850161135d565b91505092915050565b6000602082840312156113eb57600080fd5b60006113f984828501611372565b91505092915050565b61140b8161182b565b82525050565b61141a8161183d565b82525050565b61142981611873565b82525050565b600061143c600983611705565b9150611447826118f5565b602082019050919050565b600061145f602683611705565b915061146a8261191e565b604082019050919050565b6000611482601083611705565b915061148d8261196d565b602082019050919050565b60006114a5602d83611705565b91506114b082611996565b604082019050919050565b60006114c8601683611705565b91506114d3826119e5565b602082019050919050565b60006114eb602083611705565b91506114f682611a0e565b602082019050919050565b600061150e602483611705565b915061151982611a37565b604082019050919050565b6000611531601283611705565b915061153c82611a86565b602082019050919050565b6000611554600883611705565b915061155f82611aaf565b602082019050919050565b61157381611869565b82525050565b600060208201905061158e6000830184611402565b92915050565b60006020820190506115a96000830184611411565b92915050565b60006020820190506115c46000830184611420565b92915050565b600060208201905081810360008301526115e38161142f565b9050919050565b6000602082019050818103600083015261160381611452565b9050919050565b6000602082019050818103600083015261162381611475565b9050919050565b6000602082019050818103600083015261164381611498565b9050919050565b60006020820190508181036000830152611663816114bb565b9050919050565b60006020820190508181036000830152611683816114de565b9050919050565b600060208201905081810360008301526116a381611501565b9050919050565b600060208201905081810360008301526116c381611524565b9050919050565b600060208201905081810360008301526116e381611547565b9050919050565b60006020820190506116ff600083018461156a565b92915050565b600082825260208201905092915050565b600061172182611869565b915061172c83611869565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561176157611760611897565b5b828201905092915050565b600061177782611869565b915061178283611869565b925082611792576117916118c6565b5b828204905092915050565b60006117a882611869565b91506117b383611869565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156117ec576117eb611897565b5b828202905092915050565b600061180282611869565b915061180d83611869565b9250828210156118205761181f611897565b5b828203905092915050565b600061183682611849565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061187e82611885565b9050919050565b600061189082611849565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f6261642070726963650000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f6f7261636c652069732062726f6b656e00000000000000000000000000000000600082015250565b7f6f70657261746f723a207a65726f206164647265737320676976656e20666f7260008201527f206e6577206f70657261746f7200000000000000000000000000000000000000602082015250565b7f45706f63683a206e6f7420737461727465642079657400000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f6f70657261746f723a2063616c6c6572206973206e6f7420746865206f70657260008201527f61746f7200000000000000000000000000000000000000000000000000000000602082015250565b7f45706f63683a206e6f7420616c6c6f7765640000000000000000000000000000600082015250565b7f6261642074696d65000000000000000000000000000000000000000000000000600082015250565b611ae18161182b565b8114611aec57600080fd5b50565b611af881611869565b8114611b0357600080fd5b5056fea264697066735822122093bf91eb881e9fe8587a596111441eebfd6dbbca778f5f52057883346f6c28b164736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000001bc16d674ec800000000000000000000000000004c517d4e2c851ca76d7ec94b805269df0f2201de0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000061d3940cece66a0000000000000000000000000000000000000000000000000061ea56803c7e0e0000000000000000000000000000000000000000000000000064d2770225368000000000000000000000000000000000000000000000000000624d024b90df150000000000000000000000000000000000000000000000000061235496367ef40000000000000000000000000000000000000000000000000060f8963a880ac0000000000000000000000000000000000000000000000000005a25831a8674d30000000000000000000000000000000000000000000000000053191f45669489000000000000000000000000000000000000000000000000004dc867b1e4517c00000000000000000000000000000000000000000000000000418ef6c2a45ee6000000000000000000000000000000000000000000000000004188db90f929ba0000000000000000000000000000000000000000000000000043162dc248f9290000000000000000000000000000000000000000000000000039ec6a90d828e2000000000000000000000000000000000000000000000000003aec2f1432b3550000000000000000000000000000000000000000000000000035f2106fa0d6b8000000000000000000000000000000000000000000000000003d2d7ff7cab395000000000000000000000000000000000000000000000000003d2979ae540ab8000000000000000000000000000000000000000000000000003d084eb1fdb5890000000000000000000000000000000000000000000000000038ee5060dadb7b000000000000000000000000000000000000000000000000003e0e0ae0110567000000000000000000000000000000000000000000000000004268914f90dd0600000000000000000000000000000000000000000000000000435883baf5a3870000000000000000000000000000000000000000000000000040eeacead62b230000000000000000000000000000000000000000000000000040a56696cfad13000000000000000000000000000000000000000000000000003e04e2159035a5000000000000000000000000000000000000000000000000003ba47b1dd66c85000000000000000000000000000000000000000000000000003a0f63677e2ade000000000000000000000000000000000000000000000000003972b5444f50b50000000000000000000000000000000000000000000000000039d7bd05bd1d8d000000000000000000000000000000000000000000000000003a3c5a32539b220000
-----Decoded View---------------
Arg [0] : _startingPrice18 (uint256): 2000000000000000000
Arg [1] : _oracle (address): 0x4c517D4e2C851CA76d7eC94B805269Df0f2201De
Arg [2] : _priceHistory30d (uint256[]): 1804580000000000000000,1806220000000000000000,1859840000000000000000,1813330000000000000000,1791880000000000000000,1788800000000000000000,1662910000000000000000,1532890000000000000000,1434840000000000000000,1209340000000000000000,1208900000000000000000,1237530000000000000000,1068500000000000000000,1086930000000000000000,995120000000000000000,1128530000000000000000,1128240000000000000000,1125850000000000000000,1050190000000000000000,1144710000000000000000,1225020000000000000000,1242310000000000000000,1197790000000000000000,1192510000000000000000,1144050000000000000000,1100210000000000000000,1071020000000000000000,1059730000000000000000,1067010000000000000000,1074260000000000000000
-----Encoded View---------------
34 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000001bc16d674ec80000
Arg [1] : 0000000000000000000000004c517d4e2c851ca76d7ec94b805269df0f2201de
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [3] : 000000000000000000000000000000000000000000000000000000000000001e
Arg [4] : 000000000000000000000000000000000000000000000061d3940cece66a0000
Arg [5] : 000000000000000000000000000000000000000000000061ea56803c7e0e0000
Arg [6] : 000000000000000000000000000000000000000000000064d277022536800000
Arg [7] : 0000000000000000000000000000000000000000000000624d024b90df150000
Arg [8] : 000000000000000000000000000000000000000000000061235496367ef40000
Arg [9] : 000000000000000000000000000000000000000000000060f8963a880ac00000
Arg [10] : 00000000000000000000000000000000000000000000005a25831a8674d30000
Arg [11] : 000000000000000000000000000000000000000000000053191f456694890000
Arg [12] : 00000000000000000000000000000000000000000000004dc867b1e4517c0000
Arg [13] : 0000000000000000000000000000000000000000000000418ef6c2a45ee60000
Arg [14] : 00000000000000000000000000000000000000000000004188db90f929ba0000
Arg [15] : 000000000000000000000000000000000000000000000043162dc248f9290000
Arg [16] : 000000000000000000000000000000000000000000000039ec6a90d828e20000
Arg [17] : 00000000000000000000000000000000000000000000003aec2f1432b3550000
Arg [18] : 000000000000000000000000000000000000000000000035f2106fa0d6b80000
Arg [19] : 00000000000000000000000000000000000000000000003d2d7ff7cab3950000
Arg [20] : 00000000000000000000000000000000000000000000003d2979ae540ab80000
Arg [21] : 00000000000000000000000000000000000000000000003d084eb1fdb5890000
Arg [22] : 000000000000000000000000000000000000000000000038ee5060dadb7b0000
Arg [23] : 00000000000000000000000000000000000000000000003e0e0ae01105670000
Arg [24] : 00000000000000000000000000000000000000000000004268914f90dd060000
Arg [25] : 0000000000000000000000000000000000000000000000435883baf5a3870000
Arg [26] : 000000000000000000000000000000000000000000000040eeacead62b230000
Arg [27] : 000000000000000000000000000000000000000000000040a56696cfad130000
Arg [28] : 00000000000000000000000000000000000000000000003e04e2159035a50000
Arg [29] : 00000000000000000000000000000000000000000000003ba47b1dd66c850000
Arg [30] : 00000000000000000000000000000000000000000000003a0f63677e2ade0000
Arg [31] : 00000000000000000000000000000000000000000000003972b5444f50b50000
Arg [32] : 000000000000000000000000000000000000000000000039d7bd05bd1d8d0000
Arg [33] : 00000000000000000000000000000000000000000000003a3c5a32539b220000
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.