ERC-20
Overview
Max Total Supply
363,063,855.881272295140421513 sGE
Holders
218
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
1,726,362.408685076494856365 sGEValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
GenesisAutoCompoundStaking
Compiler Version
v0.8.26+commit.8a97fa7a
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// Website: https://genesisdao.io/ // X: https://x.com/0xGenesisDAO // Discord: https://discord.gg/genesisdao // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; // & // (&&&&&&&&&&&&&&&&&&&&&&&&&&&* // &&&&&&&&&&&&&&&&&&&&&@,,@@@@&&&&&&&&&&& // &&&&&&&&&&&&&&&&&&&&&,,,,,,,,,*@@@&&&&&&&&&&&&& // &&&&&&&&&&&&&&&&&&&&,,,,,,,,,,,@@@@@@@&&&&&&&&&&&&&&& // &&&&&&&&&&&&&&&&&@,,,,,,,,,,,@@@@@@@@@@&&&&&&&&&&&&&&&&&&&& // &&&&&&&&&&&&&&@,,,,,,,,,,,*@@@@@@@@@@&&&&&&&&&@,,,,,#@@@@&&&&&& // &&&&&&&&&&&&#,,,,,,,,,,,@@@@@@@@@@@&&&&&&&&&*,,,,,,,,,,,,@@@@&&&&&& // &&&&&&&&&@..,,.,,,,,@@@@@@@@@@&&&&&&&&&&@,,,,,,,,,,,,,,,,,@@@@&&&&&&& // #&&&&&&&&&&@..,,,,,%@@@@@@@@&&&&&&&&&@,,,,,,,,,,,,@@,,,,,,,,@@@@&&&&&&&& // &&&&&&&&&&&&@..,,,,,&@@@@&&&&&&&&&..,,,,,,,,,,@@@@@@@@,,,,,,,@@@@&&&&&&&&&& // &&&&&&&&&&&&&@..,,,,,&@@@@&&&&&&&&@..,,,,,@@@@@@@@@@@@@,,,,,,,@@@@&&&&&&&&&&* // &&&&&&&&&&&&&@..,,,,,&@@@@&&&&&&&&@@@@@@@@@@@@@@&&&&&&@,,,,,,,@@@@&&&&&&&&&&& // &&&&&&&&&&&&&&@..,,,,@@@@@@&&&&&&&&&&&&@@@@@@&&&&&&&&&&@@,,,,,,@@@@&&&&&&&&&&&& // &&&&&&&&&&&&&&@@@@@@@@//*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,@@@@@@@@@@@@&&&&&&&&&&&& // &&&&&&&&&&&&&&&@@@/**,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*@@@@@@@@@&&&&&&&&&&&&& // &&&&&&&&&&&&&&&@.....,.,,@@@@@@@@@@@@@@@@@@@@@@@@@@&&%@@@@@@/*,,@@@@&&&&&&&&&&&& // &&&&&&&&&&&&&&@....,,,,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@/**,,,,@@@@&&&&&&&&&&&& // &&&&&&&&&&&&&&@....,,,,@@@@&&&&&&&&&&&&&&&&&&&&&&&&&&&&@,,,,,,,@@@@&&&&&&&&&&&& // &&&&&&&&&&&&&&@....,,,,@@@@&&&&&&&&&@,,,,,@@@@&&&&&&&&&@,,,,,,,@@@@&&&&&&&&&&&& // &&&&&&&&&&&&&@....,,,,@@@@&&&&&,,,,,,,,,,,,@@@@&&&&&&&@,,,,,,,@@@@&&&&&&&&&&& // &&&&&&&&&&&&&@....,,,,@@@@,,,,,,,,,,,,,,@@@@@@@&&&&&&&@,,,,,,,@@@@&&&&&&&&&&* // &&&&&&&&&&&&@....,,,,,,,,,,,,,,,,,@@@@@@@@@@@&&&&&&&&,,,,,,,,@@@@&&&&&&&&&& // /&&&&&&&&&&@....,,,,,,,,,,,@@@@@@@@@@@@&&&&&&&&@,,,,,,,,,,,,@@@@&&&&&&&& // &&&&&&&&&@@....,,,,,@@@@@@@@@@@@&&&&&&&&&,,,,,,,,,,,,,@@@@@@@@&&&&&&& // &&&&&&&&&@@@@@@@@@@@@@@@@&&&&&&&&&&@,,,,,,,,,,,,@@@@@@@@@@@&&&&&&&& // &&&&&&&&&&@@@@@@@@&&&&&&&&&&@,,,,,,,,,,,,@@@@@@@@@@@&&&&&&&&&&& // &&&&&&&&&&&&&&&&&&&&&&..,,,,,,,,,,(@@@@@@@@@@&&&&&&&&&&&&&& // &&&&&&&&&&&&&&&&&@...,,,,,,@@@@@@@@@@&&&&&&&&&&&&&&&& // &&&&&&&&&&&&&&@@@@@@@@@@@@@@@@&&&&&&&&&&&&&&&&& // &&&&&&&&&&&&@@@@@@@@@&&&&&&&&&&&&&&&&&& // *&&&&&&&&&&&&&&&&&&&&&&&&&&& import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "hardhat/console.sol"; interface IERC20MintableBurnable is IERC20 { function mint(address account, uint256 amount) external; function burn(uint256 amount) external; } contract GenesisAutoCompoundStaking is IERC20, Ownable { uint256 private constant MAX_UINT256 = type(uint256).max; uint256 private constant SCALE = 1e18; uint256 private constant ONE_YEAR = 365 days; uint256 private constant MAX_STAKE_TAX = 1500; // 15% uint256 private constant MAX_UNSTAKE_TAX = 1500; // 15% uint256 private constant PERCENTAGE_BASE = 10000; // 100% string public name = "sGE"; string public symbol = "sGE"; uint8 public decimals = 18; address public baseToken; address public liquidityPool; address public treasury; uint256 public fixedAPR = 50 ether; uint256 public dynamicAPRMinCap = 30 ether; uint256 public dynamicAPRMaxCap = 70 ether; uint256 public dynamicAPRConstant = 1 ether; uint256 public rebaseInterval = 8 hours; uint256 public stakeTax = 0; uint256 public unstakeTax = 750; uint256 public stakeStartTime; uint256 public lastRebaseTime; uint256 public totalGons; uint256 public totalSupplyTokens; uint256 public gonsPerFragment = 1e7; uint256 public initialMaxSupply; uint256 public maxSupply; uint256 public maxGons; uint256 public warmupPeriod; bool private _baseTokenSet = false; mapping(address => uint256) private _gonBalances; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => uint256) public stakeTimes; event Mint(address indexed wallet, uint256 amount, uint256 gonsAdded, uint256 gonsPerFragment, uint256 newTotalSupply); event Burn(address indexed wallet, uint256 amount, uint256 gonsRemoved, uint256 gonsPerFragment, uint256 newTotalSupply); event Stake(address indexed user, uint256 amount, uint256 taxAmount, uint256 mintedTokens); event Unstake(address indexed user, uint256 amount, uint256 taxAmount, uint256 returnedTokens); event Rebase( uint256 fixedAPR, uint256 dynamicAPR, uint256 rebaseAPR, uint256 lastRebaseTime, uint256 rebaseCount, uint256 maxSupply, uint256 supplyDelta, uint256 gonsPerFragment, uint256 currentSupply ); event BaseTokenSet(address indexed baseToken); event LiquidityPoolSet(address indexed liquidityPool); event APRParamsSet(uint256 fixedAPR, uint256 dynamicAPRMinCap, uint256 dynamicAPRMaxCap, uint256 dynamicAPRConstant); event RebaseIntervalSet(uint256 rebaseInterval); event StakeTaxSet(uint256 stakeTax); event UnstakeTaxSet(uint256 unstakeTax); event StakeStartTimeSet(uint256 stakeStartTime); event TreasurySet(address indexed treasury); constructor( address _baseToken, address _liquidityPool, address _treasury, uint256 _stakeStartTime ) Ownable(msg.sender) { baseToken = _baseToken; liquidityPool = _liquidityPool; treasury = _treasury; stakeStartTime = _stakeStartTime; maxSupply = IERC20MintableBurnable(baseToken).totalSupply() + 1 ether; initialMaxSupply = maxSupply; maxGons = MAX_UINT256 - (MAX_UINT256 % maxSupply); gonsPerFragment = maxGons / maxSupply; _mint(address(this), 1 ether); warmupPeriod = 60; emit BaseTokenSet(_baseToken); emit LiquidityPoolSet(_liquidityPool); emit TreasurySet(_treasury); emit StakeStartTimeSet(_stakeStartTime); } function setBaseToken(address _baseToken) external onlyOwner { require(_baseTokenSet == false, "Base token can only be set once, and is immutable afterwards"); baseToken = _baseToken; emit BaseTokenSet(_baseToken); } function setLiquidityPool(address _liquidityPool) external onlyOwner { liquidityPool = _liquidityPool; emit LiquidityPoolSet(_liquidityPool); } function setAprParameters( uint256 _fixedAPR, uint256 _dynamicAPRMinCap, uint256 _dynamicAPRMaxCap, uint256 _dynamicAPRConstant ) external onlyOwner { require(_dynamicAPRMinCap <= _dynamicAPRMaxCap, "Min cap higher than max cap"); fixedAPR = _fixedAPR; dynamicAPRMinCap = _dynamicAPRMinCap; dynamicAPRMaxCap = _dynamicAPRMaxCap; dynamicAPRConstant = _dynamicAPRConstant; emit APRParamsSet(_fixedAPR, _dynamicAPRMinCap, _dynamicAPRMaxCap, _dynamicAPRConstant); } function setRebaseInterval(uint256 _rebaseInterval) external onlyOwner { rebaseInterval = _rebaseInterval; emit RebaseIntervalSet(_rebaseInterval); } function setTreasury(address _treasury) external onlyOwner { treasury = _treasury; emit TreasurySet(_treasury); } function setStakeStartTime(uint256 _stakeStartTime) external onlyOwner { require(block.timestamp < stakeStartTime, "Staking already started"); stakeStartTime = _stakeStartTime; emit StakeStartTimeSet(_stakeStartTime); } function setWarmupPeriod(uint256 _warmupPeriod) external onlyOwner { require(_warmupPeriod >= 0, "Warmup period too low"); require(_warmupPeriod <= 1 days, "Warmup period too high"); warmupPeriod = _warmupPeriod; } function _mint(address account, uint256 amount) internal { require(account != address(0), "ERC20: mint to the zero address"); uint256 gonsToAdd = amount * gonsPerFragment; totalGons += gonsToAdd; totalSupplyTokens += amount; _gonBalances[account] += gonsToAdd; emit Mint(account, amount, gonsToAdd, gonsPerFragment, totalSupplyTokens); emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal { require(account != address(0), "ERC20: burn from the zero address"); uint256 gonsToRemove = amount * gonsPerFragment; totalGons -= gonsToRemove; totalSupplyTokens -= amount; _gonBalances[account] -= gonsToRemove; emit Burn(account, amount, gonsToRemove, gonsPerFragment, totalSupplyTokens); emit Transfer(account, address(0), amount); } function rebase() public { if (block.timestamp < stakeStartTime) return; uint256 timeToUse = lastRebaseTime > 0 ? lastRebaseTime : stakeStartTime; uint256 rebaseCount = (block.timestamp - timeToUse) / rebaseInterval; if (rebaseCount == 0) return; uint256 fixedApr = getFixedAPR(); uint256 dynamicApr = getDynamicAPR(); uint256 finalApr = fixedApr + dynamicApr; uint256 intervalsPerYear = ONE_YEAR / rebaseInterval; uint256 intervalAPR = finalApr / intervalsPerYear; uint256 supplyDelta = (maxSupply * intervalAPR * rebaseCount) / SCALE / 100; if (supplyDelta == 0) { lastRebaseTime = timeToUse + rebaseInterval * rebaseCount; return; } maxSupply += supplyDelta; gonsPerFragment = maxGons / maxSupply; totalSupplyTokens = totalGons / gonsPerFragment; lastRebaseTime = timeToUse + rebaseInterval * rebaseCount; emit Rebase( fixedApr, dynamicApr, intervalAPR, timeToUse, rebaseCount, maxSupply, supplyDelta, gonsPerFragment, totalSupplyTokens ); } function stake(uint256 amount) external { rebase(); require(IERC20(baseToken).transferFrom(msg.sender, address(this), amount), "Transfer failed"); uint256 taxAmount = (amount * stakeTax) / PERCENTAGE_BASE; uint256 netAmount = amount - taxAmount; IERC20MintableBurnable(baseToken).burn(netAmount); if (taxAmount > 0) { IERC20(baseToken).transfer(treasury, taxAmount); } _mint(msg.sender, netAmount); if (warmupPeriod > 0) { stakeTimes[msg.sender] = block.timestamp; } emit Stake(msg.sender, amount, taxAmount, netAmount); } function unstake(uint256 amount) external { require(block.timestamp - stakeTimes[msg.sender] >= warmupPeriod, "Warmup period not over"); rebase(); uint256 gonsToRemove = amount * gonsPerFragment; require(_gonBalances[msg.sender] >= gonsToRemove, "Insufficient balance"); _burn(msg.sender, amount); IERC20MintableBurnable(baseToken).mint(address(this), amount); uint256 taxAmount = (amount * unstakeTax) / PERCENTAGE_BASE; uint256 netAmount = amount - taxAmount; IERC20(baseToken).transfer(msg.sender, netAmount); if (taxAmount > 0) { IERC20(baseToken).transfer(treasury, taxAmount); } emit Unstake(msg.sender, amount, taxAmount, netAmount); } function _transfer(address sender, address recipient, uint256 amount) internal { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(_gonBalances[sender] >= amount * gonsPerFragment, "ERC20: transfer amount exceeds balance"); require(sender == address(0) || recipient != address(this), "ERC20: transfer to staking contract"); rebase(); uint256 taxAmount = ((0 + 0) * amount) / PERCENTAGE_BASE; uint256 netAmount = amount - taxAmount; uint256 gonsToTransfer = netAmount * gonsPerFragment; uint256 gonsTaxAmount = taxAmount * gonsPerFragment; _gonBalances[sender] -= (gonsToTransfer + gonsTaxAmount); _gonBalances[recipient] += gonsToTransfer; if (gonsTaxAmount > 0) { _gonBalances[treasury] += gonsTaxAmount; } emit Transfer(sender, recipient, netAmount); } function getFixedAPR() public view returns (uint256) { return fixedAPR; } function getDynamicAPR() public view returns (uint256) { uint256 totalStaked = totalSupplyTokens; uint256 lpBalance = IERC20(baseToken).balanceOf(liquidityPool); if (lpBalance <= 0) { revert("LP balance zero"); } if (dynamicAPRConstant <= 0) { revert("Dynamic APR constant zero"); } uint256 ratio = (totalStaked * SCALE) / lpBalance; if (ratio > 10 * SCALE) { ratio = 10 * SCALE; } uint256 scaledRatio = (ratio * dynamicAPRConstant) / SCALE; uint256 logInput = SCALE + scaledRatio; uint256 logValue = log10(logInput); uint256 apyValue = dynamicAPRMaxCap - ((dynamicAPRMaxCap - dynamicAPRMinCap) * logValue) / log10(dynamicAPRConstant * 10); if (apyValue < dynamicAPRMinCap) { apyValue = dynamicAPRMinCap; } return apyValue; } function getFinalAPR() public view returns (uint256) { return getFixedAPR() + getDynamicAPR(); } function log10(uint256 x) internal view returns (uint256) { if (x <= 0) { revert("Log zero"); } uint256 result = 0; while (x >= 10 * SCALE) { x /= 10; result += SCALE; } for (uint8 i = 0; i < 18; ++i) { x = (x * x) / SCALE; if (x >= 10 * SCALE) { x /= 10; result += SCALE / (2 ** (i + 1)); } } return result; } function balanceOf(address account) public view override returns (uint256) { return _gonBalances[account] / gonsPerFragment; } function totalSupply() public view override returns (uint256) { return totalSupplyTokens; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(msg.sender, spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { uint256 currentAllowance = _allowances[sender][msg.sender]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); _transfer(sender, recipient, amount); _approve(sender, msg.sender, currentAllowance - amount); return true; } function _approve(address owner, address spender, uint256 amount) internal { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function timeTillNextRebase() public view returns (uint256) { if (block.timestamp < stakeStartTime) { return stakeStartTime - block.timestamp; } return rebaseInterval - ((block.timestamp - stakeStartTime) % rebaseInterval); } function totalTokensAtNextRebase() public view returns (uint256) { uint256 fixedApr = getFixedAPR(); uint256 dynamicApr = getDynamicAPR(); uint256 finalApr = fixedApr + dynamicApr; uint256 timeToUse = lastRebaseTime > 0 ? lastRebaseTime : stakeStartTime; if (timeToUse > block.timestamp) return 0; uint256 rebaseCount = (block.timestamp - timeToUse) / rebaseInterval; if (rebaseCount == 0) rebaseCount = 1; uint256 intervalsPerYear = ONE_YEAR / rebaseInterval; uint256 intervalAPR = finalApr / intervalsPerYear; uint256 supplyDelta = (totalSupplyTokens * intervalAPR * rebaseCount) / SCALE / 100; return supplyDelta; } function tokensForAddressAtNextRebase(address account) public view returns (uint256) { uint256 supplyDelta = totalTokensAtNextRebase(); uint256 userBalance = balanceOf(account); uint256 userShare = (userBalance * SCALE) / totalSupplyTokens; return (supplyDelta * userShare) / SCALE / 100; } function tokensDeductedForUnstaking(uint256 amount) public view returns (uint256) { uint256 taxAmount = (amount * unstakeTax) / PERCENTAGE_BASE; return taxAmount; } function tokensDeductedForStaking(uint256 amount) public view returns (uint256) { uint256 taxAmount = (amount * stakeTax) / PERCENTAGE_BASE; return taxAmount; } function index() public view returns (uint256) { return balanceOf(address(this)); } function totalTokensRewarded() public view returns (uint256) { return maxSupply - initialMaxSupply; } function emergencyWithdraw(address token, address to, uint256 amount) external onlyOwner { require(token != address(this), "Cannot withdraw staking token"); IERC20(token).transfer(to, amount); } function emergencyEthWithdraw(address to, uint256 amount) external onlyOwner { payable(to).transfer(amount); } }
// SPDX-License-Identifier: MIT pragma solidity >=0.4.22 <0.9.0; library console { address constant CONSOLE_ADDRESS = 0x000000000000000000636F6e736F6c652e6c6f67; function _sendLogPayloadImplementation(bytes memory payload) internal view { address consoleAddress = CONSOLE_ADDRESS; /// @solidity memory-safe-assembly assembly { pop( staticcall( gas(), consoleAddress, add(payload, 32), mload(payload), 0, 0 ) ) } } function _castToPure( function(bytes memory) internal view fnIn ) internal pure returns (function(bytes memory) pure fnOut) { assembly { fnOut := fnIn } } function _sendLogPayload(bytes memory payload) internal pure { _castToPure(_sendLogPayloadImplementation)(payload); } function log() internal pure { _sendLogPayload(abi.encodeWithSignature("log()")); } function logInt(int256 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(int256)", p0)); } function logUint(uint256 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256)", p0)); } function logString(string memory p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string)", p0)); } function logBool(bool p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool)", p0)); } function logAddress(address p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address)", p0)); } function logBytes(bytes memory p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes)", p0)); } function logBytes1(bytes1 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes1)", p0)); } function logBytes2(bytes2 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes2)", p0)); } function logBytes3(bytes3 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes3)", p0)); } function logBytes4(bytes4 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes4)", p0)); } function logBytes5(bytes5 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes5)", p0)); } function logBytes6(bytes6 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes6)", p0)); } function logBytes7(bytes7 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes7)", p0)); } function logBytes8(bytes8 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes8)", p0)); } function logBytes9(bytes9 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes9)", p0)); } function logBytes10(bytes10 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes10)", p0)); } function logBytes11(bytes11 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes11)", p0)); } function logBytes12(bytes12 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes12)", p0)); } function logBytes13(bytes13 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes13)", p0)); } function logBytes14(bytes14 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes14)", p0)); } function logBytes15(bytes15 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes15)", p0)); } function logBytes16(bytes16 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes16)", p0)); } function logBytes17(bytes17 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes17)", p0)); } function logBytes18(bytes18 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes18)", p0)); } function logBytes19(bytes19 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes19)", p0)); } function logBytes20(bytes20 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes20)", p0)); } function logBytes21(bytes21 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes21)", p0)); } function logBytes22(bytes22 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes22)", p0)); } function logBytes23(bytes23 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes23)", p0)); } function logBytes24(bytes24 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes24)", p0)); } function logBytes25(bytes25 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes25)", p0)); } function logBytes26(bytes26 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes26)", p0)); } function logBytes27(bytes27 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes27)", p0)); } function logBytes28(bytes28 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes28)", p0)); } function logBytes29(bytes29 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes29)", p0)); } function logBytes30(bytes30 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes30)", p0)); } function logBytes31(bytes31 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes31)", p0)); } function logBytes32(bytes32 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes32)", p0)); } function log(uint256 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256)", p0)); } function log(string memory p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string)", p0)); } function log(bool p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool)", p0)); } function log(address p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address)", p0)); } function log(uint256 p0, uint256 p1) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256)", p0, p1)); } function log(uint256 p0, string memory p1) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,string)", p0, p1)); } function log(uint256 p0, bool p1) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool)", p0, p1)); } function log(uint256 p0, address p1) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,address)", p0, p1)); } function log(string memory p0, uint256 p1) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint256)", p0, p1)); } function log(string memory p0, string memory p1) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,string)", p0, p1)); } function log(string memory p0, bool p1) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool)", p0, p1)); } function log(string memory p0, address p1) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address)", p0, p1)); } function log(bool p0, uint256 p1) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256)", p0, p1)); } function log(bool p0, string memory p1) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string)", p0, p1)); } function log(bool p0, bool p1) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool)", p0, p1)); } function log(bool p0, address p1) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address)", p0, p1)); } function log(address p0, uint256 p1) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint256)", p0, p1)); } function log(address p0, string memory p1) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string)", p0, p1)); } function log(address p0, bool p1) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool)", p0, p1)); } function log(address p0, address p1) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address)", p0, p1)); } function log(uint256 p0, uint256 p1, uint256 p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256)", p0, p1, p2)); } function log(uint256 p0, uint256 p1, string memory p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string)", p0, p1, p2)); } function log(uint256 p0, uint256 p1, bool p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool)", p0, p1, p2)); } function log(uint256 p0, uint256 p1, address p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address)", p0, p1, p2)); } function log(uint256 p0, string memory p1, uint256 p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256)", p0, p1, p2)); } function log(uint256 p0, string memory p1, string memory p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string)", p0, p1, p2)); } function log(uint256 p0, string memory p1, bool p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool)", p0, p1, p2)); } function log(uint256 p0, string memory p1, address p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address)", p0, p1, p2)); } function log(uint256 p0, bool p1, uint256 p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256)", p0, p1, p2)); } function log(uint256 p0, bool p1, string memory p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string)", p0, p1, p2)); } function log(uint256 p0, bool p1, bool p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool)", p0, p1, p2)); } function log(uint256 p0, bool p1, address p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address)", p0, p1, p2)); } function log(uint256 p0, address p1, uint256 p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256)", p0, p1, p2)); } function log(uint256 p0, address p1, string memory p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string)", p0, p1, p2)); } function log(uint256 p0, address p1, bool p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool)", p0, p1, p2)); } function log(uint256 p0, address p1, address p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address)", p0, p1, p2)); } function log(string memory p0, uint256 p1, uint256 p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256)", p0, p1, p2)); } function log(string memory p0, uint256 p1, string memory p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string)", p0, p1, p2)); } function log(string memory p0, uint256 p1, bool p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool)", p0, p1, p2)); } function log(string memory p0, uint256 p1, address p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address)", p0, p1, p2)); } function log(string memory p0, string memory p1, uint256 p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256)", p0, p1, p2)); } function log(string memory p0, string memory p1, string memory p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,string,string)", p0, p1, p2)); } function log(string memory p0, string memory p1, bool p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,string,bool)", p0, p1, p2)); } function log(string memory p0, string memory p1, address p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,string,address)", p0, p1, p2)); } function log(string memory p0, bool p1, uint256 p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256)", p0, p1, p2)); } function log(string memory p0, bool p1, string memory p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,string)", p0, p1, p2)); } function log(string memory p0, bool p1, bool p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool)", p0, p1, p2)); } function log(string memory p0, bool p1, address p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address)", p0, p1, p2)); } function log(string memory p0, address p1, uint256 p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256)", p0, p1, p2)); } function log(string memory p0, address p1, string memory p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,string)", p0, p1, p2)); } function log(string memory p0, address p1, bool p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool)", p0, p1, p2)); } function log(string memory p0, address p1, address p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,address)", p0, p1, p2)); } function log(bool p0, uint256 p1, uint256 p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256)", p0, p1, p2)); } function log(bool p0, uint256 p1, string memory p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string)", p0, p1, p2)); } function log(bool p0, uint256 p1, bool p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool)", p0, p1, p2)); } function log(bool p0, uint256 p1, address p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address)", p0, p1, p2)); } function log(bool p0, string memory p1, uint256 p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256)", p0, p1, p2)); } function log(bool p0, string memory p1, string memory p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,string)", p0, p1, p2)); } function log(bool p0, string memory p1, bool p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool)", p0, p1, p2)); } function log(bool p0, string memory p1, address p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address)", p0, p1, p2)); } function log(bool p0, bool p1, uint256 p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256)", p0, p1, p2)); } function log(bool p0, bool p1, string memory p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string)", p0, p1, p2)); } function log(bool p0, bool p1, bool p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool)", p0, p1, p2)); } function log(bool p0, bool p1, address p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address)", p0, p1, p2)); } function log(bool p0, address p1, uint256 p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256)", p0, p1, p2)); } function log(bool p0, address p1, string memory p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string)", p0, p1, p2)); } function log(bool p0, address p1, bool p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool)", p0, p1, p2)); } function log(bool p0, address p1, address p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address)", p0, p1, p2)); } function log(address p0, uint256 p1, uint256 p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256)", p0, p1, p2)); } function log(address p0, uint256 p1, string memory p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string)", p0, p1, p2)); } function log(address p0, uint256 p1, bool p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool)", p0, p1, p2)); } function log(address p0, uint256 p1, address p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address)", p0, p1, p2)); } function log(address p0, string memory p1, uint256 p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256)", p0, p1, p2)); } function log(address p0, string memory p1, string memory p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,string)", p0, p1, p2)); } function log(address p0, string memory p1, bool p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool)", p0, p1, p2)); } function log(address p0, string memory p1, address p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,address)", p0, p1, p2)); } function log(address p0, bool p1, uint256 p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256)", p0, p1, p2)); } function log(address p0, bool p1, string memory p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string)", p0, p1, p2)); } function log(address p0, bool p1, bool p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool)", p0, p1, p2)); } function log(address p0, bool p1, address p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address)", p0, p1, p2)); } function log(address p0, address p1, uint256 p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256)", p0, p1, p2)); } function log(address p0, address p1, string memory p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,string)", p0, p1, p2)); } function log(address p0, address p1, bool p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool)", p0, p1, p2)); } function log(address p0, address p1, address p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,address)", p0, p1, p2)); } function log(uint256 p0, uint256 p1, uint256 p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, uint256 p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,string)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, uint256 p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,bool)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, uint256 p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,uint256,address)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, string memory p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, string memory p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,string)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, string memory p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,bool)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, string memory p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,string,address)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, bool p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, bool p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,string)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, bool p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,bool)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, bool p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,bool,address)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, address p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, address p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,string)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, address p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,bool)", p0, p1, p2, p3)); } function log(uint256 p0, uint256 p1, address p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,uint256,address,address)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, uint256 p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, uint256 p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,string)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, uint256 p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,bool)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, uint256 p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,uint256,address)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, string memory p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, string memory p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,string)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, string memory p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,bool)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, string memory p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,string,address)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, bool p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, bool p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,string)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, bool p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,bool)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, bool p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,bool,address)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, address p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, address p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,string)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, address p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,bool)", p0, p1, p2, p3)); } function log(uint256 p0, string memory p1, address p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,string,address,address)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, uint256 p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, uint256 p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,string)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, uint256 p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,bool)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, uint256 p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,uint256,address)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, string memory p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, string memory p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,string)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, string memory p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,bool)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, string memory p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,string,address)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, bool p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, bool p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,string)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, bool p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,bool)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, bool p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,bool,address)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, address p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, address p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,string)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, address p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,bool)", p0, p1, p2, p3)); } function log(uint256 p0, bool p1, address p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,bool,address,address)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, uint256 p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, uint256 p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,string)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, uint256 p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,bool)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, uint256 p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,uint256,address)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, string memory p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, string memory p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,string)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, string memory p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,bool)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, string memory p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,string,address)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, bool p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, bool p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,string)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, bool p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,bool)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, bool p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,bool,address)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, address p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,uint256)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, address p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,string)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, address p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,bool)", p0, p1, p2, p3)); } function log(uint256 p0, address p1, address p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint256,address,address,address)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, uint256 p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,uint256)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, uint256 p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,string)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, uint256 p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,bool)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, uint256 p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,uint256,address)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, string memory p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,uint256)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, string memory p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,string)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, string memory p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,bool)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, string memory p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,string,address)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, bool p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,uint256)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, bool p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,string)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, bool p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,bool)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, bool p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,bool,address)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, address p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,uint256)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, address p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,string)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, address p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,bool)", p0, p1, p2, p3)); } function log(string memory p0, uint256 p1, address p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint256,address,address)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, uint256 p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,uint256)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, uint256 p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,string)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, uint256 p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,bool)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, uint256 p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint256,address)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, string memory p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,string,string,uint256)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, string memory p2, string memory p3) internal pure { _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 pure { _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 pure { _sendLogPayload(abi.encodeWithSignature("log(string,string,string,address)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, bool p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,uint256)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, bool p2, string memory p3) internal pure { _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 pure { _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 pure { _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,address)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, address p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,string,address,uint256)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, address p2, string memory p3) internal pure { _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 pure { _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 pure { _sendLogPayload(abi.encodeWithSignature("log(string,string,address,address)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, uint256 p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,uint256)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, uint256 p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,string)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, uint256 p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,bool)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, uint256 p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint256,address)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, string memory p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,uint256)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, string memory p2, string memory p3) internal pure { _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 pure { _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 pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,address)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, bool p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,uint256)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, bool p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,string)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, bool p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,bool)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, bool p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,address)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, address p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,uint256)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, address p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,string)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, address p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,bool)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, address p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,address)", p0, p1, p2, p3)); } function log(string memory p0, address p1, uint256 p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,uint256)", p0, p1, p2, p3)); } function log(string memory p0, address p1, uint256 p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,string)", p0, p1, p2, p3)); } function log(string memory p0, address p1, uint256 p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,bool)", p0, p1, p2, p3)); } function log(string memory p0, address p1, uint256 p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint256,address)", p0, p1, p2, p3)); } function log(string memory p0, address p1, string memory p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,string,uint256)", p0, p1, p2, p3)); } function log(string memory p0, address p1, string memory p2, string memory p3) internal pure { _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 pure { _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 pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,string,address)", p0, p1, p2, p3)); } function log(string memory p0, address p1, bool p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,uint256)", p0, p1, p2, p3)); } function log(string memory p0, address p1, bool p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,string)", p0, p1, p2, p3)); } function log(string memory p0, address p1, bool p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,bool)", p0, p1, p2, p3)); } function log(string memory p0, address p1, bool p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,address)", p0, p1, p2, p3)); } function log(string memory p0, address p1, address p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,address,uint256)", p0, p1, p2, p3)); } function log(string memory p0, address p1, address p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,address,string)", p0, p1, p2, p3)); } function log(string memory p0, address p1, address p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,address,bool)", p0, p1, p2, p3)); } function log(string memory p0, address p1, address p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,address,address)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, uint256 p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,uint256)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, uint256 p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,string)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, uint256 p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,bool)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, uint256 p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,uint256,address)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, string memory p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,uint256)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, string memory p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,string)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, string memory p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,bool)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, string memory p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,string,address)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, bool p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,uint256)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, bool p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,string)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, bool p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,bool)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, bool p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,bool,address)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, address p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,uint256)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, address p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,string)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, address p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,bool)", p0, p1, p2, p3)); } function log(bool p0, uint256 p1, address p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint256,address,address)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, uint256 p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,uint256)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, uint256 p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,string)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, uint256 p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,bool)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, uint256 p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint256,address)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, string memory p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,uint256)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, string memory p2, string memory p3) internal pure { _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 pure { _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 pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,address)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, bool p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,uint256)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, bool p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,string)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, bool p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,bool)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, bool p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,address)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, address p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,uint256)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, address p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,string)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, address p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,bool)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, address p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,address)", p0, p1, p2, p3)); } function log(bool p0, bool p1, uint256 p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,uint256)", p0, p1, p2, p3)); } function log(bool p0, bool p1, uint256 p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,string)", p0, p1, p2, p3)); } function log(bool p0, bool p1, uint256 p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,bool)", p0, p1, p2, p3)); } function log(bool p0, bool p1, uint256 p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint256,address)", p0, p1, p2, p3)); } function log(bool p0, bool p1, string memory p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,uint256)", p0, p1, p2, p3)); } function log(bool p0, bool p1, string memory p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,string)", p0, p1, p2, p3)); } function log(bool p0, bool p1, string memory p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,bool)", p0, p1, p2, p3)); } function log(bool p0, bool p1, string memory p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,address)", p0, p1, p2, p3)); } function log(bool p0, bool p1, bool p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,uint256)", p0, p1, p2, p3)); } function log(bool p0, bool p1, bool p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,string)", p0, p1, p2, p3)); } function log(bool p0, bool p1, bool p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,bool)", p0, p1, p2, p3)); } function log(bool p0, bool p1, bool p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,address)", p0, p1, p2, p3)); } function log(bool p0, bool p1, address p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,uint256)", p0, p1, p2, p3)); } function log(bool p0, bool p1, address p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,string)", p0, p1, p2, p3)); } function log(bool p0, bool p1, address p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,bool)", p0, p1, p2, p3)); } function log(bool p0, bool p1, address p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,address)", p0, p1, p2, p3)); } function log(bool p0, address p1, uint256 p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,uint256)", p0, p1, p2, p3)); } function log(bool p0, address p1, uint256 p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,string)", p0, p1, p2, p3)); } function log(bool p0, address p1, uint256 p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,bool)", p0, p1, p2, p3)); } function log(bool p0, address p1, uint256 p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint256,address)", p0, p1, p2, p3)); } function log(bool p0, address p1, string memory p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,uint256)", p0, p1, p2, p3)); } function log(bool p0, address p1, string memory p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,string)", p0, p1, p2, p3)); } function log(bool p0, address p1, string memory p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,bool)", p0, p1, p2, p3)); } function log(bool p0, address p1, string memory p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,address)", p0, p1, p2, p3)); } function log(bool p0, address p1, bool p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,uint256)", p0, p1, p2, p3)); } function log(bool p0, address p1, bool p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,string)", p0, p1, p2, p3)); } function log(bool p0, address p1, bool p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,bool)", p0, p1, p2, p3)); } function log(bool p0, address p1, bool p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,address)", p0, p1, p2, p3)); } function log(bool p0, address p1, address p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,uint256)", p0, p1, p2, p3)); } function log(bool p0, address p1, address p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,string)", p0, p1, p2, p3)); } function log(bool p0, address p1, address p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,bool)", p0, p1, p2, p3)); } function log(bool p0, address p1, address p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,address)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, uint256 p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,uint256)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, uint256 p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,string)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, uint256 p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,bool)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, uint256 p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,uint256,address)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, string memory p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,uint256)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, string memory p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,string)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, string memory p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,bool)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, string memory p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,string,address)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, bool p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,uint256)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, bool p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,string)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, bool p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,bool)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, bool p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,bool,address)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, address p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,uint256)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, address p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,string)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, address p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,bool)", p0, p1, p2, p3)); } function log(address p0, uint256 p1, address p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint256,address,address)", p0, p1, p2, p3)); } function log(address p0, string memory p1, uint256 p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,uint256)", p0, p1, p2, p3)); } function log(address p0, string memory p1, uint256 p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,string)", p0, p1, p2, p3)); } function log(address p0, string memory p1, uint256 p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,bool)", p0, p1, p2, p3)); } function log(address p0, string memory p1, uint256 p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint256,address)", p0, p1, p2, p3)); } function log(address p0, string memory p1, string memory p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,string,uint256)", p0, p1, p2, p3)); } function log(address p0, string memory p1, string memory p2, string memory p3) internal pure { _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 pure { _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 pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,string,address)", p0, p1, p2, p3)); } function log(address p0, string memory p1, bool p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,uint256)", p0, p1, p2, p3)); } function log(address p0, string memory p1, bool p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,string)", p0, p1, p2, p3)); } function log(address p0, string memory p1, bool p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,bool)", p0, p1, p2, p3)); } function log(address p0, string memory p1, bool p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,address)", p0, p1, p2, p3)); } function log(address p0, string memory p1, address p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,address,uint256)", p0, p1, p2, p3)); } function log(address p0, string memory p1, address p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,address,string)", p0, p1, p2, p3)); } function log(address p0, string memory p1, address p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,address,bool)", p0, p1, p2, p3)); } function log(address p0, string memory p1, address p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,address,address)", p0, p1, p2, p3)); } function log(address p0, bool p1, uint256 p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,uint256)", p0, p1, p2, p3)); } function log(address p0, bool p1, uint256 p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,string)", p0, p1, p2, p3)); } function log(address p0, bool p1, uint256 p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,bool)", p0, p1, p2, p3)); } function log(address p0, bool p1, uint256 p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint256,address)", p0, p1, p2, p3)); } function log(address p0, bool p1, string memory p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,uint256)", p0, p1, p2, p3)); } function log(address p0, bool p1, string memory p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,string)", p0, p1, p2, p3)); } function log(address p0, bool p1, string memory p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,bool)", p0, p1, p2, p3)); } function log(address p0, bool p1, string memory p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,address)", p0, p1, p2, p3)); } function log(address p0, bool p1, bool p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,uint256)", p0, p1, p2, p3)); } function log(address p0, bool p1, bool p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,string)", p0, p1, p2, p3)); } function log(address p0, bool p1, bool p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,bool)", p0, p1, p2, p3)); } function log(address p0, bool p1, bool p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,address)", p0, p1, p2, p3)); } function log(address p0, bool p1, address p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,uint256)", p0, p1, p2, p3)); } function log(address p0, bool p1, address p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,string)", p0, p1, p2, p3)); } function log(address p0, bool p1, address p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,bool)", p0, p1, p2, p3)); } function log(address p0, bool p1, address p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,address)", p0, p1, p2, p3)); } function log(address p0, address p1, uint256 p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,uint256)", p0, p1, p2, p3)); } function log(address p0, address p1, uint256 p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,string)", p0, p1, p2, p3)); } function log(address p0, address p1, uint256 p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,bool)", p0, p1, p2, p3)); } function log(address p0, address p1, uint256 p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint256,address)", p0, p1, p2, p3)); } function log(address p0, address p1, string memory p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,string,uint256)", p0, p1, p2, p3)); } function log(address p0, address p1, string memory p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,string,string)", p0, p1, p2, p3)); } function log(address p0, address p1, string memory p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,string,bool)", p0, p1, p2, p3)); } function log(address p0, address p1, string memory p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,string,address)", p0, p1, p2, p3)); } function log(address p0, address p1, bool p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,uint256)", p0, p1, p2, p3)); } function log(address p0, address p1, bool p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,string)", p0, p1, p2, p3)); } function log(address p0, address p1, bool p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,bool)", p0, p1, p2, p3)); } function log(address p0, address p1, bool p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,address)", p0, p1, p2, p3)); } function log(address p0, address p1, address p2, uint256 p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,address,uint256)", p0, p1, p2, p3)); } function log(address p0, address p1, address p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,address,string)", p0, p1, p2, p3)); } function log(address p0, address p1, address p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,address,bool)", p0, p1, p2, p3)); } function log(address p0, address p1, address p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,address,address)", p0, p1, p2, p3)); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.20; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the value of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the value of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves a `value` amount of tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 value) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets a `value` amount of tokens as the allowance of `spender` over the * caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 value) external returns (bool); /** * @dev Moves a `value` amount of tokens from `from` to `to` using the * allowance mechanism. `value` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 value) external returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity ^0.8.20; import {Context} from "../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. * * The initial owner is set to the address provided by the deployer. 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; /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the address provided by the deployer as the initial owner. */ constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling 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 { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; /** * @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; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_baseToken","type":"address"},{"internalType":"address","name":"_liquidityPool","type":"address"},{"internalType":"address","name":"_treasury","type":"address"},{"internalType":"uint256","name":"_stakeStartTime","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"fixedAPR","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"dynamicAPRMinCap","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"dynamicAPRMaxCap","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"dynamicAPRConstant","type":"uint256"}],"name":"APRParamsSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"baseToken","type":"address"}],"name":"BaseTokenSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"wallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"gonsRemoved","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"gonsPerFragment","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalSupply","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"liquidityPool","type":"address"}],"name":"LiquidityPoolSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"wallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"gonsAdded","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"gonsPerFragment","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalSupply","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"fixedAPR","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"dynamicAPR","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rebaseAPR","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lastRebaseTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rebaseCount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxSupply","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"supplyDelta","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"gonsPerFragment","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"currentSupply","type":"uint256"}],"name":"Rebase","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"rebaseInterval","type":"uint256"}],"name":"RebaseIntervalSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"taxAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mintedTokens","type":"uint256"}],"name":"Stake","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"stakeStartTime","type":"uint256"}],"name":"StakeStartTimeSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"stakeTax","type":"uint256"}],"name":"StakeTaxSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"treasury","type":"address"}],"name":"TreasurySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"taxAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"returnedTokens","type":"uint256"}],"name":"Unstake","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"unstakeTax","type":"uint256"}],"name":"UnstakeTaxSet","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dynamicAPRConstant","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dynamicAPRMaxCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dynamicAPRMinCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"emergencyEthWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fixedAPR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDynamicAPR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFinalAPR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFixedAPR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gonsPerFragment","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"index","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialMaxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRebaseTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxGons","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rebase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rebaseInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fixedAPR","type":"uint256"},{"internalType":"uint256","name":"_dynamicAPRMinCap","type":"uint256"},{"internalType":"uint256","name":"_dynamicAPRMaxCap","type":"uint256"},{"internalType":"uint256","name":"_dynamicAPRConstant","type":"uint256"}],"name":"setAprParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_baseToken","type":"address"}],"name":"setBaseToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_liquidityPool","type":"address"}],"name":"setLiquidityPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rebaseInterval","type":"uint256"}],"name":"setRebaseInterval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_stakeStartTime","type":"uint256"}],"name":"setStakeStartTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasury","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_warmupPeriod","type":"uint256"}],"name":"setWarmupPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakeStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakeTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakeTimes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeTillNextRebase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"tokensDeductedForStaking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"tokensDeductedForUnstaking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"tokensForAddressAtNextRebase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalGons","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupplyTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokensAtNextRebase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokensRewarded","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unstakeTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"warmupPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60806040526040518060400160405280600381526020017f7347450000000000000000000000000000000000000000000000000000000000815250600190816100489190610990565b506040518060400160405280600381526020017f73474500000000000000000000000000000000000000000000000000000000008152506002908161008d9190610990565b50601260035f6101000a81548160ff021916908360ff1602179055506802b5e3af16b18800006006556801a055690d9db800006007556803cb71f51fc5580000600855670de0b6b3a7640000600955617080600a555f600b556102ee600c55629896806011555f60165f6101000a81548160ff021916908315150217905550348015610117575f80fd5b50604051614db2380380614db283398181016040528101906101399190610ae7565b335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036101aa575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016101a19190610b5a565b60405180910390fd5b6101b9816104d160201b60201c565b5083600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600d81905550670de0b6b3a7640000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102f6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061031a9190610b73565b6103249190610bcb565b6013819055506013546012819055506013547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6103619190610c2b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61038c9190610c5b565b6014819055506013546014546103a29190610c8e565b6011819055506103c030670de0b6b3a764000061059260201b60201c565b603c6015819055508373ffffffffffffffffffffffffffffffffffffffff167f9ee7d7a42466d19669fb88ad7a5b03861d6abd7d2a681c83dd982207cfaeb37060405160405180910390a28273ffffffffffffffffffffffffffffffffffffffff167fe57f71636571365571c0eaeaeb54e1d9e0065804f056a57a2a29448524f7d18a60405160405180910390a28173ffffffffffffffffffffffffffffffffffffffff167f3c864541ef71378c6229510ed90f376565ee42d9c5e0904a984a9e863e6db44f60405160405180910390a27fd1c4f5d3748426e79e1bbf9eef6e637b3b173e57084ada1e37330d9a31e06f75816040516104c09190610ccd565b60405180910390a150505050610de2565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f790610d40565b60405180910390fd5b5f6011548261060f9190610d5e565b905080600f5f8282546106229190610bcb565b925050819055508160105f82825461063a9190610bcb565b925050819055508060175f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461068d9190610bcb565b925050819055508273ffffffffffffffffffffffffffffffffffffffff167f94c792774c59479f7bd68442f3af3691c02123a5aabee8b6f9116d8af8aa666983836011546010546040516106e49493929190610d9f565b60405180910390a28273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107499190610ccd565b60405180910390a3505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806107d157607f821691505b6020821081036107e4576107e361078d565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026108467fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261080b565b610850868361080b565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61089461088f61088a84610868565b610871565b610868565b9050919050565b5f819050919050565b6108ad8361087a565b6108c16108b98261089b565b848454610817565b825550505050565b5f90565b6108d56108c9565b6108e08184846108a4565b505050565b5b81811015610903576108f85f826108cd565b6001810190506108e6565b5050565b601f82111561094857610919816107ea565b610922846107fc565b81016020851015610931578190505b61094561093d856107fc565b8301826108e5565b50505b505050565b5f82821c905092915050565b5f6109685f198460080261094d565b1980831691505092915050565b5f6109808383610959565b9150826002028217905092915050565b61099982610756565b67ffffffffffffffff8111156109b2576109b1610760565b5b6109bc82546107ba565b6109c7828285610907565b5f60209050601f8311600181146109f8575f84156109e6578287015190505b6109f08582610975565b865550610a57565b601f198416610a06866107ea565b5f5b82811015610a2d57848901518255600182019150602085019450602081019050610a08565b86831015610a4a5784890151610a46601f891682610959565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610a8c82610a63565b9050919050565b610a9c81610a82565b8114610aa6575f80fd5b50565b5f81519050610ab781610a93565b92915050565b610ac681610868565b8114610ad0575f80fd5b50565b5f81519050610ae181610abd565b92915050565b5f805f8060808587031215610aff57610afe610a5f565b5b5f610b0c87828801610aa9565b9450506020610b1d87828801610aa9565b9350506040610b2e87828801610aa9565b9250506060610b3f87828801610ad3565b91505092959194509250565b610b5481610a82565b82525050565b5f602082019050610b6d5f830184610b4b565b92915050565b5f60208284031215610b8857610b87610a5f565b5b5f610b9584828501610ad3565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610bd582610868565b9150610be083610868565b9250828201905080821115610bf857610bf7610b9e565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610c3582610868565b9150610c4083610868565b925082610c5057610c4f610bfe565b5b828206905092915050565b5f610c6582610868565b9150610c7083610868565b9250828203905081811115610c8857610c87610b9e565b5b92915050565b5f610c9882610868565b9150610ca383610868565b925082610cb357610cb2610bfe565b5b828204905092915050565b610cc781610868565b82525050565b5f602082019050610ce05f830184610cbe565b92915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f610d2a601f83610ce6565b9150610d3582610cf6565b602082019050919050565b5f6020820190508181035f830152610d5781610d1e565b9050919050565b5f610d6882610868565b9150610d7383610868565b9250828202610d8181610868565b91508282048414831517610d9857610d97610b9e565b5b5092915050565b5f608082019050610db25f830187610cbe565b610dbf6020830186610cbe565b610dcc6040830185610cbe565b610dd96060830184610cbe565b95945050505050565b613fc380610def5f395ff3fe608060405234801561000f575f80fd5b5060043610610340575f3560e01c80637419f190116101b6578063c4968c9a11610102578063dd62ed3e116100a0578063ecdd98be1161007a578063ecdd98be14610988578063ef037fb9146109a6578063f0f44260146109c2578063f2fde38b146109de57610340565b8063dd62ed3e1461091e578063deac361a1461094e578063e63ea4081461096c57610340565b8063cca1ef6e116100dc578063cca1ef6e14610896578063d5abeb01146108c6578063d5e1fc1f146108e4578063d9565b031461090057610340565b8063c4968c9a1461083e578063c55dae631461085c578063cc1b63d51461087a57610340565b806395d89b411161016f578063a85667c511610149578063a85667c5146107ca578063a9059cbb146107e6578063af14052c14610816578063be8edf5c1461082057610340565b806395d89b4114610760578063a4168bcf1461077e578063a694fc3a146107ae57610340565b80637419f190146106ae5780637ed8f653146106cc57806383e373b0146106ea57806389edeb74146107085780638bd1d033146107265780638da5cb5b1461074257610340565b80632e187a681161029057806351d4a5801161022e578063663dcdbc11610208578063663dcdbc14610638578063665a11ca1461065657806370a0823114610674578063715018a6146106a457610340565b806351d4a580146105de578063529bed7f146105fc57806361d027b31461061a57610340565b80634508a6cc1161026a5780634508a6cc1461055457806345885bfe146105845780634a7c4d18146105a25780634befa981146105c057610340565b80632e187a68146104fa57806330643c4114610518578063313ce5671461053657610340565b806316bb6c13116102fd5780631ad25ffb116102d75780631ad25ffb1461046057806323b872dd146104905780632986c0e5146104c05780632e17de78146104de57610340565b806316bb6c131461040857806318160ddd146104245780631924063e1461044257610340565b8063018770201461034457806306fdde0314610360578063095ea7b31461037e57806309bc773f146103ae5780630f336d48146103cc578063118ab4e1146103ea575b5f80fd5b61035e60048036038101906103599190612d51565b6109fa565b005b610368610a88565b6040516103759190612dec565b60405180910390f35b61039860048036038101906103939190612e3f565b610b14565b6040516103a59190612e97565b60405180910390f35b6103b6610b2a565b6040516103c39190612ebf565b60405180910390f35b6103d4610b30565b6040516103e19190612ebf565b60405180910390f35b6103f2610d81565b6040516103ff9190612ebf565b60405180910390f35b610422600480360381019061041d9190612d51565b610d87565b005b61042c610e6a565b6040516104399190612ebf565b60405180910390f35b61044a610e73565b6040516104579190612ebf565b60405180910390f35b61047a60048036038101906104759190612d51565b610e79565b6040516104879190612ebf565b60405180910390f35b6104aa60048036038101906104a59190612ed8565b610e8e565b6040516104b79190612e97565b60405180910390f35b6104c8610f7b565b6040516104d59190612ebf565b60405180910390f35b6104f860048036038101906104f39190612f28565b610f8a565b005b61050261132f565b60405161050f9190612ebf565b60405180910390f35b610520611335565b60405161052d9190612ebf565b60405180910390f35b61053e61133b565b60405161054b9190612f6e565b60405180910390f35b61056e60048036038101906105699190612f28565b61134d565b60405161057b9190612ebf565b60405180910390f35b61058c611375565b6040516105999190612ebf565b60405180910390f35b6105aa61137e565b6040516105b79190612ebf565b60405180910390f35b6105c8611384565b6040516105d59190612ebf565b60405180910390f35b6105e66113a4565b6040516105f39190612ebf565b60405180910390f35b6106046113aa565b6040516106119190612ebf565b60405180910390f35b6106226113f8565b60405161062f9190612f96565b60405180910390f35b61064061141d565b60405161064d9190612ebf565b60405180910390f35b61065e611433565b60405161066b9190612f96565b60405180910390f35b61068e60048036038101906106899190612d51565b611458565b60405161069b9190612ebf565b60405180910390f35b6106ac6114ab565b005b6106b66114be565b6040516106c39190612ebf565b60405180910390f35b6106d46114c4565b6040516106e19190612ebf565b60405180910390f35b6106f26114ca565b6040516106ff9190612ebf565b60405180910390f35b6107106114d0565b60405161071d9190612ebf565b60405180910390f35b610740600480360381019061073b9190612faf565b6114d6565b005b61074a611580565b6040516107579190612f96565b60405180910390f35b6107686115a7565b6040516107759190612dec565b60405180910390f35b61079860048036038101906107939190612f28565b611633565b6040516107a59190612ebf565b60405180910390f35b6107c860048036038101906107c39190612f28565b61165b565b005b6107e460048036038101906107df9190612f28565b61196c565b005b61080060048036038101906107fb9190612e3f565b611a07565b60405161080d9190612e97565b60405180910390f35b61081e611a1d565b005b610828611bda565b6040516108359190612ebf565b60405180910390f35b610846611cc2565b6040516108539190612ebf565b60405180910390f35b610864611cc8565b6040516108719190612f96565b60405180910390f35b610894600480360381019061088f9190612f28565b611cee565b005b6108b060048036038101906108ab9190612d51565b611d7b565b6040516108bd9190612ebf565b60405180910390f35b6108ce611dec565b6040516108db9190612ebf565b60405180910390f35b6108fe60048036038101906108f99190612e3f565b611df2565b005b610908611e42565b6040516109159190612ebf565b60405180910390f35b61093860048036038101906109339190613013565b611e48565b6040516109459190612ebf565b60405180910390f35b610956611eca565b6040516109639190612ebf565b60405180910390f35b61098660048036038101906109819190612ed8565b611ed0565b005b610990611fc7565b60405161099d9190612ebf565b60405180910390f35b6109c060048036038101906109bb9190612f28565b611fcd565b005b6109dc60048036038101906109d79190612d51565b612016565b005b6109f860048036038101906109f39190612d51565b6120a4565b005b610a02612128565b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fe57f71636571365571c0eaeaeb54e1d9e0065804f056a57a2a29448524f7d18a60405160405180910390a250565b60018054610a959061307e565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac19061307e565b8015610b0c5780601f10610ae357610100808354040283529160200191610b0c565b820191905f5260205f20905b815481529060010190602001808311610aef57829003601f168201915b505050505081565b5f610b203384846121af565b6001905092915050565b600b5481565b5f8060105490505f600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a0823160045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401610bb49190612f96565b602060405180830381865afa158015610bcf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf391906130c2565b90505f8111610c37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2e90613137565b60405180910390fd5b5f60095411610c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c729061319f565b60405180910390fd5b5f81670de0b6b3a764000084610c9191906131ea565b610c9b9190613258565b9050670de0b6b3a7640000600a610cb291906131ea565b811115610cd157670de0b6b3a7640000600a610cce91906131ea565b90505b5f670de0b6b3a764000060095483610ce991906131ea565b610cf39190613258565b90505f81670de0b6b3a7640000610d0a9190613288565b90505f610d1682612372565b90505f610d30600a600954610d2b91906131ea565b612372565b82600754600854610d4191906132bb565b610d4b91906131ea565b610d559190613258565b600854610d6291906132bb565b9050600754811015610d745760075490505b8097505050505050505090565b60065481565b610d8f612128565b5f151560165f9054906101000a900460ff16151514610de3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dda9061335e565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f9ee7d7a42466d19669fb88ad7a5b03861d6abd7d2a681c83dd982207cfaeb37060405160405180910390a250565b5f601054905090565b600e5481565b6019602052805f5260405f205f915090505481565b5f8060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f45906133ec565b60405180910390fd5b610f598585856124a4565b610f6f85338584610f6a91906132bb565b6121af565b60019150509392505050565b5f610f8530611458565b905090565b60155460195f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205442610fd691906132bb565b1015611017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100e90613454565b60405180910390fd5b61101f611a1d565b5f6011548261102e91906131ea565b90508060175f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156110b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a7906134bc565b60405180910390fd5b6110ba33836128a3565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930846040518363ffffffff1660e01b81526004016111179291906134da565b5f604051808303815f87803b15801561112e575f80fd5b505af1158015611140573d5f803e3d5ffd5b505050505f612710600c548461115691906131ea565b6111609190613258565b90505f818461116f91906132bb565b9050600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016111ce9291906134da565b6020604051808303815f875af11580156111ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061120e919061352b565b505f8211156112d757600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b81526004016112959291906134da565b6020604051808303815f875af11580156112b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112d5919061352b565b505b3373ffffffffffffffffffffffffffffffffffffffff167ffbd65cfd6de1493db337385c0712095397ecbd0504df64b861cdfceb80c7b42285848460405161132193929190613556565b60405180910390a250505050565b60105481565b60125481565b60035f9054906101000a900460ff1681565b5f80612710600c548461136091906131ea565b61136a9190613258565b905080915050919050565b5f600654905090565b60095481565b5f61138d610b30565b611395611375565b61139f9190613288565b905090565b60075481565b5f600d544210156113ca5742600d546113c391906132bb565b90506113f5565b600a54600d54426113db91906132bb565b6113e5919061358b565b600a546113f291906132bb565b90505b90565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60125460135461142e91906132bb565b905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60115460175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546114a49190613258565b9050919050565b6114b3612128565b6114bc5f612a67565b565b600d5481565b60115481565b600c5481565b600a5481565b6114de612128565b81831115611521576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151890613605565b60405180910390fd5b836006819055508260078190555081600881905550806009819055507f56868216d91d6464abc5e886219763832e60a15138e4b9b39622e814215ccc7c848484846040516115729493929190613623565b60405180910390a150505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600280546115b49061307e565b80601f01602080910402602001604051908101604052809291908181526020018280546115e09061307e565b801561162b5780601f106116025761010080835404028352916020019161162b565b820191905f5260205f20905b81548152906001019060200180831161160e57829003601f168201915b505050505081565b5f80612710600b548461164691906131ea565b6116509190613258565b905080915050919050565b611663611a1d565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b81526004016116c293929190613666565b6020604051808303815f875af11580156116de573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611702919061352b565b611741576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611738906136e5565b60405180910390fd5b5f612710600b548361175391906131ea565b61175d9190613258565b90505f818361176c91906132bb565b9050600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c68826040518263ffffffff1660e01b81526004016117c99190612ebf565b5f604051808303815f87803b1580156117e0575f80fd5b505af11580156117f2573d5f803e3d5ffd5b505050505f8211156118be57600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161187c9291906134da565b6020604051808303815f875af1158015611898573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118bc919061352b565b505b6118c83382612b28565b5f6015541115611915574260195f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b3373ffffffffffffffffffffffffffffffffffffffff167ff556991011e831bcfac4f406d547e5e32cdd98267efab83935230d5f8d02c44684848460405161195f93929190613556565b60405180910390a2505050565b611974612128565b5f8110156119b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ae9061374d565b60405180910390fd5b620151808111156119fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f4906137b5565b60405180910390fd5b8060158190555050565b5f611a133384846124a4565b6001905092915050565b600d544210611bd8575f80600e5411611a3857600d54611a3c565b600e545b90505f600a548242611a4e91906132bb565b611a589190613258565b90505f8103611a68575050611bd8565b5f611a71611375565b90505f611a7c610b30565b90505f8183611a8b9190613288565b90505f600a546301e13380611aa09190613258565b90505f8183611aaf9190613258565b90505f6064670de0b6b3a76400008884601354611acc91906131ea565b611ad691906131ea565b611ae09190613258565b611aea9190613258565b90505f8103611b1f5786600a54611b0191906131ea565b88611b0c9190613288565b600e819055505050505050505050611bd8565b8060135f828254611b309190613288565b92505081905550601354601454611b479190613258565b601181905550601154600f54611b5d9190613258565b60108190555086600a54611b7191906131ea565b88611b7c9190613288565b600e819055507f82ec6dc57ebf74c563b660545554cb4bb01fc6e3e89020f8f47dd324e64eeaf48686848b8b60135487601154601054604051611bc7999897969594939291906137d3565b60405180910390a150505050505050505b565b5f80611be4611375565b90505f611bef610b30565b90505f8183611bfe9190613288565b90505f80600e5411611c1257600d54611c16565b600e545b905042811115611c2c575f945050505050611cbf565b5f600a548242611c3c91906132bb565b611c469190613258565b90505f8103611c5457600190505b5f600a546301e13380611c679190613258565b90505f8185611c769190613258565b90505f6064670de0b6b3a76400008584601054611c9391906131ea565b611c9d91906131ea565b611ca79190613258565b611cb19190613258565b905080985050505050505050505b90565b60145481565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611cf6612128565b600d544210611d3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d31906138a8565b60405180910390fd5b80600d819055507fd1c4f5d3748426e79e1bbf9eef6e637b3b173e57084ada1e37330d9a31e06f7581604051611d709190612ebf565b60405180910390a150565b5f80611d85611bda565b90505f611d9184611458565b90505f601054670de0b6b3a764000083611dab91906131ea565b611db59190613258565b90506064670de0b6b3a76400008285611dce91906131ea565b611dd89190613258565b611de29190613258565b9350505050919050565b60135481565b611dfa612128565b8173ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611e3d573d5f803e3d5ffd5b505050565b60085481565b5f60185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60155481565b611ed8612128565b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3d90613910565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611f819291906134da565b6020604051808303815f875af1158015611f9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fc1919061352b565b50505050565b600f5481565b611fd5612128565b80600a819055507fa0df1b641bcb350bfc38973452497c08c1314b4788866ea2c6eaab659573df248160405161200b9190612ebf565b60405180910390a150565b61201e612128565b8060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f3c864541ef71378c6229510ed90f376565ee42d9c5e0904a984a9e863e6db44f60405160405180910390a250565b6120ac612128565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361211c575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016121139190612f96565b60405180910390fd5b61212581612a67565b50565b612130612cec565b73ffffffffffffffffffffffffffffffffffffffff1661214e611580565b73ffffffffffffffffffffffffffffffffffffffff16146121ad57612171612cec565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016121a49190612f96565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361221d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122149061399e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361228b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228290613a2c565b60405180910390fd5b8060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123659190612ebf565b60405180910390a3505050565b5f8082116123b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ac90613a94565b60405180910390fd5b5f5b670de0b6b3a7640000600a6123cc91906131ea565b83106123fc57600a836123df9190613258565b9250670de0b6b3a7640000816123f59190613288565b90506123b7565b5f5b60128160ff16101561249a57670de0b6b3a7640000848561241f91906131ea565b6124299190613258565b9350670de0b6b3a7640000600a61244091906131ea565b841061248f57600a846124539190613258565b93506001816124629190613ab2565b600261246e9190613c15565b670de0b6b3a76400006124819190613258565b8261248c9190613288565b91505b8060010190506123fe565b5080915050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612512576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250990613ccf565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257790613d5d565b60405180910390fd5b6011548161258e91906131ea565b60175f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561260d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260490613deb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061267357503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6126b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a990613e79565b60405180910390fd5b6126ba611a1d565b5f612710825f6126ca91906131ea565b6126d49190613258565b90505f81836126e391906132bb565b90505f601154826126f491906131ea565b90505f6011548461270591906131ea565b905080826127139190613288565b60175f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461275e91906132bb565b925050819055508160175f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546127b19190613288565b925050819055505f811115612835578060175f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461282d9190613288565b925050819055505b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128929190612ebf565b60405180910390a350505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612911576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290890613f07565b60405180910390fd5b5f6011548261292091906131ea565b905080600f5f82825461293391906132bb565b925050819055508160105f82825461294b91906132bb565b925050819055508060175f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461299e91906132bb565b925050819055508273ffffffffffffffffffffffffffffffffffffffff167f4d667732637549615f3cd28023b13380094dd975c0ac7c1b26916a8b1363b7ec83836011546010546040516129f59493929190613623565b60405180910390a25f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a5a9190612ebf565b60405180910390a3505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8d90613f6f565b60405180910390fd5b5f60115482612ba591906131ea565b905080600f5f828254612bb89190613288565b925050819055508160105f828254612bd09190613288565b925050819055508060175f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612c239190613288565b925050819055508273ffffffffffffffffffffffffffffffffffffffff167f94c792774c59479f7bd68442f3af3691c02123a5aabee8b6f9116d8af8aa66698383601154601054604051612c7a9493929190613623565b60405180910390a28273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612cdf9190612ebf565b60405180910390a3505050565b5f33905090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612d2082612cf7565b9050919050565b612d3081612d16565b8114612d3a575f80fd5b50565b5f81359050612d4b81612d27565b92915050565b5f60208284031215612d6657612d65612cf3565b5b5f612d7384828501612d3d565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612dbe82612d7c565b612dc88185612d86565b9350612dd8818560208601612d96565b612de181612da4565b840191505092915050565b5f6020820190508181035f830152612e048184612db4565b905092915050565b5f819050919050565b612e1e81612e0c565b8114612e28575f80fd5b50565b5f81359050612e3981612e15565b92915050565b5f8060408385031215612e5557612e54612cf3565b5b5f612e6285828601612d3d565b9250506020612e7385828601612e2b565b9150509250929050565b5f8115159050919050565b612e9181612e7d565b82525050565b5f602082019050612eaa5f830184612e88565b92915050565b612eb981612e0c565b82525050565b5f602082019050612ed25f830184612eb0565b92915050565b5f805f60608486031215612eef57612eee612cf3565b5b5f612efc86828701612d3d565b9350506020612f0d86828701612d3d565b9250506040612f1e86828701612e2b565b9150509250925092565b5f60208284031215612f3d57612f3c612cf3565b5b5f612f4a84828501612e2b565b91505092915050565b5f60ff82169050919050565b612f6881612f53565b82525050565b5f602082019050612f815f830184612f5f565b92915050565b612f9081612d16565b82525050565b5f602082019050612fa95f830184612f87565b92915050565b5f805f8060808587031215612fc757612fc6612cf3565b5b5f612fd487828801612e2b565b9450506020612fe587828801612e2b565b9350506040612ff687828801612e2b565b925050606061300787828801612e2b565b91505092959194509250565b5f806040838503121561302957613028612cf3565b5b5f61303685828601612d3d565b925050602061304785828601612d3d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061309557607f821691505b6020821081036130a8576130a7613051565b5b50919050565b5f815190506130bc81612e15565b92915050565b5f602082840312156130d7576130d6612cf3565b5b5f6130e4848285016130ae565b91505092915050565b7f4c502062616c616e6365207a65726f00000000000000000000000000000000005f82015250565b5f613121600f83612d86565b915061312c826130ed565b602082019050919050565b5f6020820190508181035f83015261314e81613115565b9050919050565b7f44796e616d69632041505220636f6e7374616e74207a65726f000000000000005f82015250565b5f613189601983612d86565b915061319482613155565b602082019050919050565b5f6020820190508181035f8301526131b68161317d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6131f482612e0c565b91506131ff83612e0c565b925082820261320d81612e0c565b91508282048414831517613224576132236131bd565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61326282612e0c565b915061326d83612e0c565b92508261327d5761327c61322b565b5b828204905092915050565b5f61329282612e0c565b915061329d83612e0c565b92508282019050808211156132b5576132b46131bd565b5b92915050565b5f6132c582612e0c565b91506132d083612e0c565b92508282039050818111156132e8576132e76131bd565b5b92915050565b7f4261736520746f6b656e2063616e206f6e6c7920626520736574206f6e63652c5f8201527f20616e6420697320696d6d757461626c65206166746572776172647300000000602082015250565b5f613348603c83612d86565b9150613353826132ee565b604082019050919050565b5f6020820190508181035f8301526133758161333c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6133d6602883612d86565b91506133e18261337c565b604082019050919050565b5f6020820190508181035f830152613403816133ca565b9050919050565b7f5761726d757020706572696f64206e6f74206f766572000000000000000000005f82015250565b5f61343e601683612d86565b91506134498261340a565b602082019050919050565b5f6020820190508181035f83015261346b81613432565b9050919050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f6134a6601483612d86565b91506134b182613472565b602082019050919050565b5f6020820190508181035f8301526134d38161349a565b9050919050565b5f6040820190506134ed5f830185612f87565b6134fa6020830184612eb0565b9392505050565b61350a81612e7d565b8114613514575f80fd5b50565b5f8151905061352581613501565b92915050565b5f602082840312156135405761353f612cf3565b5b5f61354d84828501613517565b91505092915050565b5f6060820190506135695f830186612eb0565b6135766020830185612eb0565b6135836040830184612eb0565b949350505050565b5f61359582612e0c565b91506135a083612e0c565b9250826135b0576135af61322b565b5b828206905092915050565b7f4d696e2063617020686967686572207468616e206d61782063617000000000005f82015250565b5f6135ef601b83612d86565b91506135fa826135bb565b602082019050919050565b5f6020820190508181035f83015261361c816135e3565b9050919050565b5f6080820190506136365f830187612eb0565b6136436020830186612eb0565b6136506040830185612eb0565b61365d6060830184612eb0565b95945050505050565b5f6060820190506136795f830186612f87565b6136866020830185612f87565b6136936040830184612eb0565b949350505050565b7f5472616e73666572206661696c656400000000000000000000000000000000005f82015250565b5f6136cf600f83612d86565b91506136da8261369b565b602082019050919050565b5f6020820190508181035f8301526136fc816136c3565b9050919050565b7f5761726d757020706572696f6420746f6f206c6f7700000000000000000000005f82015250565b5f613737601583612d86565b915061374282613703565b602082019050919050565b5f6020820190508181035f8301526137648161372b565b9050919050565b7f5761726d757020706572696f6420746f6f2068696768000000000000000000005f82015250565b5f61379f601683612d86565b91506137aa8261376b565b602082019050919050565b5f6020820190508181035f8301526137cc81613793565b9050919050565b5f610120820190506137e75f83018c612eb0565b6137f4602083018b612eb0565b613801604083018a612eb0565b61380e6060830189612eb0565b61381b6080830188612eb0565b61382860a0830187612eb0565b61383560c0830186612eb0565b61384260e0830185612eb0565b613850610100830184612eb0565b9a9950505050505050505050565b7f5374616b696e6720616c726561647920737461727465640000000000000000005f82015250565b5f613892601783612d86565b915061389d8261385e565b602082019050919050565b5f6020820190508181035f8301526138bf81613886565b9050919050565b7f43616e6e6f74207769746864726177207374616b696e6720746f6b656e0000005f82015250565b5f6138fa601d83612d86565b9150613905826138c6565b602082019050919050565b5f6020820190508181035f830152613927816138ee565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613988602483612d86565b91506139938261392e565b604082019050919050565b5f6020820190508181035f8301526139b58161397c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a16602283612d86565b9150613a21826139bc565b604082019050919050565b5f6020820190508181035f830152613a4381613a0a565b9050919050565b7f4c6f67207a65726f0000000000000000000000000000000000000000000000005f82015250565b5f613a7e600883612d86565b9150613a8982613a4a565b602082019050919050565b5f6020820190508181035f830152613aab81613a72565b9050919050565b5f613abc82612f53565b9150613ac783612f53565b9250828201905060ff811115613ae057613adf6131bd565b5b92915050565b5f8160011c9050919050565b5f808291508390505b6001851115613b3b57808604811115613b1757613b166131bd565b5b6001851615613b265780820291505b8081029050613b3485613ae6565b9450613afb565b94509492505050565b5f82613b535760019050613c0e565b81613b60575f9050613c0e565b8160018114613b765760028114613b8057613baf565b6001915050613c0e565b60ff841115613b9257613b916131bd565b5b8360020a915084821115613ba957613ba86131bd565b5b50613c0e565b5060208310610133831016604e8410600b8410161715613be45782820a905083811115613bdf57613bde6131bd565b5b613c0e565b613bf18484846001613af2565b92509050818404811115613c0857613c076131bd565b5b81810290505b9392505050565b5f613c1f82612e0c565b9150613c2a83612f53565b9250613c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613b44565b905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613cb9602583612d86565b9150613cc482613c5f565b604082019050919050565b5f6020820190508181035f830152613ce681613cad565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613d47602383612d86565b9150613d5282613ced565b604082019050919050565b5f6020820190508181035f830152613d7481613d3b565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613dd5602683612d86565b9150613de082613d7b565b604082019050919050565b5f6020820190508181035f830152613e0281613dc9565b9050919050565b7f45524332303a207472616e7366657220746f207374616b696e6720636f6e74725f8201527f6163740000000000000000000000000000000000000000000000000000000000602082015250565b5f613e63602383612d86565b9150613e6e82613e09565b604082019050919050565b5f6020820190508181035f830152613e9081613e57565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f613ef1602183612d86565b9150613efc82613e97565b604082019050919050565b5f6020820190508181035f830152613f1e81613ee5565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f613f59601f83612d86565b9150613f6482613f25565b602082019050919050565b5f6020820190508181035f830152613f8681613f4d565b905091905056fea2646970667358221220c2a4ebe1bd43a907b84eeceb39a04708d899ed8acac68989755632cb618020f664736f6c634300081a00330000000000000000000000008888888888888e0ff220b240499e30430458e568000000000000000000000000ceb63072d4689cc1104a07f0c5392b9957a6ba8e00000000000000000000000031b6a4dca90fabf29879143ca5bb2c10e8a11e4c0000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561000f575f80fd5b5060043610610340575f3560e01c80637419f190116101b6578063c4968c9a11610102578063dd62ed3e116100a0578063ecdd98be1161007a578063ecdd98be14610988578063ef037fb9146109a6578063f0f44260146109c2578063f2fde38b146109de57610340565b8063dd62ed3e1461091e578063deac361a1461094e578063e63ea4081461096c57610340565b8063cca1ef6e116100dc578063cca1ef6e14610896578063d5abeb01146108c6578063d5e1fc1f146108e4578063d9565b031461090057610340565b8063c4968c9a1461083e578063c55dae631461085c578063cc1b63d51461087a57610340565b806395d89b411161016f578063a85667c511610149578063a85667c5146107ca578063a9059cbb146107e6578063af14052c14610816578063be8edf5c1461082057610340565b806395d89b4114610760578063a4168bcf1461077e578063a694fc3a146107ae57610340565b80637419f190146106ae5780637ed8f653146106cc57806383e373b0146106ea57806389edeb74146107085780638bd1d033146107265780638da5cb5b1461074257610340565b80632e187a681161029057806351d4a5801161022e578063663dcdbc11610208578063663dcdbc14610638578063665a11ca1461065657806370a0823114610674578063715018a6146106a457610340565b806351d4a580146105de578063529bed7f146105fc57806361d027b31461061a57610340565b80634508a6cc1161026a5780634508a6cc1461055457806345885bfe146105845780634a7c4d18146105a25780634befa981146105c057610340565b80632e187a68146104fa57806330643c4114610518578063313ce5671461053657610340565b806316bb6c13116102fd5780631ad25ffb116102d75780631ad25ffb1461046057806323b872dd146104905780632986c0e5146104c05780632e17de78146104de57610340565b806316bb6c131461040857806318160ddd146104245780631924063e1461044257610340565b8063018770201461034457806306fdde0314610360578063095ea7b31461037e57806309bc773f146103ae5780630f336d48146103cc578063118ab4e1146103ea575b5f80fd5b61035e60048036038101906103599190612d51565b6109fa565b005b610368610a88565b6040516103759190612dec565b60405180910390f35b61039860048036038101906103939190612e3f565b610b14565b6040516103a59190612e97565b60405180910390f35b6103b6610b2a565b6040516103c39190612ebf565b60405180910390f35b6103d4610b30565b6040516103e19190612ebf565b60405180910390f35b6103f2610d81565b6040516103ff9190612ebf565b60405180910390f35b610422600480360381019061041d9190612d51565b610d87565b005b61042c610e6a565b6040516104399190612ebf565b60405180910390f35b61044a610e73565b6040516104579190612ebf565b60405180910390f35b61047a60048036038101906104759190612d51565b610e79565b6040516104879190612ebf565b60405180910390f35b6104aa60048036038101906104a59190612ed8565b610e8e565b6040516104b79190612e97565b60405180910390f35b6104c8610f7b565b6040516104d59190612ebf565b60405180910390f35b6104f860048036038101906104f39190612f28565b610f8a565b005b61050261132f565b60405161050f9190612ebf565b60405180910390f35b610520611335565b60405161052d9190612ebf565b60405180910390f35b61053e61133b565b60405161054b9190612f6e565b60405180910390f35b61056e60048036038101906105699190612f28565b61134d565b60405161057b9190612ebf565b60405180910390f35b61058c611375565b6040516105999190612ebf565b60405180910390f35b6105aa61137e565b6040516105b79190612ebf565b60405180910390f35b6105c8611384565b6040516105d59190612ebf565b60405180910390f35b6105e66113a4565b6040516105f39190612ebf565b60405180910390f35b6106046113aa565b6040516106119190612ebf565b60405180910390f35b6106226113f8565b60405161062f9190612f96565b60405180910390f35b61064061141d565b60405161064d9190612ebf565b60405180910390f35b61065e611433565b60405161066b9190612f96565b60405180910390f35b61068e60048036038101906106899190612d51565b611458565b60405161069b9190612ebf565b60405180910390f35b6106ac6114ab565b005b6106b66114be565b6040516106c39190612ebf565b60405180910390f35b6106d46114c4565b6040516106e19190612ebf565b60405180910390f35b6106f26114ca565b6040516106ff9190612ebf565b60405180910390f35b6107106114d0565b60405161071d9190612ebf565b60405180910390f35b610740600480360381019061073b9190612faf565b6114d6565b005b61074a611580565b6040516107579190612f96565b60405180910390f35b6107686115a7565b6040516107759190612dec565b60405180910390f35b61079860048036038101906107939190612f28565b611633565b6040516107a59190612ebf565b60405180910390f35b6107c860048036038101906107c39190612f28565b61165b565b005b6107e460048036038101906107df9190612f28565b61196c565b005b61080060048036038101906107fb9190612e3f565b611a07565b60405161080d9190612e97565b60405180910390f35b61081e611a1d565b005b610828611bda565b6040516108359190612ebf565b60405180910390f35b610846611cc2565b6040516108539190612ebf565b60405180910390f35b610864611cc8565b6040516108719190612f96565b60405180910390f35b610894600480360381019061088f9190612f28565b611cee565b005b6108b060048036038101906108ab9190612d51565b611d7b565b6040516108bd9190612ebf565b60405180910390f35b6108ce611dec565b6040516108db9190612ebf565b60405180910390f35b6108fe60048036038101906108f99190612e3f565b611df2565b005b610908611e42565b6040516109159190612ebf565b60405180910390f35b61093860048036038101906109339190613013565b611e48565b6040516109459190612ebf565b60405180910390f35b610956611eca565b6040516109639190612ebf565b60405180910390f35b61098660048036038101906109819190612ed8565b611ed0565b005b610990611fc7565b60405161099d9190612ebf565b60405180910390f35b6109c060048036038101906109bb9190612f28565b611fcd565b005b6109dc60048036038101906109d79190612d51565b612016565b005b6109f860048036038101906109f39190612d51565b6120a4565b005b610a02612128565b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fe57f71636571365571c0eaeaeb54e1d9e0065804f056a57a2a29448524f7d18a60405160405180910390a250565b60018054610a959061307e565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac19061307e565b8015610b0c5780601f10610ae357610100808354040283529160200191610b0c565b820191905f5260205f20905b815481529060010190602001808311610aef57829003601f168201915b505050505081565b5f610b203384846121af565b6001905092915050565b600b5481565b5f8060105490505f600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a0823160045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401610bb49190612f96565b602060405180830381865afa158015610bcf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf391906130c2565b90505f8111610c37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2e90613137565b60405180910390fd5b5f60095411610c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c729061319f565b60405180910390fd5b5f81670de0b6b3a764000084610c9191906131ea565b610c9b9190613258565b9050670de0b6b3a7640000600a610cb291906131ea565b811115610cd157670de0b6b3a7640000600a610cce91906131ea565b90505b5f670de0b6b3a764000060095483610ce991906131ea565b610cf39190613258565b90505f81670de0b6b3a7640000610d0a9190613288565b90505f610d1682612372565b90505f610d30600a600954610d2b91906131ea565b612372565b82600754600854610d4191906132bb565b610d4b91906131ea565b610d559190613258565b600854610d6291906132bb565b9050600754811015610d745760075490505b8097505050505050505090565b60065481565b610d8f612128565b5f151560165f9054906101000a900460ff16151514610de3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dda9061335e565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f9ee7d7a42466d19669fb88ad7a5b03861d6abd7d2a681c83dd982207cfaeb37060405160405180910390a250565b5f601054905090565b600e5481565b6019602052805f5260405f205f915090505481565b5f8060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f45906133ec565b60405180910390fd5b610f598585856124a4565b610f6f85338584610f6a91906132bb565b6121af565b60019150509392505050565b5f610f8530611458565b905090565b60155460195f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205442610fd691906132bb565b1015611017576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100e90613454565b60405180910390fd5b61101f611a1d565b5f6011548261102e91906131ea565b90508060175f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156110b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a7906134bc565b60405180910390fd5b6110ba33836128a3565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930846040518363ffffffff1660e01b81526004016111179291906134da565b5f604051808303815f87803b15801561112e575f80fd5b505af1158015611140573d5f803e3d5ffd5b505050505f612710600c548461115691906131ea565b6111609190613258565b90505f818461116f91906132bb565b9050600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016111ce9291906134da565b6020604051808303815f875af11580156111ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061120e919061352b565b505f8211156112d757600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b81526004016112959291906134da565b6020604051808303815f875af11580156112b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112d5919061352b565b505b3373ffffffffffffffffffffffffffffffffffffffff167ffbd65cfd6de1493db337385c0712095397ecbd0504df64b861cdfceb80c7b42285848460405161132193929190613556565b60405180910390a250505050565b60105481565b60125481565b60035f9054906101000a900460ff1681565b5f80612710600c548461136091906131ea565b61136a9190613258565b905080915050919050565b5f600654905090565b60095481565b5f61138d610b30565b611395611375565b61139f9190613288565b905090565b60075481565b5f600d544210156113ca5742600d546113c391906132bb565b90506113f5565b600a54600d54426113db91906132bb565b6113e5919061358b565b600a546113f291906132bb565b90505b90565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60125460135461142e91906132bb565b905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60115460175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546114a49190613258565b9050919050565b6114b3612128565b6114bc5f612a67565b565b600d5481565b60115481565b600c5481565b600a5481565b6114de612128565b81831115611521576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151890613605565b60405180910390fd5b836006819055508260078190555081600881905550806009819055507f56868216d91d6464abc5e886219763832e60a15138e4b9b39622e814215ccc7c848484846040516115729493929190613623565b60405180910390a150505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600280546115b49061307e565b80601f01602080910402602001604051908101604052809291908181526020018280546115e09061307e565b801561162b5780601f106116025761010080835404028352916020019161162b565b820191905f5260205f20905b81548152906001019060200180831161160e57829003601f168201915b505050505081565b5f80612710600b548461164691906131ea565b6116509190613258565b905080915050919050565b611663611a1d565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b81526004016116c293929190613666565b6020604051808303815f875af11580156116de573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611702919061352b565b611741576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611738906136e5565b60405180910390fd5b5f612710600b548361175391906131ea565b61175d9190613258565b90505f818361176c91906132bb565b9050600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c68826040518263ffffffff1660e01b81526004016117c99190612ebf565b5f604051808303815f87803b1580156117e0575f80fd5b505af11580156117f2573d5f803e3d5ffd5b505050505f8211156118be57600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161187c9291906134da565b6020604051808303815f875af1158015611898573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118bc919061352b565b505b6118c83382612b28565b5f6015541115611915574260195f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b3373ffffffffffffffffffffffffffffffffffffffff167ff556991011e831bcfac4f406d547e5e32cdd98267efab83935230d5f8d02c44684848460405161195f93929190613556565b60405180910390a2505050565b611974612128565b5f8110156119b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ae9061374d565b60405180910390fd5b620151808111156119fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f4906137b5565b60405180910390fd5b8060158190555050565b5f611a133384846124a4565b6001905092915050565b600d544210611bd8575f80600e5411611a3857600d54611a3c565b600e545b90505f600a548242611a4e91906132bb565b611a589190613258565b90505f8103611a68575050611bd8565b5f611a71611375565b90505f611a7c610b30565b90505f8183611a8b9190613288565b90505f600a546301e13380611aa09190613258565b90505f8183611aaf9190613258565b90505f6064670de0b6b3a76400008884601354611acc91906131ea565b611ad691906131ea565b611ae09190613258565b611aea9190613258565b90505f8103611b1f5786600a54611b0191906131ea565b88611b0c9190613288565b600e819055505050505050505050611bd8565b8060135f828254611b309190613288565b92505081905550601354601454611b479190613258565b601181905550601154600f54611b5d9190613258565b60108190555086600a54611b7191906131ea565b88611b7c9190613288565b600e819055507f82ec6dc57ebf74c563b660545554cb4bb01fc6e3e89020f8f47dd324e64eeaf48686848b8b60135487601154601054604051611bc7999897969594939291906137d3565b60405180910390a150505050505050505b565b5f80611be4611375565b90505f611bef610b30565b90505f8183611bfe9190613288565b90505f80600e5411611c1257600d54611c16565b600e545b905042811115611c2c575f945050505050611cbf565b5f600a548242611c3c91906132bb565b611c469190613258565b90505f8103611c5457600190505b5f600a546301e13380611c679190613258565b90505f8185611c769190613258565b90505f6064670de0b6b3a76400008584601054611c9391906131ea565b611c9d91906131ea565b611ca79190613258565b611cb19190613258565b905080985050505050505050505b90565b60145481565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611cf6612128565b600d544210611d3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d31906138a8565b60405180910390fd5b80600d819055507fd1c4f5d3748426e79e1bbf9eef6e637b3b173e57084ada1e37330d9a31e06f7581604051611d709190612ebf565b60405180910390a150565b5f80611d85611bda565b90505f611d9184611458565b90505f601054670de0b6b3a764000083611dab91906131ea565b611db59190613258565b90506064670de0b6b3a76400008285611dce91906131ea565b611dd89190613258565b611de29190613258565b9350505050919050565b60135481565b611dfa612128565b8173ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611e3d573d5f803e3d5ffd5b505050565b60085481565b5f60185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60155481565b611ed8612128565b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3d90613910565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611f819291906134da565b6020604051808303815f875af1158015611f9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fc1919061352b565b50505050565b600f5481565b611fd5612128565b80600a819055507fa0df1b641bcb350bfc38973452497c08c1314b4788866ea2c6eaab659573df248160405161200b9190612ebf565b60405180910390a150565b61201e612128565b8060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f3c864541ef71378c6229510ed90f376565ee42d9c5e0904a984a9e863e6db44f60405160405180910390a250565b6120ac612128565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361211c575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016121139190612f96565b60405180910390fd5b61212581612a67565b50565b612130612cec565b73ffffffffffffffffffffffffffffffffffffffff1661214e611580565b73ffffffffffffffffffffffffffffffffffffffff16146121ad57612171612cec565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016121a49190612f96565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361221d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122149061399e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361228b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228290613a2c565b60405180910390fd5b8060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123659190612ebf565b60405180910390a3505050565b5f8082116123b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ac90613a94565b60405180910390fd5b5f5b670de0b6b3a7640000600a6123cc91906131ea565b83106123fc57600a836123df9190613258565b9250670de0b6b3a7640000816123f59190613288565b90506123b7565b5f5b60128160ff16101561249a57670de0b6b3a7640000848561241f91906131ea565b6124299190613258565b9350670de0b6b3a7640000600a61244091906131ea565b841061248f57600a846124539190613258565b93506001816124629190613ab2565b600261246e9190613c15565b670de0b6b3a76400006124819190613258565b8261248c9190613288565b91505b8060010190506123fe565b5080915050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612512576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250990613ccf565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257790613d5d565b60405180910390fd5b6011548161258e91906131ea565b60175f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561260d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260490613deb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061267357503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6126b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a990613e79565b60405180910390fd5b6126ba611a1d565b5f612710825f6126ca91906131ea565b6126d49190613258565b90505f81836126e391906132bb565b90505f601154826126f491906131ea565b90505f6011548461270591906131ea565b905080826127139190613288565b60175f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461275e91906132bb565b925050819055508160175f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546127b19190613288565b925050819055505f811115612835578060175f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461282d9190613288565b925050819055505b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128929190612ebf565b60405180910390a350505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612911576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290890613f07565b60405180910390fd5b5f6011548261292091906131ea565b905080600f5f82825461293391906132bb565b925050819055508160105f82825461294b91906132bb565b925050819055508060175f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461299e91906132bb565b925050819055508273ffffffffffffffffffffffffffffffffffffffff167f4d667732637549615f3cd28023b13380094dd975c0ac7c1b26916a8b1363b7ec83836011546010546040516129f59493929190613623565b60405180910390a25f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a5a9190612ebf565b60405180910390a3505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8d90613f6f565b60405180910390fd5b5f60115482612ba591906131ea565b905080600f5f828254612bb89190613288565b925050819055508160105f828254612bd09190613288565b925050819055508060175f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612c239190613288565b925050819055508273ffffffffffffffffffffffffffffffffffffffff167f94c792774c59479f7bd68442f3af3691c02123a5aabee8b6f9116d8af8aa66698383601154601054604051612c7a9493929190613623565b60405180910390a28273ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612cdf9190612ebf565b60405180910390a3505050565b5f33905090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612d2082612cf7565b9050919050565b612d3081612d16565b8114612d3a575f80fd5b50565b5f81359050612d4b81612d27565b92915050565b5f60208284031215612d6657612d65612cf3565b5b5f612d7384828501612d3d565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612dbe82612d7c565b612dc88185612d86565b9350612dd8818560208601612d96565b612de181612da4565b840191505092915050565b5f6020820190508181035f830152612e048184612db4565b905092915050565b5f819050919050565b612e1e81612e0c565b8114612e28575f80fd5b50565b5f81359050612e3981612e15565b92915050565b5f8060408385031215612e5557612e54612cf3565b5b5f612e6285828601612d3d565b9250506020612e7385828601612e2b565b9150509250929050565b5f8115159050919050565b612e9181612e7d565b82525050565b5f602082019050612eaa5f830184612e88565b92915050565b612eb981612e0c565b82525050565b5f602082019050612ed25f830184612eb0565b92915050565b5f805f60608486031215612eef57612eee612cf3565b5b5f612efc86828701612d3d565b9350506020612f0d86828701612d3d565b9250506040612f1e86828701612e2b565b9150509250925092565b5f60208284031215612f3d57612f3c612cf3565b5b5f612f4a84828501612e2b565b91505092915050565b5f60ff82169050919050565b612f6881612f53565b82525050565b5f602082019050612f815f830184612f5f565b92915050565b612f9081612d16565b82525050565b5f602082019050612fa95f830184612f87565b92915050565b5f805f8060808587031215612fc757612fc6612cf3565b5b5f612fd487828801612e2b565b9450506020612fe587828801612e2b565b9350506040612ff687828801612e2b565b925050606061300787828801612e2b565b91505092959194509250565b5f806040838503121561302957613028612cf3565b5b5f61303685828601612d3d565b925050602061304785828601612d3d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061309557607f821691505b6020821081036130a8576130a7613051565b5b50919050565b5f815190506130bc81612e15565b92915050565b5f602082840312156130d7576130d6612cf3565b5b5f6130e4848285016130ae565b91505092915050565b7f4c502062616c616e6365207a65726f00000000000000000000000000000000005f82015250565b5f613121600f83612d86565b915061312c826130ed565b602082019050919050565b5f6020820190508181035f83015261314e81613115565b9050919050565b7f44796e616d69632041505220636f6e7374616e74207a65726f000000000000005f82015250565b5f613189601983612d86565b915061319482613155565b602082019050919050565b5f6020820190508181035f8301526131b68161317d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6131f482612e0c565b91506131ff83612e0c565b925082820261320d81612e0c565b91508282048414831517613224576132236131bd565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61326282612e0c565b915061326d83612e0c565b92508261327d5761327c61322b565b5b828204905092915050565b5f61329282612e0c565b915061329d83612e0c565b92508282019050808211156132b5576132b46131bd565b5b92915050565b5f6132c582612e0c565b91506132d083612e0c565b92508282039050818111156132e8576132e76131bd565b5b92915050565b7f4261736520746f6b656e2063616e206f6e6c7920626520736574206f6e63652c5f8201527f20616e6420697320696d6d757461626c65206166746572776172647300000000602082015250565b5f613348603c83612d86565b9150613353826132ee565b604082019050919050565b5f6020820190508181035f8301526133758161333c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6133d6602883612d86565b91506133e18261337c565b604082019050919050565b5f6020820190508181035f830152613403816133ca565b9050919050565b7f5761726d757020706572696f64206e6f74206f766572000000000000000000005f82015250565b5f61343e601683612d86565b91506134498261340a565b602082019050919050565b5f6020820190508181035f83015261346b81613432565b9050919050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f6134a6601483612d86565b91506134b182613472565b602082019050919050565b5f6020820190508181035f8301526134d38161349a565b9050919050565b5f6040820190506134ed5f830185612f87565b6134fa6020830184612eb0565b9392505050565b61350a81612e7d565b8114613514575f80fd5b50565b5f8151905061352581613501565b92915050565b5f602082840312156135405761353f612cf3565b5b5f61354d84828501613517565b91505092915050565b5f6060820190506135695f830186612eb0565b6135766020830185612eb0565b6135836040830184612eb0565b949350505050565b5f61359582612e0c565b91506135a083612e0c565b9250826135b0576135af61322b565b5b828206905092915050565b7f4d696e2063617020686967686572207468616e206d61782063617000000000005f82015250565b5f6135ef601b83612d86565b91506135fa826135bb565b602082019050919050565b5f6020820190508181035f83015261361c816135e3565b9050919050565b5f6080820190506136365f830187612eb0565b6136436020830186612eb0565b6136506040830185612eb0565b61365d6060830184612eb0565b95945050505050565b5f6060820190506136795f830186612f87565b6136866020830185612f87565b6136936040830184612eb0565b949350505050565b7f5472616e73666572206661696c656400000000000000000000000000000000005f82015250565b5f6136cf600f83612d86565b91506136da8261369b565b602082019050919050565b5f6020820190508181035f8301526136fc816136c3565b9050919050565b7f5761726d757020706572696f6420746f6f206c6f7700000000000000000000005f82015250565b5f613737601583612d86565b915061374282613703565b602082019050919050565b5f6020820190508181035f8301526137648161372b565b9050919050565b7f5761726d757020706572696f6420746f6f2068696768000000000000000000005f82015250565b5f61379f601683612d86565b91506137aa8261376b565b602082019050919050565b5f6020820190508181035f8301526137cc81613793565b9050919050565b5f610120820190506137e75f83018c612eb0565b6137f4602083018b612eb0565b613801604083018a612eb0565b61380e6060830189612eb0565b61381b6080830188612eb0565b61382860a0830187612eb0565b61383560c0830186612eb0565b61384260e0830185612eb0565b613850610100830184612eb0565b9a9950505050505050505050565b7f5374616b696e6720616c726561647920737461727465640000000000000000005f82015250565b5f613892601783612d86565b915061389d8261385e565b602082019050919050565b5f6020820190508181035f8301526138bf81613886565b9050919050565b7f43616e6e6f74207769746864726177207374616b696e6720746f6b656e0000005f82015250565b5f6138fa601d83612d86565b9150613905826138c6565b602082019050919050565b5f6020820190508181035f830152613927816138ee565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613988602483612d86565b91506139938261392e565b604082019050919050565b5f6020820190508181035f8301526139b58161397c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a16602283612d86565b9150613a21826139bc565b604082019050919050565b5f6020820190508181035f830152613a4381613a0a565b9050919050565b7f4c6f67207a65726f0000000000000000000000000000000000000000000000005f82015250565b5f613a7e600883612d86565b9150613a8982613a4a565b602082019050919050565b5f6020820190508181035f830152613aab81613a72565b9050919050565b5f613abc82612f53565b9150613ac783612f53565b9250828201905060ff811115613ae057613adf6131bd565b5b92915050565b5f8160011c9050919050565b5f808291508390505b6001851115613b3b57808604811115613b1757613b166131bd565b5b6001851615613b265780820291505b8081029050613b3485613ae6565b9450613afb565b94509492505050565b5f82613b535760019050613c0e565b81613b60575f9050613c0e565b8160018114613b765760028114613b8057613baf565b6001915050613c0e565b60ff841115613b9257613b916131bd565b5b8360020a915084821115613ba957613ba86131bd565b5b50613c0e565b5060208310610133831016604e8410600b8410161715613be45782820a905083811115613bdf57613bde6131bd565b5b613c0e565b613bf18484846001613af2565b92509050818404811115613c0857613c076131bd565b5b81810290505b9392505050565b5f613c1f82612e0c565b9150613c2a83612f53565b9250613c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613b44565b905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613cb9602583612d86565b9150613cc482613c5f565b604082019050919050565b5f6020820190508181035f830152613ce681613cad565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613d47602383612d86565b9150613d5282613ced565b604082019050919050565b5f6020820190508181035f830152613d7481613d3b565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613dd5602683612d86565b9150613de082613d7b565b604082019050919050565b5f6020820190508181035f830152613e0281613dc9565b9050919050565b7f45524332303a207472616e7366657220746f207374616b696e6720636f6e74725f8201527f6163740000000000000000000000000000000000000000000000000000000000602082015250565b5f613e63602383612d86565b9150613e6e82613e09565b604082019050919050565b5f6020820190508181035f830152613e9081613e57565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f613ef1602183612d86565b9150613efc82613e97565b604082019050919050565b5f6020820190508181035f830152613f1e81613ee5565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f613f59601f83612d86565b9150613f6482613f25565b602082019050919050565b5f6020820190508181035f830152613f8681613f4d565b905091905056fea2646970667358221220c2a4ebe1bd43a907b84eeceb39a04708d899ed8acac68989755632cb618020f664736f6c634300081a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000008888888888888e0ff220b240499e30430458e568000000000000000000000000ceb63072d4689cc1104a07f0c5392b9957a6ba8e00000000000000000000000031b6a4dca90fabf29879143ca5bb2c10e8a11e4c0000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _baseToken (address): 0x8888888888888e0Ff220b240499E30430458E568
Arg [1] : _liquidityPool (address): 0xCeB63072d4689CC1104a07f0C5392b9957A6ba8e
Arg [2] : _treasury (address): 0x31B6A4DCA90FABf29879143CA5bB2c10E8A11e4c
Arg [3] : _stakeStartTime (uint256): 0
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000008888888888888e0ff220b240499e30430458e568
Arg [1] : 000000000000000000000000ceb63072d4689cc1104a07f0c5392b9957a6ba8e
Arg [2] : 00000000000000000000000031b6a4dca90fabf29879143ca5bb2c10e8a11e4c
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.