Overview
S Balance
0 S
S Value
$0.00More Info
Private Name Tags
ContractCreator
Loading...
Loading
Contract Name:
Minter
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at SonicScan.org on 2024-12-25 */ /**v3.0.1 *0xf241f4fbe146a075424beadac2d2a743ad31fb8d *Submitted for verification at basescan.org on 2023-09-19 */ /**v2.0.2 *0x5a5919c191bc4a72cf80bce72cdec017b392254d *Submitted for verification at FtmScan.com on 2023-06-13 */ /**v1.5.5 *0x56a4e8c5ff356a8cbb9312fa31fbe482ac2b9cd5 *Submitted for verification at FtmScan.com on 2023-03-31 */ /**v1.3.15 *0xc099610fe8B7E3effbFD4D8A4C34dD4C913B63F3 *Submitted for verification at FtmScan.com on 2023-03-29 */ /*v1.3 *0x3215E01aC5cf536f768f07d68b6E75554a450B42 *Submitted for verification at FtmScan.com on 2022-11-28 */ /**v1.2 *0xab6904e080bdb2c2e245cdcb7d3a7901f0bc963e *Submitted for verification at FtmScan.com on 2022-11-23 */ /** * EQUALIZER EXCHANGE * The New Liquidity Hub of Fantom chain! * https://equalizer.exchange (Dapp) * https://discord.gg/MaMhbgHMby (Community) * * * * ChangeLog: * * Version: v3.0.2 * - Historical Epoch Records * - Mints * - Distributions * - Price * * Version: v1.3.16 * - Set "New Voter" for v1.5.5 * * * Contributors: * - Andre Cronje, Solidly.Exchange * - Velodrome.finance Team * - @smartcoding51 * - 543#3017 (Sam), ftm.guru & Equalizer.exchange * * * SPDX-License-Identifier: UNLICENSED */ pragma solidity 0.8.9; ///pragma experimental ABIEncoderV2; // File: contracts/interfaces/ITvlGuru.sol //ftm.guru's Universal On-chain TVL Calculator //Source: https://ftm.guru/docs //Source: https://docs.ftm.guru //Source: https://ftm.guru/rawdata/tvl ///interface ITVL { //Using Version = v7 ///function p_lpt_coin_usd(address lp) external view returns(uint256); ///function p_lpt_usd(address u,address lp) external view returns(uint256); ///function p_t_coin_usd(address lp) external view returns(uint256); ///function p_t_e_coin_usd(address lp) external view returns(uint256); ///function p_glp_usd(address m, uint256 md, bool mx, address t, uint256 td) external view returns(uint256); ///function tvlOf_glp_usd(address q, address m, uint256 md, bool mx, address t, uint256 td) external view returns(uint256); ///} interface IPriceGuru { function getAssetPrice(address) external view returns(uint); } // File: contracts/interfaces/IERC20.sol pragma solidity 0.8.9; interface IERC20 { function totalSupply() external view returns (uint256); function transfer(address recipient, uint amount) external returns (bool); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function balanceOf(address) external view returns (uint); function transferFrom(address sender, address recipient, uint amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); event Transfer(address indexed from, address indexed to, uint value); event Approval(address indexed owner, address indexed spender, uint value); } // File: contracts/interfaces/IVotingEscrow.sol pragma solidity 0.8.9; interface IVotingEscrow { struct Point { int128 bias; int128 slope; // # -dweight / dt uint256 ts; uint256 blk; // block } function token() external view returns (address); function team() external returns (address); function epoch() external view returns (uint); function point_history(uint loc) external view returns (Point memory); function user_point_history(uint tokenId, uint loc) external view returns (Point memory); function user_point_epoch(uint tokenId) external view returns (uint); function ownerOf(uint) external view returns (address); function isApprovedOrOwner(address, uint) external view returns (bool); function transferFrom(address, address, uint) external; function voting(uint tokenId) external; function abstain(uint tokenId) external; function attach(uint tokenId) external; function detach(uint tokenId) external; function checkpoint() external; function deposit_for(uint tokenId, uint value) external; function create_lock_for(uint, uint, address) external returns (uint); function balanceOfNFT(uint) external view returns (uint); function totalSupply() external view returns (uint); } // File: contracts/interfaces/IGauge.sol pragma solidity 0.8.9; interface IGauge { function notifyRewardAmount(address token, uint amount) external; function getReward(address account, address[] memory tokens) external; function claimFees() external returns (uint claimed0, uint claimed1); function left(address token) external view returns (uint); function isForPair() external view returns (bool); } // File: contracts/interfaces/IVoter.sol pragma solidity 0.8.9; interface IVoter { function _ve() external view returns (address); function governor() external view returns (address); function emergencyCouncil() external view returns (address); function attachTokenToGauge(uint _tokenId, address account) external; function detachTokenFromGauge(uint _tokenId, address account) external; function emitDeposit(uint _tokenId, address account, uint amount) external; function emitWithdraw(uint _tokenId, address account, uint amount) external; function isWhitelisted(address token) external view returns (bool); function notifyRewardAmount(uint amount) external; function distribute(address _gauge) external; } // File: contracts/interfaces/IEqual.sol pragma solidity 0.8.9; interface IEqual { function totalSupply() external view returns (uint); function balanceOf(address) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address, uint) external returns (bool); function transferFrom(address,address,uint) external returns (bool); function mint(address, uint) external returns (bool); function minter() external returns (address); } // File: contracts/libraries/Math.sol pragma solidity 0.8.9; library Math { function max(uint a, uint b) internal pure returns (uint) { return a >= b ? a : b; } function min(uint a, uint b) internal pure returns (uint) { return a < b ? a : b; } function sqrt(uint y) internal pure returns (uint z) { if (y > 3) { z = y; uint x = y / 2 + 1; while (x < z) { z = x; x = (y / x + x) / 2; } } else if (y != 0) { z = 1; } } function cbrt(uint256 n) internal pure returns (uint256) { unchecked { uint256 x = 0; for (uint256 y = 1 << 255; y > 0; y >>= 3) { x <<= 1; uint256 z = 3 * x * (x + 1) + 1; if (n / y >= z) { n -= y * z; x += 1; } } return x; }} } // File: @openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol // OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @dev Collection of functions related to the address type */ library AddressUpgradeable { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol // OpenZeppelin Contracts (last updated v4.7.0) (proxy/utils/Initializable.sol) pragma solidity ^0.8.2; /** * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. * * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be * reused. This mechanism prevents re-execution of each "step" but allows the creation of new initialization steps in * case an upgrade adds a module that needs to be initialized. * * For example: * * [.hljs-theme-light.nopadding] * ``` * contract MyToken is ERC20Upgradeable { * function initialize() initializer public { * __ERC20_init("MyToken", "MTK"); * } * } * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { * function initializeV2() reinitializer(2) public { * __ERC20Permit_init("MyToken"); * } * } * ``` * * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. * * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. * * [CAUTION] * ==== * Avoid leaving a contract uninitialized. * * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: * * [.hljs-theme-light.nopadding] * ``` * /// @custom:oz-upgrades-unsafe-allow constructor * constructor() { * _disableInitializers(); * } * ``` * ==== */ abstract contract Initializable { /** * @dev Indicates that the contract has been initialized. * @custom:oz-retyped-from bool */ uint8 private _initialized; /** * @dev Indicates that the contract is in the process of being initialized. */ bool private _initializing; /** * @dev Triggered when the contract has been initialized or reinitialized. */ event Initialized(uint8 version); /** * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope, * `onlyInitializing` functions can be used to initialize parent contracts. Equivalent to `reinitializer(1)`. */ modifier initializer() { bool isTopLevelCall = !_initializing; require( (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1), "Initializable: contract is already initialized" ); _initialized = 1; if (isTopLevelCall) { _initializing = true; } _; if (isTopLevelCall) { _initializing = false; emit Initialized(1); } } /** * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be * used to initialize parent contracts. * * `initializer` is equivalent to `reinitializer(1)`, so a reinitializer may be used after the original * initialization step. This is essential to configure modules that are added through upgrades and that require * initialization. * * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in * a contract, executing them in the right order is up to the developer or operator. */ modifier reinitializer(uint8 version) { require(!_initializing && _initialized < version, "Initializable: contract is already initialized"); _initialized = version; _initializing = true; _; _initializing = false; emit Initialized(version); } /** * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the * {initializer} and {reinitializer} modifiers, directly or indirectly. */ modifier onlyInitializing() { require(_initializing, "Initializable: contract is not initializing"); _; } /** * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call. * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized * to any version. It is recommended to use this to lock implementation contracts that are designed to be called * through proxies. */ function _disableInitializers() internal virtual { require(!_initializing, "Initializable: contract is initializing"); if (_initialized < type(uint8).max) { _initialized = type(uint8).max; emit Initialized(type(uint8).max); } } } // File: contracts/Minter.sol pragma solidity 0.8.9; /** * @title Minter * @notice codifies the minting rules as per ve(3,3), abstracted from the token to support * any token that allows minting */ contract Minter is Initializable { /// @notice allows minting once per week (reset every Thursday 00:00 UTC) uint internal constant WEEK = 86400 * 7; uint internal constant PRECISION = 1000; uint internal constant LOCK = 86400 * 7 * 26; /// @notice max lock period 26 weeeks uint public TAIL_EMISSION; uint internal emission; uint internal numEpoch; IEqual public _equal; IVoter public _voter; IVotingEscrow public _ve; IPriceGuru public PriceGuru; /// @notice represents a starting weekly emission of 50K EQUAL (EQUAL has 18 decimals) uint public weekly; uint public active_period; address public owner; address public team; address public pendingTeam; address public treasury; uint public treasuryRate; /// @notice Gauge address for EQUAL/WFTM pair address public pool2; uint public pool2Rate; address public ms; mapping(uint256 => uint256) public dists; mapping(uint256 => uint256) public mints; mapping(uint256 => uint256) public price; /********************************************************************************************/ /*****************************************NON-STORAGE****************************************/ /********************************************************************************************/ /// NON-STORAGE event Mint( address indexed sender, uint weekly, uint circulating_supply, uint circulating_emission, uint balanceOf, uint treasuryEmissions, uint pool2Emissions, uint priceUSD ); event Withdrawal( address indexed recipient, uint amount ); /** * @dev initialize * @param __voter the voting & distribution system * @param __ve the ve(3,3) system that will be locked into */ function initialize( address __voter, address __ve, uint256 __weekly, IPriceGuru __pg ) public initializer { owner = msg.sender; team = msg.sender; ms = msg.sender; treasuryRate = 20; pool2Rate = 10; emission = 980; TAIL_EMISSION = 2; weekly = __weekly; _equal = IEqual(IVotingEscrow(__ve).token()); _voter = IVoter(__voter); _ve = IVotingEscrow(__ve); active_period = ((block.timestamp + (2 * WEEK)) / WEEK) * WEEK; PriceGuru = __pg; } /// @notice Inaugration Ceremony & Gifts function initialSetup( address[] memory claimants, uint[] memory amounts ) external { require(owner == msg.sender); uint _max; for (uint i = 0; i < claimants.length; i++) { _max += amounts[i]; } _equal.mint(address(this), _max); _equal.approve(address(_ve), type(uint).max); for (uint i = 0; i < claimants.length; i++) { _ve.create_lock_for(amounts[i], LOCK, claimants[i]); } owner = address(0); active_period = ((block.timestamp) / WEEK) * WEEK; // allow minter.update_period() to mint new emissions THIS Thursday } function setTeam(address _team) external { require(msg.sender == team, "not team"); pendingTeam = _team; } function acceptTeam() external { require(msg.sender == pendingTeam, "not pending team"); team = pendingTeam; } function setTreasury(address _treasury) external { require(msg.sender == team, "not team"); treasury = _treasury; } function setOwner(address _newo) external { require(msg.sender == team, "not team"); owner = _newo; } function setTreasuryRate(uint _treasuryRate) external { require(msg.sender == team, "not team"); require(_treasuryRate <= PRECISION, "rate too high"); treasuryRate = _treasuryRate; } function setPool2(address _pool2) external { require(msg.sender == team, "not team"); require(_pool2 != address(0), "zero address"); pool2 = _pool2; } /// @notice weekly emission takes the max of calculated (aka target) emission versus circulating tail end emission function weekly_emission() public view returns (uint) { if(numEpoch < 10) return calculate_emission(); else return Math.max(calculate_emission(), circulating_emission()); } /** * @notice emission calculation is 0.5% of available supply to mint adjusted * by circulating / total supply until EPOCH 104, 0.1% thereafter */ function calculate_emission() public view returns (uint) { return (weekly * emission) / PRECISION; } /// @notice calculates tail end (infinity) emissions as 0.2% of total supply function circulating_emission() public view returns (uint) { return (circulating_supply() * TAIL_EMISSION) / PRECISION; } /// @notice calculate circulating supply as total token supply - locked supply function circulating_supply() public view returns (uint) { return _equal.totalSupply() - _ve.totalSupply(); } // calculate inflation and adjust ve balances accordingly function calculate_growth(uint _minted) public view returns (uint) { uint _veTotal = _ve.totalSupply(); uint _equalTotal = _equal.totalSupply(); return (((((_minted * _veTotal) / _equalTotal) * _veTotal) / _equalTotal) * _veTotal) / _equalTotal / 2; } /// v1.5.2 : Helper view functions function epochNumber() public view returns (uint) { return(numEpoch); } function decayFactor() public view returns (uint) { return(emission); } /// @notice update period can only be called once per cycle (1 week) function update_period() external returns (uint) { uint _period = active_period; if (block.timestamp >= _period + WEEK && owner == address(0)) { // only trigger if new week _period = (block.timestamp / WEEK) * WEEK; active_period = _period; weekly = weekly_emission(); // uint _growth = calculate_growth(weekly); uint _treasuryEmissions = (treasuryRate * weekly) / PRECISION; uint _pool2Emissions = (pool2Rate * weekly) / PRECISION; uint _required = weekly + _treasuryEmissions + _pool2Emissions; uint _balanceOf = _equal.balanceOf(address(this)); if (_balanceOf < _required) { _equal.mint(address(this), _required - _balanceOf); } unchecked { ++numEpoch; } if (numEpoch == 104) emission = PRECISION - TAIL_EMISSION; price[ _period ] = PriceGuru.getAssetPrice( address(_equal) ); mints[ _period ] = _required - _balanceOf; dists[ _period ] = weekly; _equal.approve(address(_voter), weekly); _voter.notifyRewardAmount(weekly); { address _treasury = treasury; if(_treasury != address(0)) { require(_equal.transfer(_treasury, _treasuryEmissions)); } }{ address _pool2 = pool2; if(_pool2 != address(0)) { _equal.approve(_pool2, _pool2Emissions); IGauge(_pool2).notifyRewardAmount(address(_equal), _pool2Emissions); } } emit Mint(msg.sender, weekly, circulating_supply(), circulating_emission(), _balanceOf, _treasuryEmissions, _pool2Emissions, price[ _period ]); } return _period; } /// @notice withdraw remaining EQUAL tokens function withdrawEQUAL(address _recipient) external { require(msg.sender == team, "not team"); uint256 remaining = _equal.balanceOf(address(this)); require(remaining > 0, "No remaining tokens"); _equal.transfer(_recipient, remaining); // Emit withdrawal event emit Withdrawal(_recipient, remaining); } function reset() external { require(msg.sender == ms, "!ms"); team = ms; pendingTeam = ms; treasury = ms; } function setNewVoter(address _v) external { require(msg.sender == ms, "!ms"); _voter = IVoter(_v); } function setDecayFactor(uint _f) external { require(msg.sender == ms, "!ms"); emission = _f; require(weekly_emission() < circulating_supply() / 100, "too high!"); } function setGov(address _ms) external { require(msg.sender == ms, "!ms"); team = ms; pendingTeam = ms; treasury = ms; ms = _ms; } function setWeeklyEmissionOverride(uint w) external { require(msg.sender == ms, "!ms"); require(w > 3 * WEEK, "too low!"); require(w < circulating_supply() / 100, "too high!"); weekly = w; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"weekly","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"circulating_supply","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"circulating_emission","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"balanceOf","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"treasuryEmissions","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"pool2Emissions","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"priceUSD","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawal","type":"event"},{"inputs":[],"name":"PriceGuru","outputs":[{"internalType":"contract IPriceGuru","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TAIL_EMISSION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_equal","outputs":[{"internalType":"contract IEqual","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ve","outputs":[{"internalType":"contract IVotingEscrow","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_voter","outputs":[{"internalType":"contract IVoter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptTeam","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"active_period","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"calculate_emission","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minted","type":"uint256"}],"name":"calculate_growth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulating_emission","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulating_supply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decayFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"dists","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"epochNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"claimants","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"initialSetup","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"__voter","type":"address"},{"internalType":"address","name":"__ve","type":"address"},{"internalType":"uint256","name":"__weekly","type":"uint256"},{"internalType":"contract IPriceGuru","name":"__pg","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"mints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ms","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingTeam","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool2","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool2Rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_f","type":"uint256"}],"name":"setDecayFactor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_ms","type":"address"}],"name":"setGov","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_v","type":"address"}],"name":"setNewVoter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newo","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pool2","type":"address"}],"name":"setPool2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_team","type":"address"}],"name":"setTeam","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasury","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryRate","type":"uint256"}],"name":"setTreasuryRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"w","type":"uint256"}],"name":"setWeeklyEmissionOverride","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"team","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"update_period","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"weekly","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"weekly_emission","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"}],"name":"withdrawEQUAL","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50611d12806100206000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c8063a2e23a511161013b578063d0bf9c54116100b8578063e4b725161161007c578063e4b72516146104cf578063ed29fc11146104d8578063f0f44260146104e0578063f4145a83146104f3578063fc3fc039146104fb57600080fd5b8063d0bf9c5414610483578063d139960814610496578063d826f88f1461049f578063dc8999b4146104a7578063e038c75a146104c757600080fd5b8063be203094116100ff578063be2030941461042f578063c1425b4914610442578063cc24c80014610455578063cfad57a214610468578063cfc6c8ff1461047b57600080fd5b8063a2e23a51146103e5578063b1e6b8f7146103ee578063b5cc143a14610401578063b8c9059d14610409578063b941d3e01461041c57600080fd5b80633db9b42a116101c957806385f2aef21161018d57806385f2aef2146103865780638da5cb5b146103995780638dd598fb146103ac5780638e01fbfa146103bf578063a0b2d57f146103d257600080fd5b80633db9b42a1461031a57806359d46ffc1461032d57806361d027b3146103405780636350b2c2146103535780636698e28c1461037357600080fd5b806326a49e371161021057806326a49e37146102c357806326cfc17b146102e357806336acb1d5146102ec57806336d96faf146102ff5780633b1e371f1461030757600080fd5b8063095cf5c61461024d57806313af4035146102625780631c04530c146102755780631eebae80146102a557806320fb3016146102bb575b600080fd5b61026061025b36600461196d565b610504565b005b61026061027036600461196d565b610559565b600754610288906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6102ad6105a5565b60405190815260200161029c565b6002546102ad565b6102ad6102d136600461198a565b60146020526000908152604090205481565b6102ad60085481565b600454610288906001600160a01b031681565b6102ad6105ce565b61026061031536600461196d565b6105e3565b600554610288906001600160a01b031681565b600c54610288906001600160a01b031681565b600d54610288906001600160a01b031681565b6102ad61036136600461198a565b60136020526000908152604090205481565b610260610381366004611a79565b61062f565b600b54610288906001600160a01b031681565b600a54610288906001600160a01b031681565b600654610288906001600160a01b031681565b6102ad6103cd36600461198a565b6108c8565b601154610288906001600160a01b031681565b6102ad60015481565b6102606103fc36600461196d565b610a32565b610260610bf5565b61026061041736600461198a565b610c66565b600f54610288906001600160a01b031681565b61026061043d366004611b3b565b610ced565b61026061045036600461198a565b610f3a565b61026061046336600461196d565b610ffe565b61026061047636600461196d565b61108f565b6102ad6110ff565b61026061049136600461198a565b61112c565b6102ad60095481565b61026061119d565b6102ad6104b536600461198a565b60126020526000908152604090205481565b6102ad611200565b6102ad600e5481565b6102ad611301565b6102606104ee36600461196d565b6118f3565b6003546102ad565b6102ad60105481565b600b546001600160a01b031633146105375760405162461bcd60e51b815260040161052e90611b8e565b60405180910390fd5b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b600b546001600160a01b031633146105835760405162461bcd60e51b815260040161052e90611b8e565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b60006103e86001546105b5611200565b6105bf9190611bc6565b6105c99190611be5565b905090565b60006103e86002546008546105bf9190611bc6565b6011546001600160a01b0316331461060d5760405162461bcd60e51b815260040161052e90611c07565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b600a546001600160a01b0316331461064657600080fd5b6000805b835181101561068c5782818151811061066557610665611c24565b6020026020010151826106789190611c3a565b91508061068481611c52565b91505061064a565b50600480546040516340c10f1960e01b81523092810192909252602482018390526001600160a01b0316906340c10f1990604401602060405180830381600087803b1580156106da57600080fd5b505af11580156106ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107129190611c6d565b506004805460065460405163095ea7b360e01b81526001600160a01b03918216938101939093526000196024840152169063095ea7b390604401602060405180830381600087803b15801561076657600080fd5b505af115801561077a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079e9190611c6d565b5060005b83518110156108975760065483516001600160a01b039091169063d4e54c3b908590849081106107d4576107d4611c24565b602002602001015162eff1008785815181106107f2576107f2611c24565b60200260200101516040518463ffffffff1660e01b81526004016108329392919092835260208301919091526001600160a01b0316604082015260600190565b602060405180830381600087803b15801561084c57600080fd5b505af1158015610860573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108849190611c8f565b508061088f81611c52565b9150506107a2565b50600a80546001600160a01b031916905562093a806108b68142611be5565b6108c09190611bc6565b600955505050565b600080600660009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561091957600080fd5b505afa15801561092d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109519190611c8f565b90506000600460009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109a357600080fd5b505afa1580156109b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109db9190611c8f565b9050600281838181816109ee828b611bc6565b6109f89190611be5565b610a029190611bc6565b610a0c9190611be5565b610a169190611bc6565b610a209190611be5565b610a2a9190611be5565b949350505050565b600b546001600160a01b03163314610a5c5760405162461bcd60e51b815260040161052e90611b8e565b600480546040516370a0823160e01b815230928101929092526000916001600160a01b03909116906370a082319060240160206040518083038186803b158015610aa557600080fd5b505afa158015610ab9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610add9190611c8f565b905060008111610b255760405162461bcd60e51b81526020600482015260136024820152724e6f2072656d61696e696e6720746f6b656e7360681b604482015260640161052e565b6004805460405163a9059cbb60e01b81526001600160a01b03858116938201939093526024810184905291169063a9059cbb90604401602060405180830381600087803b158015610b7557600080fd5b505af1158015610b89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bad9190611c6d565b50816001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b6582604051610be991815260200190565b60405180910390a25050565b600c546001600160a01b03163314610c425760405162461bcd60e51b815260206004820152601060248201526f6e6f742070656e64696e67207465616d60801b604482015260640161052e565b600c54600b80546001600160a01b0319166001600160a01b03909216919091179055565b6011546001600160a01b03163314610c905760405162461bcd60e51b815260040161052e90611c07565b60028190556064610c9f611200565b610ca99190611be5565b610cb16110ff565b10610cea5760405162461bcd60e51b8152602060048201526009602482015268746f6f20686967682160b81b604482015260640161052e565b50565b600054610100900460ff1615808015610d0d5750600054600160ff909116105b80610d275750303b158015610d27575060005460ff166001145b610d8a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161052e565b6000805460ff191660011790558015610dad576000805461ff0019166101001790555b600a8054336001600160a01b031991821681178355600b8054831682179055601180549092161790556014600e556010556103d46002908155600155600883905560408051637e062a3560e11b815290516001600160a01b0386169163fc0c546a916004808301926020929190829003018186803b158015610e2e57600080fd5b505afa158015610e42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e669190611ca8565b600480546001600160a01b03199081166001600160a01b03938416179091556005805482168884161790556006805490911691861691909117905562093a8080610eb1816002611bc6565b610ebb9042611c3a565b610ec59190611be5565b610ecf9190611bc6565b600955600780546001600160a01b0319166001600160a01b0384161790558015610f33576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6011546001600160a01b03163314610f645760405162461bcd60e51b815260040161052e90611c07565b610f7262093a806003611bc6565b8111610fab5760405162461bcd60e51b8152602060048201526008602482015267746f6f206c6f772160c01b604482015260640161052e565b6064610fb5611200565b610fbf9190611be5565b8110610ff95760405162461bcd60e51b8152602060048201526009602482015268746f6f20686967682160b81b604482015260640161052e565b600855565b600b546001600160a01b031633146110285760405162461bcd60e51b815260040161052e90611b8e565b6001600160a01b03811661106d5760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b604482015260640161052e565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6011546001600160a01b031633146110b95760405162461bcd60e51b815260040161052e90611c07565b60118054600b80546001600160a01b03199081166001600160a01b03808516918217909355600c8054831682179055600d80548316909117905593169216919091179055565b6000600a6003541015611114576105c96105ce565b6105c961111f6105ce565b6111276105a5565b61193f565b600b546001600160a01b031633146111565760405162461bcd60e51b815260040161052e90611b8e565b6103e88111156111985760405162461bcd60e51b815260206004820152600d60248201526c0e4c2e8ca40e8dede40d0d2ced609b1b604482015260640161052e565b600e55565b6011546001600160a01b031633146111c75760405162461bcd60e51b815260040161052e90611c07565b601154600b80546001600160a01b039092166001600160a01b03199283168117909155600c8054831682179055600d8054909216179055565b600654604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b15801561124557600080fd5b505afa158015611259573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127d9190611c8f565b60048054604080516318160ddd60e01b815290516001600160a01b03909216926318160ddd928282019260209290829003018186803b1580156112bf57600080fd5b505afa1580156112d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f79190611c8f565b6105c99190611cc5565b60095460009061131462093a8082611c3a565b421015801561132c5750600a546001600160a01b0316155b156118ee5762093a8061133f8142611be5565b6113499190611bc6565b600981905590506113586110ff565b6008819055600e546000916103e8916113719190611bc6565b61137b9190611be5565b905060006103e86008546010546113929190611bc6565b61139c9190611be5565b9050600081836008546113af9190611c3a565b6113b99190611c3a565b600480546040516370a0823160e01b815230928101929092529192506000916001600160a01b0316906370a082319060240160206040518083038186803b15801561140357600080fd5b505afa158015611417573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143b9190611c8f565b9050818110156114e1576004546001600160a01b03166340c10f19306114618486611cc5565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156114a757600080fd5b505af11580156114bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114df9190611c6d565b505b60038054600101908190556068141561150757600154611503906103e8611cc5565b6002555b6007546004805460405163b3596f0760e01b81526001600160a01b03918216928101929092529091169063b3596f079060240160206040518083038186803b15801561155257600080fd5b505afa158015611566573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158a9190611c8f565b6000868152601460205260409020556115a38183611cc5565b60008681526013602090815260408083209390935560085460129091529082902081905560048054600554935163095ea7b360e01b81526001600160a01b0394851692810192909252602482019290925291169063095ea7b390604401602060405180830381600087803b15801561161a57600080fd5b505af115801561162e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116529190611c6d565b50600554600854604051633c6b16ab60e01b81526001600160a01b0390921691633c6b16ab916116889160040190815260200190565b600060405180830381600087803b1580156116a257600080fd5b505af11580156116b6573d6000803e3d6000fd5b5050600d546001600160a01b0316915050801561175e576004805460405163a9059cbb60e01b81526001600160a01b03848116938201939093526024810188905291169063a9059cbb90604401602060405180830381600087803b15801561171d57600080fd5b505af1158015611731573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117559190611c6d565b61175e57600080fd5b50600f546001600160a01b03168015611863576004805460405163095ea7b360e01b81526001600160a01b03848116938201939093526024810187905291169063095ea7b390604401602060405180830381600087803b1580156117c157600080fd5b505af11580156117d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f99190611c6d565b506004805460405163b66503cf60e01b81526001600160a01b03918216928101929092526024820186905282169063b66503cf90604401600060405180830381600087803b15801561184a57600080fd5b505af115801561185e573d6000803e3d6000fd5b505050505b50336001600160a01b03167fe3d468f2995a19ebdbeedd773bcf17a3159f372a76cd0e745a358a21ba5e057360085461189a611200565b6118a26105a5565b60008a81526014602090815260409182902054825195865290850193909352830152606082018590526080820188905260a0820187905260c082015260e00160405180910390a2505050505b919050565b600b546001600160a01b0316331461191d5760405162461bcd60e51b815260040161052e90611b8e565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b60008183101561194f5781611951565b825b9392505050565b6001600160a01b0381168114610cea57600080fd5b60006020828403121561197f57600080fd5b813561195181611958565b60006020828403121561199c57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156119e2576119e26119a3565b604052919050565b600067ffffffffffffffff821115611a0457611a046119a3565b5060051b60200190565b600082601f830112611a1f57600080fd5b81356020611a34611a2f836119ea565b6119b9565b82815260059290921b84018101918181019086841115611a5357600080fd5b8286015b84811015611a6e5780358352918301918301611a57565b509695505050505050565b60008060408385031215611a8c57600080fd5b823567ffffffffffffffff80821115611aa457600080fd5b818501915085601f830112611ab857600080fd5b81356020611ac8611a2f836119ea565b82815260059290921b84018101918181019089841115611ae757600080fd5b948201945b83861015611b0e578535611aff81611958565b82529482019490820190611aec565b96505086013592505080821115611b2457600080fd5b50611b3185828601611a0e565b9150509250929050565b60008060008060808587031215611b5157600080fd5b8435611b5c81611958565b93506020850135611b6c81611958565b9250604085013591506060850135611b8381611958565b939692955090935050565b6020808252600890820152676e6f74207465616d60c01b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615611be057611be0611bb0565b500290565b600082611c0257634e487b7160e01b600052601260045260246000fd5b500490565b602080825260039082015262216d7360e81b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008219821115611c4d57611c4d611bb0565b500190565b6000600019821415611c6657611c66611bb0565b5060010190565b600060208284031215611c7f57600080fd5b8151801515811461195157600080fd5b600060208284031215611ca157600080fd5b5051919050565b600060208284031215611cba57600080fd5b815161195181611958565b600082821015611cd757611cd7611bb0565b50039056fea264697066735822122022661e07e926c3f9f0b699f2b95d7c3636ff9a53f6f163eb8d1655bbf1e4d73d64736f6c63430008090033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102485760003560e01c8063a2e23a511161013b578063d0bf9c54116100b8578063e4b725161161007c578063e4b72516146104cf578063ed29fc11146104d8578063f0f44260146104e0578063f4145a83146104f3578063fc3fc039146104fb57600080fd5b8063d0bf9c5414610483578063d139960814610496578063d826f88f1461049f578063dc8999b4146104a7578063e038c75a146104c757600080fd5b8063be203094116100ff578063be2030941461042f578063c1425b4914610442578063cc24c80014610455578063cfad57a214610468578063cfc6c8ff1461047b57600080fd5b8063a2e23a51146103e5578063b1e6b8f7146103ee578063b5cc143a14610401578063b8c9059d14610409578063b941d3e01461041c57600080fd5b80633db9b42a116101c957806385f2aef21161018d57806385f2aef2146103865780638da5cb5b146103995780638dd598fb146103ac5780638e01fbfa146103bf578063a0b2d57f146103d257600080fd5b80633db9b42a1461031a57806359d46ffc1461032d57806361d027b3146103405780636350b2c2146103535780636698e28c1461037357600080fd5b806326a49e371161021057806326a49e37146102c357806326cfc17b146102e357806336acb1d5146102ec57806336d96faf146102ff5780633b1e371f1461030757600080fd5b8063095cf5c61461024d57806313af4035146102625780631c04530c146102755780631eebae80146102a557806320fb3016146102bb575b600080fd5b61026061025b36600461196d565b610504565b005b61026061027036600461196d565b610559565b600754610288906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6102ad6105a5565b60405190815260200161029c565b6002546102ad565b6102ad6102d136600461198a565b60146020526000908152604090205481565b6102ad60085481565b600454610288906001600160a01b031681565b6102ad6105ce565b61026061031536600461196d565b6105e3565b600554610288906001600160a01b031681565b600c54610288906001600160a01b031681565b600d54610288906001600160a01b031681565b6102ad61036136600461198a565b60136020526000908152604090205481565b610260610381366004611a79565b61062f565b600b54610288906001600160a01b031681565b600a54610288906001600160a01b031681565b600654610288906001600160a01b031681565b6102ad6103cd36600461198a565b6108c8565b601154610288906001600160a01b031681565b6102ad60015481565b6102606103fc36600461196d565b610a32565b610260610bf5565b61026061041736600461198a565b610c66565b600f54610288906001600160a01b031681565b61026061043d366004611b3b565b610ced565b61026061045036600461198a565b610f3a565b61026061046336600461196d565b610ffe565b61026061047636600461196d565b61108f565b6102ad6110ff565b61026061049136600461198a565b61112c565b6102ad60095481565b61026061119d565b6102ad6104b536600461198a565b60126020526000908152604090205481565b6102ad611200565b6102ad600e5481565b6102ad611301565b6102606104ee36600461196d565b6118f3565b6003546102ad565b6102ad60105481565b600b546001600160a01b031633146105375760405162461bcd60e51b815260040161052e90611b8e565b60405180910390fd5b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b600b546001600160a01b031633146105835760405162461bcd60e51b815260040161052e90611b8e565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b60006103e86001546105b5611200565b6105bf9190611bc6565b6105c99190611be5565b905090565b60006103e86002546008546105bf9190611bc6565b6011546001600160a01b0316331461060d5760405162461bcd60e51b815260040161052e90611c07565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b600a546001600160a01b0316331461064657600080fd5b6000805b835181101561068c5782818151811061066557610665611c24565b6020026020010151826106789190611c3a565b91508061068481611c52565b91505061064a565b50600480546040516340c10f1960e01b81523092810192909252602482018390526001600160a01b0316906340c10f1990604401602060405180830381600087803b1580156106da57600080fd5b505af11580156106ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107129190611c6d565b506004805460065460405163095ea7b360e01b81526001600160a01b03918216938101939093526000196024840152169063095ea7b390604401602060405180830381600087803b15801561076657600080fd5b505af115801561077a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079e9190611c6d565b5060005b83518110156108975760065483516001600160a01b039091169063d4e54c3b908590849081106107d4576107d4611c24565b602002602001015162eff1008785815181106107f2576107f2611c24565b60200260200101516040518463ffffffff1660e01b81526004016108329392919092835260208301919091526001600160a01b0316604082015260600190565b602060405180830381600087803b15801561084c57600080fd5b505af1158015610860573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108849190611c8f565b508061088f81611c52565b9150506107a2565b50600a80546001600160a01b031916905562093a806108b68142611be5565b6108c09190611bc6565b600955505050565b600080600660009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561091957600080fd5b505afa15801561092d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109519190611c8f565b90506000600460009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156109a357600080fd5b505afa1580156109b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109db9190611c8f565b9050600281838181816109ee828b611bc6565b6109f89190611be5565b610a029190611bc6565b610a0c9190611be5565b610a169190611bc6565b610a209190611be5565b610a2a9190611be5565b949350505050565b600b546001600160a01b03163314610a5c5760405162461bcd60e51b815260040161052e90611b8e565b600480546040516370a0823160e01b815230928101929092526000916001600160a01b03909116906370a082319060240160206040518083038186803b158015610aa557600080fd5b505afa158015610ab9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610add9190611c8f565b905060008111610b255760405162461bcd60e51b81526020600482015260136024820152724e6f2072656d61696e696e6720746f6b656e7360681b604482015260640161052e565b6004805460405163a9059cbb60e01b81526001600160a01b03858116938201939093526024810184905291169063a9059cbb90604401602060405180830381600087803b158015610b7557600080fd5b505af1158015610b89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bad9190611c6d565b50816001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b6582604051610be991815260200190565b60405180910390a25050565b600c546001600160a01b03163314610c425760405162461bcd60e51b815260206004820152601060248201526f6e6f742070656e64696e67207465616d60801b604482015260640161052e565b600c54600b80546001600160a01b0319166001600160a01b03909216919091179055565b6011546001600160a01b03163314610c905760405162461bcd60e51b815260040161052e90611c07565b60028190556064610c9f611200565b610ca99190611be5565b610cb16110ff565b10610cea5760405162461bcd60e51b8152602060048201526009602482015268746f6f20686967682160b81b604482015260640161052e565b50565b600054610100900460ff1615808015610d0d5750600054600160ff909116105b80610d275750303b158015610d27575060005460ff166001145b610d8a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161052e565b6000805460ff191660011790558015610dad576000805461ff0019166101001790555b600a8054336001600160a01b031991821681178355600b8054831682179055601180549092161790556014600e556010556103d46002908155600155600883905560408051637e062a3560e11b815290516001600160a01b0386169163fc0c546a916004808301926020929190829003018186803b158015610e2e57600080fd5b505afa158015610e42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e669190611ca8565b600480546001600160a01b03199081166001600160a01b03938416179091556005805482168884161790556006805490911691861691909117905562093a8080610eb1816002611bc6565b610ebb9042611c3a565b610ec59190611be5565b610ecf9190611bc6565b600955600780546001600160a01b0319166001600160a01b0384161790558015610f33576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6011546001600160a01b03163314610f645760405162461bcd60e51b815260040161052e90611c07565b610f7262093a806003611bc6565b8111610fab5760405162461bcd60e51b8152602060048201526008602482015267746f6f206c6f772160c01b604482015260640161052e565b6064610fb5611200565b610fbf9190611be5565b8110610ff95760405162461bcd60e51b8152602060048201526009602482015268746f6f20686967682160b81b604482015260640161052e565b600855565b600b546001600160a01b031633146110285760405162461bcd60e51b815260040161052e90611b8e565b6001600160a01b03811661106d5760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b604482015260640161052e565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6011546001600160a01b031633146110b95760405162461bcd60e51b815260040161052e90611c07565b60118054600b80546001600160a01b03199081166001600160a01b03808516918217909355600c8054831682179055600d80548316909117905593169216919091179055565b6000600a6003541015611114576105c96105ce565b6105c961111f6105ce565b6111276105a5565b61193f565b600b546001600160a01b031633146111565760405162461bcd60e51b815260040161052e90611b8e565b6103e88111156111985760405162461bcd60e51b815260206004820152600d60248201526c0e4c2e8ca40e8dede40d0d2ced609b1b604482015260640161052e565b600e55565b6011546001600160a01b031633146111c75760405162461bcd60e51b815260040161052e90611c07565b601154600b80546001600160a01b039092166001600160a01b03199283168117909155600c8054831682179055600d8054909216179055565b600654604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b15801561124557600080fd5b505afa158015611259573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127d9190611c8f565b60048054604080516318160ddd60e01b815290516001600160a01b03909216926318160ddd928282019260209290829003018186803b1580156112bf57600080fd5b505afa1580156112d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f79190611c8f565b6105c99190611cc5565b60095460009061131462093a8082611c3a565b421015801561132c5750600a546001600160a01b0316155b156118ee5762093a8061133f8142611be5565b6113499190611bc6565b600981905590506113586110ff565b6008819055600e546000916103e8916113719190611bc6565b61137b9190611be5565b905060006103e86008546010546113929190611bc6565b61139c9190611be5565b9050600081836008546113af9190611c3a565b6113b99190611c3a565b600480546040516370a0823160e01b815230928101929092529192506000916001600160a01b0316906370a082319060240160206040518083038186803b15801561140357600080fd5b505afa158015611417573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143b9190611c8f565b9050818110156114e1576004546001600160a01b03166340c10f19306114618486611cc5565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156114a757600080fd5b505af11580156114bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114df9190611c6d565b505b60038054600101908190556068141561150757600154611503906103e8611cc5565b6002555b6007546004805460405163b3596f0760e01b81526001600160a01b03918216928101929092529091169063b3596f079060240160206040518083038186803b15801561155257600080fd5b505afa158015611566573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158a9190611c8f565b6000868152601460205260409020556115a38183611cc5565b60008681526013602090815260408083209390935560085460129091529082902081905560048054600554935163095ea7b360e01b81526001600160a01b0394851692810192909252602482019290925291169063095ea7b390604401602060405180830381600087803b15801561161a57600080fd5b505af115801561162e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116529190611c6d565b50600554600854604051633c6b16ab60e01b81526001600160a01b0390921691633c6b16ab916116889160040190815260200190565b600060405180830381600087803b1580156116a257600080fd5b505af11580156116b6573d6000803e3d6000fd5b5050600d546001600160a01b0316915050801561175e576004805460405163a9059cbb60e01b81526001600160a01b03848116938201939093526024810188905291169063a9059cbb90604401602060405180830381600087803b15801561171d57600080fd5b505af1158015611731573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117559190611c6d565b61175e57600080fd5b50600f546001600160a01b03168015611863576004805460405163095ea7b360e01b81526001600160a01b03848116938201939093526024810187905291169063095ea7b390604401602060405180830381600087803b1580156117c157600080fd5b505af11580156117d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f99190611c6d565b506004805460405163b66503cf60e01b81526001600160a01b03918216928101929092526024820186905282169063b66503cf90604401600060405180830381600087803b15801561184a57600080fd5b505af115801561185e573d6000803e3d6000fd5b505050505b50336001600160a01b03167fe3d468f2995a19ebdbeedd773bcf17a3159f372a76cd0e745a358a21ba5e057360085461189a611200565b6118a26105a5565b60008a81526014602090815260409182902054825195865290850193909352830152606082018590526080820188905260a0820187905260c082015260e00160405180910390a2505050505b919050565b600b546001600160a01b0316331461191d5760405162461bcd60e51b815260040161052e90611b8e565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b60008183101561194f5781611951565b825b9392505050565b6001600160a01b0381168114610cea57600080fd5b60006020828403121561197f57600080fd5b813561195181611958565b60006020828403121561199c57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156119e2576119e26119a3565b604052919050565b600067ffffffffffffffff821115611a0457611a046119a3565b5060051b60200190565b600082601f830112611a1f57600080fd5b81356020611a34611a2f836119ea565b6119b9565b82815260059290921b84018101918181019086841115611a5357600080fd5b8286015b84811015611a6e5780358352918301918301611a57565b509695505050505050565b60008060408385031215611a8c57600080fd5b823567ffffffffffffffff80821115611aa457600080fd5b818501915085601f830112611ab857600080fd5b81356020611ac8611a2f836119ea565b82815260059290921b84018101918181019089841115611ae757600080fd5b948201945b83861015611b0e578535611aff81611958565b82529482019490820190611aec565b96505086013592505080821115611b2457600080fd5b50611b3185828601611a0e565b9150509250929050565b60008060008060808587031215611b5157600080fd5b8435611b5c81611958565b93506020850135611b6c81611958565b9250604085013591506060850135611b8381611958565b939692955090935050565b6020808252600890820152676e6f74207465616d60c01b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615611be057611be0611bb0565b500290565b600082611c0257634e487b7160e01b600052601260045260246000fd5b500490565b602080825260039082015262216d7360e81b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008219821115611c4d57611c4d611bb0565b500190565b6000600019821415611c6657611c66611bb0565b5060010190565b600060208284031215611c7f57600080fd5b8151801515811461195157600080fd5b600060208284031215611ca157600080fd5b5051919050565b600060208284031215611cba57600080fd5b815161195181611958565b600082821015611cd757611cd7611bb0565b50039056fea264697066735822122022661e07e926c3f9f0b699f2b95d7c3636ff9a53f6f163eb8d1655bbf1e4d73d64736f6c63430008090033
Deployed Bytecode Sourcemap
20830:9174:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24056:129;;;;;;:::i;:::-;;:::i;:::-;;24480:124;;;;;;:::i;:::-;;:::i;21312:27::-;;;;;-1:-1:-1;;;;;21312:27:0;;;;;;-1:-1:-1;;;;;583:32:1;;;565:51;;553:2;538:18;21312:27:0;;;;;;;;25722:135;;;:::i;:::-;;;773:25:1;;;761:2;746:18;25722:135:0;627:177:1;26623:85:0;26691:8;;26623:85;;21878:40;;;;;;:::i;:::-;;;;;;;;;;;;;;21440:18;;;;;;21227:20;;;;;-1:-1:-1;;;;;21227:20:0;;;25518:114;;;:::i;29255:124::-;;;;;;:::i;:::-;;:::i;21254:20::-;;;;;-1:-1:-1;;;;;21254:20:0;;;21552:26;;;;;-1:-1:-1;;;;;21552:26:0;;;21587:23;;;;;-1:-1:-1;;;;;21587:23:0;;;21831:40;;;;;;:::i;:::-;;;;;;;;;;;;;;23410:638;;;;;;:::i;:::-;;:::i;21526:19::-;;;;;-1:-1:-1;;;;;21526:19:0;;;21499:20;;;;;-1:-1:-1;;;;;21499:20:0;;;21281:24;;;;;-1:-1:-1;;;;;21281:24:0;;;26143:339;;;;;;:::i;:::-;;:::i;21758:17::-;;;;;-1:-1:-1;;;;;21758:17:0;;;21133:25;;;;;;28731:360;;;;;;:::i;:::-;;:::i;24193:133::-;;;:::i;29387:197::-;;;;;;:::i;:::-;;:::i;21701:20::-;;;;;-1:-1:-1;;;;;21701:20:0;;;22757:599;;;;;;:::i;:::-;;:::i;29779:222::-;;;;;;:::i;:::-;;:::i;24834:182::-;;;;;;:::i;:::-;;:::i;29592:179::-;;;;;;:::i;:::-;;:::i;25144:195::-;;;:::i;24612:214::-;;;;;;:::i;:::-;;:::i;21465:25::-;;;;;;29099:148;;;:::i;21784:40::-;;;;;;:::i;:::-;;;;;;;;;;;;;;25949:123;;;:::i;21617:24::-;;;;;;26790:1884;;;:::i;24334:138::-;;;;;;:::i;:::-;;:::i;26530:85::-;26598:8;;26530:85;;21728:21;;;;;;24056:129;24130:4;;-1:-1:-1;;;;;24130:4:0;24116:10;:18;24108:39;;;;-1:-1:-1;;;24108:39:0;;;;;;;:::i;:::-;;;;;;;;;24158:11;:19;;-1:-1:-1;;;;;;24158:19:0;-1:-1:-1;;;;;24158:19:0;;;;;;;;;;24056:129::o;24480:124::-;24555:4;;-1:-1:-1;;;;;24555:4:0;24541:10;:18;24533:39;;;;-1:-1:-1;;;24533:39:0;;;;;;;:::i;:::-;24583:5;:13;;-1:-1:-1;;;;;;24583:13:0;-1:-1:-1;;;;;24583:13:0;;;;;;;;;;24480:124::o;25722:135::-;25775:4;21030;25823:13;;25800:20;:18;:20::i;:::-;:36;;;;:::i;:::-;25799:50;;;;:::i;:::-;25792:57;;25722:135;:::o;25518:114::-;25569:4;21030;25603:8;;25594:6;;:17;;;;:::i;29255:124::-;29331:2;;-1:-1:-1;;;;;29331:2:0;29317:10;:16;29309:32;;;;-1:-1:-1;;;29309:32:0;;;;;;;:::i;:::-;29352:6;:19;;-1:-1:-1;;;;;;29352:19:0;-1:-1:-1;;;;;29352:19:0;;;;;;;;;;29255:124::o;23410:638::-;23536:5;;-1:-1:-1;;;;;23536:5:0;23545:10;23536:19;23528:28;;;;;;23567:9;;23587:67;23608:9;:16;23604:1;:20;23587:67;;;23641:7;23649:1;23641:10;;;;;;;;:::i;:::-;;;;;;;23633:18;;;;;:::i;:::-;;-1:-1:-1;23626:3:0;;;;:::i;:::-;;;;23587:67;;;-1:-1:-1;23664:6:0;;;:32;;-1:-1:-1;;;23664:32:0;;23684:4;23664:32;;;6755:51:1;;;;6822:18;;;6815:34;;;-1:-1:-1;;;;;23664:6:0;;:11;;6728:18:1;;23664:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;23707:6:0;;;23730:3;;23707:44;;-1:-1:-1;;;23707:44:0;;-1:-1:-1;;;;;23730:3:0;;;23707:44;;;6755:51:1;;;;-1:-1:-1;;6822:18:1;;;6815:34;23707:6:0;;:14;;6728:18:1;;23707:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23767:6;23762:122;23783:9;:16;23779:1;:20;23762:122;;;23821:3;;23841:10;;-1:-1:-1;;;;;23821:3:0;;;;:19;;23841:7;;23849:1;;23841:10;;;;;;:::i;:::-;;;;;;;21071:14;23859:9;23869:1;23859:12;;;;;;;;:::i;:::-;;;;;;;23821:51;;;;;;;;;;;;;;;;7344:25:1;;;7400:2;7385:18;;7378:34;;;;-1:-1:-1;;;;;7448:32:1;7443:2;7428:18;;7421:60;7332:2;7317:18;;7142:345;23821:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;23801:3:0;;;;:::i;:::-;;;;23762:122;;;-1:-1:-1;23894:5:0;:18;;-1:-1:-1;;;;;;23894:18:0;;;20979:9;23940:24;20979:9;23941:15;23940:24;:::i;:::-;23939:33;;;;:::i;:::-;23923:13;:49;-1:-1:-1;;;23410:638:0:o;26143:339::-;26204:4;26221:13;26237:3;;;;;;;;;-1:-1:-1;;;;;26237:3:0;-1:-1:-1;;;;;26237:15:0;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26221:33;;26265:16;26284:6;;;;;;;;;-1:-1:-1;;;;;26284:6:0;-1:-1:-1;;;;;26284:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26265:39;-1:-1:-1;26473:1:0;26265:39;26421:8;26265:39;26421:8;26265:39;26340:18;26421:8;26340:7;:18;:::i;:::-;26339:34;;;;:::i;:::-;26338:47;;;;:::i;:::-;26337:63;;;;:::i;:::-;26336:93;;;;:::i;:::-;26335:122;;;;:::i;:::-;:139;;;;:::i;:::-;26315:159;26143:339;-1:-1:-1;;;;26143:339:0:o;28731:360::-;28816:4;;-1:-1:-1;;;;;28816:4:0;28802:10;:18;28794:39;;;;-1:-1:-1;;;28794:39:0;;;;;;;:::i;:::-;28864:6;;;:31;;-1:-1:-1;;;28864:31:0;;28889:4;28864:31;;;565:51:1;;;;28844:17:0;;-1:-1:-1;;;;;28864:6:0;;;;:16;;538:18:1;;28864:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28844:51;;28926:1;28914:9;:13;28906:45;;;;-1:-1:-1;;;28906:45:0;;7883:2:1;28906:45:0;;;7865:21:1;7922:2;7902:18;;;7895:30;-1:-1:-1;;;7941:18:1;;;7934:49;8000:18;;28906:45:0;7681:343:1;28906:45:0;28962:6;;;:38;;-1:-1:-1;;;28962:38:0;;-1:-1:-1;;;;;6773:32:1;;;28962:38:0;;;6755:51:1;;;;6822:18;;;6815:34;;;28962:6:0;;;:15;;6728:18:1;;28962:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29061:10;-1:-1:-1;;;;;29050:33:0;;29073:9;29050:33;;;;773:25:1;;761:2;746:18;;627:177;29050:33:0;;;;;;;;28783:308;28731:360;:::o;24193:133::-;24257:11;;-1:-1:-1;;;;;24257:11:0;24243:10;:25;24235:54;;;;-1:-1:-1;;;24235:54:0;;8231:2:1;24235:54:0;;;8213:21:1;8270:2;8250:18;;;8243:30;-1:-1:-1;;;8289:18:1;;;8282:46;8345:18;;24235:54:0;8029:340:1;24235:54:0;24307:11;;24300:4;:18;;-1:-1:-1;;;;;;24300:18:0;-1:-1:-1;;;;;24307:11:0;;;24300:18;;;;;;24193:133::o;29387:197::-;29463:2;;-1:-1:-1;;;;;29463:2:0;29449:10;:16;29441:32;;;;-1:-1:-1;;;29441:32:0;;;;;;;:::i;:::-;29484:8;:13;;;29559:3;29536:20;:18;:20::i;:::-;:26;;;;:::i;:::-;29516:17;:15;:17::i;:::-;:46;29508:68;;;;-1:-1:-1;;;29508:68:0;;8576:2:1;29508:68:0;;;8558:21:1;8615:1;8595:18;;;8588:29;-1:-1:-1;;;8633:18:1;;;8626:39;8682:18;;29508:68:0;8374:332:1;29508:68:0;29387:197;:::o;22757:599::-;17982:19;18005:13;;;;;;18004:14;;18052:34;;;;-1:-1:-1;18070:12:0;;18085:1;18070:12;;;;:16;18052:34;18051:108;;;-1:-1:-1;18131:4:0;8744:19;:23;;;18092:66;;-1:-1:-1;18141:12:0;;;;;:17;18092:66;18029:204;;;;-1:-1:-1;;;18029:204:0;;8913:2:1;18029:204:0;;;8895:21:1;8952:2;8932:18;;;8925:30;8991:34;8971:18;;;8964:62;-1:-1:-1;;;9042:18:1;;;9035:44;9096:19;;18029:204:0;8711:410:1;18029:204:0;18244:12;:16;;-1:-1:-1;;18244:16:0;18259:1;18244:16;;;18271:67;;;;18306:13;:20;;-1:-1:-1;;18306:20:0;;;;;18271:67;22916:5:::1;:18:::0;;22924:10:::1;-1:-1:-1::0;;;;;;22916:18:0;;::::1;::::0;::::1;::::0;;22945:4:::1;:17:::0;;;::::1;::::0;::::1;::::0;;22973:2:::1;:15:::0;;;;::::1;;::::0;;23014:2:::1;22999:12;:17:::0;23027:9:::1;:14:::0;23063:3:::1;23052:8;:14:::0;;;-1:-1:-1;23077:17:0;-1:-1:-1;23105:17:0;;;23149:27:::1;::::0;;-1:-1:-1;;;23149:27:0;;;;-1:-1:-1;;;;;23149:25:0;::::1;::::0;::::1;::::0;:27:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:25;:27;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23133:6;:44:::0;;-1:-1:-1;;;;;;23133:44:0;;::::1;-1:-1:-1::0;;;;;23133:44:0;;::::1;;::::0;;;23188:6:::1;:24:::0;;;::::1;::::0;;::::1;;::::0;;23223:3:::1;:25:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;20979:9:::1;::::0;23296:8:::1;20979:9:::0;23296:1:::1;:8;:::i;:::-;23277:28;::::0;:15:::1;:28;:::i;:::-;23276:37;;;;:::i;:::-;23275:46;;;;:::i;:::-;23259:13;:62:::0;23332:9:::1;:16:::0;;-1:-1:-1;;;;;;23332:16:0::1;-1:-1:-1::0;;;;;23332:16:0;::::1;;::::0;;18360:102;;;;18411:5;18395:21;;-1:-1:-1;;18395:21:0;;;18436:14;;-1:-1:-1;9534:36:1;;18436:14:0;;9522:2:1;9507:18;18436:14:0;;;;;;;18360:102;17971:498;22757:599;;;;:::o;29779:222::-;29864:2;;-1:-1:-1;;;;;29864:2:0;29850:10;:16;29842:32;;;;-1:-1:-1;;;29842:32:0;;;;;;;:::i;:::-;29897:8;20979:9;29897:1;:8;:::i;:::-;29893:1;:12;29885:33;;;;-1:-1:-1;;;29885:33:0;;9783:2:1;29885:33:0;;;9765:21:1;9822:1;9802:18;;;9795:29;-1:-1:-1;;;9840:18:1;;;9833:38;9888:18;;29885:33:0;9581:331:1;29885:33:0;29964:3;29941:20;:18;:20::i;:::-;:26;;;;:::i;:::-;29937:1;:30;29929:52;;;;-1:-1:-1;;;29929:52:0;;8576:2:1;29929:52:0;;;8558:21:1;8615:1;8595:18;;;8588:29;-1:-1:-1;;;8633:18:1;;;8626:39;8682:18;;29929:52:0;8374:332:1;29929:52:0;29986:6;:10;29779:222::o;24834:182::-;24910:4;;-1:-1:-1;;;;;24910:4:0;24896:10;:18;24888:39;;;;-1:-1:-1;;;24888:39:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24946:20:0;;24938:45;;;;-1:-1:-1;;;24938:45:0;;10119:2:1;24938:45:0;;;10101:21:1;10158:2;10138:18;;;10131:30;-1:-1:-1;;;10177:18:1;;;10170:42;10229:18;;24938:45:0;9917:336:1;24938:45:0;24994:5;:14;;-1:-1:-1;;;;;;24994:14:0;-1:-1:-1;;;;;24994:14:0;;;;;;;;;;24834:182::o;29592:179::-;29663:2;;-1:-1:-1;;;;;29663:2:0;29649:10;:16;29641:32;;;;-1:-1:-1;;;29641:32:0;;;;;;;:::i;:::-;29691:2;;;29684:4;:9;;-1:-1:-1;;;;;;29684:9:0;;;-1:-1:-1;;;;;29691:2:0;;;29684:9;;;;;;29704:11;:16;;;;;;;;29731:8;:13;;;;;;;;;29755:8;;;;;;;;;;29592:179::o;25144:195::-;25192:4;25223:2;25212:8;;:13;25209:122;;;25234:20;:18;:20::i;25209:122::-;25277:54;25286:20;:18;:20::i;:::-;25308:22;:20;:22::i;:::-;25277:8;:54::i;24612:214::-;24699:4;;-1:-1:-1;;;;;24699:4:0;24685:10;:18;24677:39;;;;-1:-1:-1;;;24677:39:0;;;;;;;:::i;:::-;21030:4;24735:13;:26;;24727:52;;;;-1:-1:-1;;;24727:52:0;;10460:2:1;24727:52:0;;;10442:21:1;10499:2;10479:18;;;10472:30;-1:-1:-1;;;10518:18:1;;;10511:43;10571:18;;24727:52:0;10258:337:1;24727:52:0;24790:12;:28;24612:214::o;29099:148::-;29158:2;;-1:-1:-1;;;;;29158:2:0;29144:10;:16;29136:32;;;;-1:-1:-1;;;29136:32:0;;;;;;;:::i;:::-;29186:2;;29179:4;:9;;-1:-1:-1;;;;;29186:2:0;;;-1:-1:-1;;;;;;29179:9:0;;;;;;;;29199:11;:16;;;;;;;;29226:8;:13;;;;;;;;29099:148::o;25949:123::-;26047:3;;:17;;;-1:-1:-1;;;26047:17:0;;;;26000:4;;-1:-1:-1;;;;;26047:3:0;;:15;;:17;;;;;;;;;;;;;;:3;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26024:6;;;:20;;;-1:-1:-1;;;26024:20:0;;;;-1:-1:-1;;;;;26024:6:0;;;;:18;;:20;;;;;;;;;;;;:6;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;;;;:::i;26790:1884::-;26865:13;;26833:4;;26912:14;20979:9;26865:13;26912:14;:::i;:::-;26893:15;:33;;:56;;;;-1:-1:-1;26930:5:0;;-1:-1:-1;;;;;26930:5:0;:19;26893:56;26889:1753;;;20979:9;27005:22;20979:9;27005:15;:22;:::i;:::-;27004:31;;;;:::i;:::-;27050:13;:23;;;26994:41;-1:-1:-1;27097:17:0;:15;:17::i;:::-;27088:6;:26;;;27215:12;;27188:23;;21030:4;;27215:21;;27088:26;27215:21;:::i;:::-;27214:35;;;;:::i;:::-;27188:61;;27264:20;21030:4;27300:6;;27288:9;;:18;;;;:::i;:::-;27287:32;;;;:::i;:::-;27264:55;;27334:14;27381:15;27360:18;27351:6;;:27;;;;:::i;:::-;:45;;;;:::i;:::-;27429:6;;;:31;;-1:-1:-1;;;27429:31:0;;27454:4;27429:31;;;565:51:1;;;;27334:62:0;;-1:-1:-1;27411:15:0;;-1:-1:-1;;;;;27429:6:0;;:16;;538:18:1;;27429:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27411:49;;27492:9;27479:10;:22;27475:113;;;27522:6;;-1:-1:-1;;;;;27522:6:0;:11;27542:4;27549:22;27561:10;27549:9;:22;:::i;:::-;27522:50;;-1:-1:-1;;;;;;27522:50:0;;;;;;;-1:-1:-1;;;;;6773:32:1;;;27522:50:0;;;6755:51:1;6822:18;;;6815:34;6728:18;;27522:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27475:113;27635:8;27633:10;;;;;;;;27689:3;27677:15;27673:57;;;27717:13;;27705:25;;21030:4;27705:25;:::i;:::-;27694:8;:36;27673:57;27768:9;;27801:6;;;27768:42;;-1:-1:-1;;;27768:42:0;;-1:-1:-1;;;;;27801:6:0;;;27768:42;;;565:51:1;;;;27768:9:0;;;;:23;;538:18:1;;27768:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27749:16;;;;:5;:16;;;;;:61;27844:22;27856:10;27844:9;:22;:::i;:::-;27825:16;;;;:5;:16;;;;;;;;:41;;;;27900:6;;27881:5;:16;;;;;;;:25;;;27923:6;;;27946;;27923:39;;-1:-1:-1;;;27923:39:0;;-1:-1:-1;;;;;27946:6:0;;;27923:39;;;6755:51:1;;;;6822:18;;;6815:34;;;;27923:6:0;;;:14;;6728:18:1;;27923:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;27977:6:0;;28003;;27977:33;;-1:-1:-1;;;27977:33:0;;-1:-1:-1;;;;;27977:6:0;;;;:25;;:33;;;;773:25:1;;;761:2;746:18;;627:177;27977:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;28063:8:0;;-1:-1:-1;;;;;28063:8:0;;-1:-1:-1;;28090:23:0;;28087:117;;28140:6;;;:46;;-1:-1:-1;;;28140:46:0;;-1:-1:-1;;;;;6773:32:1;;;28140:46:0;;;6755:51:1;;;;6822:18;;;6815:34;;;28140:6:0;;;:15;;6728:18:1;;28140:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28132:55;;;;;;-1:-1:-1;28252:5:0;;-1:-1:-1;;;;;28252:5:0;28276:20;;28273:182;;28315:6;;;:39;;-1:-1:-1;;;28315:39:0;;-1:-1:-1;;;;;6773:32:1;;;28315:39:0;;;6755:51:1;;;;6822:18;;;6815:34;;;28315:6:0;;;:14;;6728:18:1;;28315:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;28413:6:0;;;28371:67;;-1:-1:-1;;;28371:67:0;;-1:-1:-1;;;;;28413:6:0;;;28371:67;;;6755:51:1;;;;6822:18;;;6815:34;;;28371:33:0;;;;;6728:18:1;;28371:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28273:182;28219:251;28498:10;-1:-1:-1;;;;;28493:137:0;;28510:6;;28518:20;:18;:20::i;:::-;28540:22;:20;:22::i;:::-;28613:16;;;;:5;:16;;;;;;;;;;28493:137;;11045:25:1;;;11086:18;;;11079:34;;;;11129:18;;11122:34;11187:2;11172:18;;11165:34;;;11230:3;11215:19;;11208:35;;;11274:3;11259:19;;11252:35;;;11318:3;11303:19;;11296:35;11032:3;11017:19;28493:137:0;;;;;;;26951:1691;;;;26889:1753;28659:7;26790:1884;-1:-1:-1;26790:1884:0:o;24334:138::-;24416:4;;-1:-1:-1;;;;;24416:4:0;24402:10;:18;24394:39;;;;-1:-1:-1;;;24394:39:0;;;;;;;:::i;:::-;24444:8;:20;;-1:-1:-1;;;;;;24444:20:0;-1:-1:-1;;;;;24444:20:0;;;;;;;;;;24334:138::o;6305:98::-;6357:4;6386:1;6381;:6;;:14;;6394:1;6381:14;;;6390:1;6381:14;6374:21;6305:98;-1:-1:-1;;;6305:98:0:o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;150:247;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;809:180::-;868:6;921:2;909:9;900:7;896:23;892:32;889:52;;;937:1;934;927:12;889:52;-1:-1:-1;960:23:1;;809:180;-1:-1:-1;809:180:1:o;1646:127::-;1707:10;1702:3;1698:20;1695:1;1688:31;1738:4;1735:1;1728:15;1762:4;1759:1;1752:15;1778:275;1849:2;1843:9;1914:2;1895:13;;-1:-1:-1;;1891:27:1;1879:40;;1949:18;1934:34;;1970:22;;;1931:62;1928:88;;;1996:18;;:::i;:::-;2032:2;2025:22;1778:275;;-1:-1:-1;1778:275:1:o;2058:183::-;2118:4;2151:18;2143:6;2140:30;2137:56;;;2173:18;;:::i;:::-;-1:-1:-1;2218:1:1;2214:14;2230:4;2210:25;;2058:183::o;2246:662::-;2300:5;2353:3;2346:4;2338:6;2334:17;2330:27;2320:55;;2371:1;2368;2361:12;2320:55;2407:6;2394:20;2433:4;2457:60;2473:43;2513:2;2473:43;:::i;:::-;2457:60;:::i;:::-;2551:15;;;2637:1;2633:10;;;;2621:23;;2617:32;;;2582:12;;;;2661:15;;;2658:35;;;2689:1;2686;2679:12;2658:35;2725:2;2717:6;2713:15;2737:142;2753:6;2748:3;2745:15;2737:142;;;2819:17;;2807:30;;2857:12;;;;2770;;2737:142;;;-1:-1:-1;2897:5:1;2246:662;-1:-1:-1;;;;;;2246:662:1:o;2913:1215::-;3031:6;3039;3092:2;3080:9;3071:7;3067:23;3063:32;3060:52;;;3108:1;3105;3098:12;3060:52;3148:9;3135:23;3177:18;3218:2;3210:6;3207:14;3204:34;;;3234:1;3231;3224:12;3204:34;3272:6;3261:9;3257:22;3247:32;;3317:7;3310:4;3306:2;3302:13;3298:27;3288:55;;3339:1;3336;3329:12;3288:55;3375:2;3362:16;3397:4;3421:60;3437:43;3477:2;3437:43;:::i;3421:60::-;3515:15;;;3597:1;3593:10;;;;3585:19;;3581:28;;;3546:12;;;;3621:19;;;3618:39;;;3653:1;3650;3643:12;3618:39;3677:11;;;;3697:217;3713:6;3708:3;3705:15;3697:217;;;3793:3;3780:17;3810:31;3835:5;3810:31;:::i;:::-;3854:18;;3730:12;;;;3892;;;;3697:217;;;3933:5;-1:-1:-1;;3976:18:1;;3963:32;;-1:-1:-1;;4007:16:1;;;4004:36;;;4036:1;4033;4026:12;4004:36;;4059:63;4114:7;4103:8;4092:9;4088:24;4059:63;:::i;:::-;4049:73;;;2913:1215;;;;;:::o;4362:615::-;4465:6;4473;4481;4489;4542:3;4530:9;4521:7;4517:23;4513:33;4510:53;;;4559:1;4556;4549:12;4510:53;4598:9;4585:23;4617:31;4642:5;4617:31;:::i;:::-;4667:5;-1:-1:-1;4724:2:1;4709:18;;4696:32;4737:33;4696:32;4737:33;:::i;:::-;4789:7;-1:-1:-1;4843:2:1;4828:18;;4815:32;;-1:-1:-1;4899:2:1;4884:18;;4871:32;4912:33;4871:32;4912:33;:::i;:::-;4362:615;;;;-1:-1:-1;4362:615:1;;-1:-1:-1;;4362:615:1:o;4982:331::-;5184:2;5166:21;;;5223:1;5203:18;;;5196:29;-1:-1:-1;;;5256:2:1;5241:18;;5234:38;5304:2;5289:18;;4982:331::o;5318:127::-;5379:10;5374:3;5370:20;5367:1;5360:31;5410:4;5407:1;5400:15;5434:4;5431:1;5424:15;5450:168;5490:7;5556:1;5552;5548:6;5544:14;5541:1;5538:21;5533:1;5526:9;5519:17;5515:45;5512:71;;;5563:18;;:::i;:::-;-1:-1:-1;5603:9:1;;5450:168::o;5623:217::-;5663:1;5689;5679:132;;5733:10;5728:3;5724:20;5721:1;5714:31;5768:4;5765:1;5758:15;5796:4;5793:1;5786:15;5679:132;-1:-1:-1;5825:9:1;;5623:217::o;5845:326::-;6047:2;6029:21;;;6086:1;6066:18;;;6059:29;-1:-1:-1;;;6119:2:1;6104:18;;6097:33;6162:2;6147:18;;5845:326::o;6176:127::-;6237:10;6232:3;6228:20;6225:1;6218:31;6268:4;6265:1;6258:15;6292:4;6289:1;6282:15;6308:128;6348:3;6379:1;6375:6;6372:1;6369:13;6366:39;;;6385:18;;:::i;:::-;-1:-1:-1;6421:9:1;;6308:128::o;6441:135::-;6480:3;-1:-1:-1;;6501:17:1;;6498:43;;;6521:18;;:::i;:::-;-1:-1:-1;6568:1:1;6557:13;;6441:135::o;6860:277::-;6927:6;6980:2;6968:9;6959:7;6955:23;6951:32;6948:52;;;6996:1;6993;6986:12;6948:52;7028:9;7022:16;7081:5;7074:13;7067:21;7060:5;7057:32;7047:60;;7103:1;7100;7093:12;7492:184;7562:6;7615:2;7603:9;7594:7;7590:23;7586:32;7583:52;;;7631:1;7628;7621:12;7583:52;-1:-1:-1;7654:16:1;;7492:184;-1:-1:-1;7492:184:1:o;9126:251::-;9196:6;9249:2;9237:9;9228:7;9224:23;9220:32;9217:52;;;9265:1;9262;9255:12;9217:52;9297:9;9291:16;9316:31;9341:5;9316:31;:::i;10600:125::-;10640:4;10668:1;10665;10662:8;10659:34;;;10673:18;;:::i;:::-;-1:-1:-1;10710:9:1;;10600:125::o
Swarm Source
ipfs://22661e07e926c3f9f0b699f2b95d7c3636ff9a53f6f163eb8d1655bbf1e4d73d
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.