Contract Overview
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Latest 1 internal transaction
Parent Txn Hash | Block | From | To | Value | |||
---|---|---|---|---|---|---|---|
0xa05032153beb820d67f824b206d4300a7a398f1a67e31fa68eb77ddff52ea0f5 | 27369878 | 395 days 11 hrs ago | Undead Finance: Deployer | Contract Creation | 0 FTM |
[ Download CSV Export ]
Contract Name:
StrategyMasterChefLP
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at FtmScan.com on 2022-01-08 */ /** *Submitted for verification at FtmScan.com on 2021-05-07 */ // SPDX-License-Identifier: MIT pragma solidity ^0.6.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN 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 payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol pragma solidity ^0.6.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol pragma solidity ^0.6.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File: @openzeppelin/contracts/math/SafeMath.sol pragma solidity ^0.6.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } // File: @openzeppelin/contracts/utils/Address.sol pragma solidity ^0.6.2; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies in extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 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"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/token/ERC20/ERC20.sol pragma solidity ^0.6.0; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin guidelines: functions revert instead * of returning `false` on failure. This behavior is nonetheless conventional * and does not conflict with the expectations of ERC20 applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20 { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; uint8 private _decimals; /** * @dev Sets the values for {name} and {symbol}, initializes {decimals} with * a default value of 18. * * To select a different value for {decimals}, use {_setupDecimals}. * * All three of these values are immutable: they can only be set once during * construction. */ constructor (string memory name, string memory symbol) public { _name = name; _symbol = symbol; _decimals = 18; } /** * @dev Returns the name of the token. */ function name() public view returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is * called. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view returns (uint8) { return _decimals; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}; * * Requirements: * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements * * - `to` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Sets {decimals} to a value other than the default one of 18. * * WARNING: This function should only be called from the constructor. Most * applications that interact with token contracts will not expect * {decimals} to ever change, and may work incorrectly if it does. */ function _setupDecimals(uint8 decimals_) internal { _decimals = decimals_; } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { } } // File: @openzeppelin/contracts/token/ERC20/SafeERC20.sol pragma solidity ^0.6.0; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer(IERC20 token, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove(IERC20 token, address spender, uint256 value) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length require((value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero"); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } // File: @openzeppelin/contracts/utils/Pausable.sol pragma solidity ^0.6.0; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor () internal { _paused = false; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view returns (bool) { return _paused; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { require(!_paused, "Pausable: paused"); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { require(_paused, "Pausable: not paused"); _; } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } // File: contracts/BIFI/interfaces/common/IUniswapRouterETH.sol pragma solidity ^0.6.0; interface IUniswapRouterETH { function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); } // File: contracts/BIFI/interfaces/common/IUniswapV2Pair.sol pragma solidity ^0.6.0; interface IUniswapV2Pair { function token0() external view returns (address); function token1() external view returns (address); } // File: contracts/BIFI/interfaces/pancake/IMasterChef.sol pragma solidity ^0.6.0; interface IMasterChef { function deposit(uint256 _pid, uint256 _amount) external; function withdraw(uint256 _pid, uint256 _amount) external; function enterStaking(uint256 _amount) external; function leaveStaking(uint256 _amount) external; function pendingCake(uint256 _pid, address _user) external view returns (uint256); function userInfo(uint256 _pid, address _user) external view returns (uint256, uint256); function emergencyWithdraw(uint256 _pid) external; } pragma solidity ^0.6.12; contract StratManager is Ownable, Pausable { /** * @dev Beefy Contracts: * {keeper} - Address to manage a few lower risk features of the strat * {strategist} - Address of the strategy author/deployer where strategist fee will go. * {vault} - Address of the vault that controls the strategy's funds. * {unirouter} - Address of exchange to execute swaps. */ address public keeper; address public strategist; address public unirouter; address public vault; address public beefyFeeRecipient; /** * @dev Initializes the base strategy. * @param _keeper address to use as alternative owner. * @param _strategist address where strategist fees go. * @param _unirouter router to use for swaps * @param _vault address of parent vault. * @param _beefyFeeRecipient address where to send Beefy's fees. */ constructor( address _keeper, address _strategist, address _unirouter, address _vault, address _beefyFeeRecipient ) public { keeper = _keeper; strategist = _strategist; unirouter = _unirouter; vault = _vault; beefyFeeRecipient = _beefyFeeRecipient; } // checks that caller is either owner or keeper. modifier onlyManager() { require(msg.sender == owner() || msg.sender == keeper, "!manager"); _; } // verifies that the caller is not a contract. modifier onlyEOA() { require(msg.sender == tx.origin, "!EOA"); _; } /** * @dev Updates address of the strat keeper. * @param _keeper new keeper address. */ function setKeeper(address _keeper) external onlyManager { keeper = _keeper; } /** * @dev Updates address where strategist fee earnings will go. * @param _strategist new strategist address. */ function setStrategist(address _strategist) external { require(msg.sender == strategist, "!strategist"); strategist = _strategist; } /** * @dev Updates router that will be used for swaps. * @param _unirouter new unirouter address. */ function setUnirouter(address _unirouter) external onlyOwner { unirouter = _unirouter; } /** * @dev Updates parent vault. * @param _vault new vault address. */ function setVault(address _vault) external onlyOwner { vault = _vault; } /** * @dev Updates beefy fee recipient. * @param _beefyFeeRecipient new beefy fee recipient address. */ function setBeefyFeeRecipient(address _beefyFeeRecipient) external onlyOwner { beefyFeeRecipient = _beefyFeeRecipient; } /** * @dev Function to synchronize balances before new user deposit. * Can be overridden in the strategy. */ function beforeDeposit() external virtual {} } pragma solidity ^0.6.12; abstract contract FeeManager is StratManager { uint constant public STRATEGIST_FEE = 112; uint constant public MAX_FEE = 1000; uint constant public MAX_CALL_FEE = 111; uint constant public WITHDRAWAL_FEE_CAP = 50; uint constant public WITHDRAWAL_MAX = 10000; uint public withdrawalFee = 10; uint public callFee = 111; uint public beefyFee = MAX_FEE - STRATEGIST_FEE - callFee; function setCallFee(uint256 _fee) external onlyManager { require(_fee <= MAX_CALL_FEE, "!cap"); callFee = _fee; beefyFee = MAX_FEE - STRATEGIST_FEE - callFee; } function setWithdrawalFee(uint256 _fee) external onlyManager { require(_fee <= WITHDRAWAL_FEE_CAP, "!cap"); withdrawalFee = _fee; } } pragma solidity ^0.6.0; contract StrategyMasterChefLP is StratManager, FeeManager { using SafeERC20 for IERC20; using SafeMath for uint256; // Tokens used address constant public wrapped = address(0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83); address constant public output = address(0x6cc0E0AedbbD3C35283e38668D959F6eb3034856); address public want; address public lpToken0; address public lpToken1; // Third party contracts address constant public masterchef = address(0xb02e3A4B5ebC315137753e24b6Eb6aEF7D602E40); uint256 public poolId; // Routes address[] public outputToWrappedRoute = [output, wrapped]; address[] public outputToLp0Route; address[] public outputToLp1Route; /** * @dev Event that is fired each time someone harvests the strat. */ event StratHarvest(address indexed harvester); constructor( address _want, uint256 _poolId, address _vault, address _unirouter, address _keeper, address _strategist, address _beefyFeeRecipient ) StratManager(_keeper, _strategist, _unirouter, _vault, _beefyFeeRecipient) public { want = _want; lpToken0 = IUniswapV2Pair(want).token0(); lpToken1 = IUniswapV2Pair(want).token1(); poolId = _poolId; if (lpToken0 == wrapped) { outputToLp0Route = [output, wrapped]; } else if (lpToken0 != output) { outputToLp0Route = [output, wrapped, lpToken0]; } if (lpToken1 == wrapped) { outputToLp1Route = [output, wrapped]; } else if (lpToken1 != output) { outputToLp1Route = [output, wrapped, lpToken1]; } _giveAllowances(); } // puts the funds to work function deposit() public whenNotPaused { uint256 wantBal = IERC20(want).balanceOf(address(this)); if (wantBal > 0) { IMasterChef(masterchef).deposit(poolId, wantBal); } } function withdraw(uint256 _amount) external { require(msg.sender == vault, "!vault"); uint256 wantBal = IERC20(want).balanceOf(address(this)); if (wantBal < _amount) { IMasterChef(masterchef).withdraw(poolId, _amount.sub(wantBal)); wantBal = IERC20(want).balanceOf(address(this)); } if (wantBal > _amount) { wantBal = _amount; } if (tx.origin == owner() || paused()) { IERC20(want).safeTransfer(vault, wantBal); } else { uint256 withdrawalFeeAmount = wantBal.mul(withdrawalFee).div(WITHDRAWAL_MAX); IERC20(want).safeTransfer(vault, wantBal.sub(withdrawalFeeAmount)); } } // compounds earnings and charges performance fee function harvest() external whenNotPaused onlyEOA { IMasterChef(masterchef).deposit(poolId, 0); chargeFees(); addLiquidity(); deposit(); emit StratHarvest(msg.sender); } // performance fees function chargeFees() internal { uint256 toWrapped = IERC20(output).balanceOf(address(this)).mul(45).div(1000); IUniswapRouterETH(unirouter).swapExactTokensForTokens(toWrapped, 0, outputToWrappedRoute, address(this), now); uint256 wrappedBal = IERC20(wrapped).balanceOf(address(this)); uint256 callFeeAmount = wrappedBal.mul(callFee).div(MAX_FEE); IERC20(wrapped).safeTransfer(msg.sender, callFeeAmount); uint256 beefyFeeAmount = wrappedBal.mul(beefyFee).div(MAX_FEE); IERC20(wrapped).safeTransfer(beefyFeeRecipient, beefyFeeAmount); uint256 strategistFee = wrappedBal.mul(STRATEGIST_FEE).div(MAX_FEE); IERC20(wrapped).safeTransfer(strategist, strategistFee); } // Adds liquidity to AMM and gets more LP tokens. function addLiquidity() internal { uint256 outputHalf = IERC20(output).balanceOf(address(this)).div(2); if (lpToken0 != output) { IUniswapRouterETH(unirouter).swapExactTokensForTokens(outputHalf, 0, outputToLp0Route, address(this), now); } if (lpToken1 != output) { IUniswapRouterETH(unirouter).swapExactTokensForTokens(outputHalf, 0, outputToLp1Route, address(this), now); } uint256 lp0Bal = IERC20(lpToken0).balanceOf(address(this)); uint256 lp1Bal = IERC20(lpToken1).balanceOf(address(this)); IUniswapRouterETH(unirouter).addLiquidity(lpToken0, lpToken1, lp0Bal, lp1Bal, 1, 1, address(this), now); } // calculate the total underlaying 'want' held by the strat. function balanceOf() public view returns (uint256) { return balanceOfWant().add(balanceOfPool()); } // it calculates how much 'want' this contract holds. function balanceOfWant() public view returns (uint256) { return IERC20(want).balanceOf(address(this)); } // it calculates how much 'want' the strategy has working in the farm. function balanceOfPool() public view returns (uint256) { (uint256 _amount, ) = IMasterChef(masterchef).userInfo(poolId, address(this)); return _amount; } // called as part of strat migration. Sends all the available funds back to the vault. function retireStrat() external { require(msg.sender == vault, "!vault"); IMasterChef(masterchef).emergencyWithdraw(poolId); uint256 wantBal = IERC20(want).balanceOf(address(this)); IERC20(want).transfer(vault, wantBal); } // pauses deposits and withdraws all funds from third party systems. function panic() public onlyManager { pause(); IMasterChef(masterchef).emergencyWithdraw(poolId); } function pause() public onlyManager { _pause(); _removeAllowances(); } function unpause() external onlyManager { _unpause(); _giveAllowances(); deposit(); } function _giveAllowances() internal { IERC20(want).safeApprove(masterchef, uint256(-1)); IERC20(output).safeApprove(unirouter, uint256(-1)); IERC20(lpToken0).safeApprove(unirouter, 0); IERC20(lpToken0).safeApprove(unirouter, uint256(-1)); IERC20(lpToken1).safeApprove(unirouter, 0); IERC20(lpToken1).safeApprove(unirouter, uint256(-1)); } function _removeAllowances() internal { IERC20(want).safeApprove(masterchef, 0); IERC20(output).safeApprove(unirouter, 0); IERC20(lpToken0).safeApprove(unirouter, 0); IERC20(lpToken1).safeApprove(unirouter, 0); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_want","type":"address"},{"internalType":"uint256","name":"_poolId","type":"uint256"},{"internalType":"address","name":"_vault","type":"address"},{"internalType":"address","name":"_unirouter","type":"address"},{"internalType":"address","name":"_keeper","type":"address"},{"internalType":"address","name":"_strategist","type":"address"},{"internalType":"address","name":"_beefyFeeRecipient","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"harvester","type":"address"}],"name":"StratHarvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"MAX_CALL_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STRATEGIST_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WITHDRAWAL_FEE_CAP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WITHDRAWAL_MAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"balanceOfPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"balanceOfWant","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"beefyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"beefyFeeRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"beforeDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"callFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"harvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"keeper","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpToken0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpToken1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"masterchef","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"output","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"outputToLp0Route","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"outputToLp1Route","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"outputToWrappedRoute","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":"panic","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"retireStrat","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_beefyFeeRecipient","type":"address"}],"name":"setBeefyFeeRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setCallFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_keeper","type":"address"}],"name":"setKeeper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_strategist","type":"address"}],"name":"setStrategist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_unirouter","type":"address"}],"name":"setUnirouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"name":"setVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setWithdrawalFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"strategist","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unirouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"want","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wrapped","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6080604052600a600655606f60075560075460706103e803036008556040518060400160405280736cc0e0aedbbd3c35283e38668d959f6eb303485673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017321be370d5312f44cb42ce377bc9b8a0cef1a4c8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250600d906002620000c2929190620012dc565b50348015620000d057600080fd5b5060405162005c1a38038062005c1a833981810160405260e0811015620000f657600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050828285878460006200015a62000a8f60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060008060146101000a81548160ff02191690831515021790555084600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505086600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156200040657600080fd5b505afa1580156200041b573d6000803e3d6000fd5b505050506040513d60208110156200043257600080fd5b8101908080519060200190929190505050600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015620004ec57600080fd5b505afa15801562000501573d6000803e3d6000fd5b505050506040513d60208110156200051857600080fd5b8101908080519060200190929190505050600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085600c819055507321be370d5312f44cb42ce377bc9b8a0cef1a4c8373ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141562000689576040518060400160405280736cc0e0aedbbd3c35283e38668d959f6eb303485673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017321be370d5312f44cb42ce377bc9b8a0cef1a4c8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250600e90600262000682929190620012dc565b50620007f1565b736cc0e0aedbbd3c35283e38668d959f6eb303485673ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620007f0576040518060600160405280736cc0e0aedbbd3c35283e38668d959f6eb303485673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017321be370d5312f44cb42ce377bc9b8a0cef1a4c8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250600e906003620007ee9291906200136b565b505b5b7321be370d5312f44cb42ce377bc9b8a0cef1a4c8373ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156200090a576040518060400160405280736cc0e0aedbbd3c35283e38668d959f6eb303485673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017321be370d5312f44cb42ce377bc9b8a0cef1a4c8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250600f90600262000903929190620012dc565b5062000a72565b736cc0e0aedbbd3c35283e38668d959f6eb303485673ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a71576040518060600160405280736cc0e0aedbbd3c35283e38668d959f6eb303485673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020017321be370d5312f44cb42ce377bc9b8a0cef1a4c8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250600f90600362000a6f9291906200136b565b505b5b62000a8262000a9760201b60201c565b5050505050505062001437565b600033905090565b62000b1f73b02e3a4b5ebc315137753e24b6eb6aef7d602e407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662000dc360201b62002987179092919060201c565b62000ba7600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff736cc0e0aedbbd3c35283e38668d959f6eb303485673ffffffffffffffffffffffffffffffffffffffff1662000dc360201b62002987179092919060201c565b62000c1e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662000dc360201b62002987179092919060201c565b62000cb4600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662000dc360201b62002987179092919060201c565b62000d2b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662000dc360201b62002987179092919060201c565b62000dc1600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662000dc360201b62002987179092919060201c565b565b600081148062000e95575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801562000e5657600080fd5b505afa15801562000e6b573d6000803e3d6000fd5b505050506040513d602081101562000e8257600080fd5b8101908080519060200190929190505050145b62000eec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603681526020018062005be46036913960400191505060405180910390fd5b62000f918363095ea7b360e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505062000f9660201b60201c565b505050565b606062000fff826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166200109060201b62002b4c179092919060201c565b90506000815111156200108b578080602001905160208110156200102257600080fd5b81019080805190602001909291905050506200108a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018062005bba602a913960400191505060405180910390fd5b5b505050565b6060620010a78484600085620010b060201b60201c565b90509392505050565b6060620010c385620012c960201b60201c565b62001136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b6020831062001188578051825260208201915060208101905060208303925062001163565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114620011ec576040519150601f19603f3d011682016040523d82523d6000602084013e620011f1565b606091505b5091509150811562001208578092505050620012c1565b6000815111156200121c5780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200128557808201518184015260208101905062001268565b50505050905090810190601f168015620012b35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b949350505050565b600080823b905060008111915050919050565b82805482825590600052602060002090810192821562001358579160200282015b82811115620013575782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190620012fd565b5b509050620013679190620013fa565b5090565b828054828255906000526020600020908101928215620013e7579160200282015b82811115620013e65782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906200138c565b5b509050620013f69190620013fa565b5090565b5b808211156200143357600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101620013fb565b5090565b61477380620014476000396000f3fe608060405234801561001057600080fd5b506004361061027f5760003560e01c80637d38ca651161015c578063c1a3d44c116100ce578063f20eaeb811610087578063f20eaeb8146108b4578063f2fde38b146108e8578063fb1db2781461092c578063fb61778714610960578063fbfa77cf1461096a578063fd63a8871461099e5761027f565b8063c1a3d44c146107c8578063c7b9d530146107e6578063d0e30db01461082a578063d310258914610834578063d92f3d7314610852578063dfbdc437146108965761027f565b80638e145459116101205780638e145459146106b257806390321e1a146106e6578063a68833e514610704578063ac1e502514610748578063aced166114610776578063bc063e1a146107aa5761027f565b80637d38ca65146106045780638456cb5914610622578063877562b61461062c5780638bc7e8c4146106605780638da5cb5b1461067e5761027f565b80634641257d116101f55780635c975abb116101b95780635c975abb146105005780635ee167c0146105205780636817031b14610554578063715018a614610598578063722713f7146105a2578063748747e6146105c05761027f565b80634641257d146104905780634700d3051461049a57806350e70d48146104a457806354518b1a146104d8578063573fef0a146104f65761027f565b8063264658261161024757806326465826146103965780632ad5a53f146103c45780632e1a7d4d146103e257806336c6cf21146104105780633e0dc34e146104685780633f4ba83a146104865761027f565b806311588086146102845780631d172127146102a25780631f1fcd51146102fa5780631fe4a6861461032e578063257ae0de14610362575b600080fd5b61028c6109f6565b6040518082815260200191505060405180910390f35b6102ce600480360360208110156102b857600080fd5b8101908080359060200190929190505050610acc565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610302610b08565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610336610b2e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61036a610b54565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103c2600480360360208110156103ac57600080fd5b8101908080359060200190929190505050610b7a565b005b6103cc610d0b565b6040518082815260200191505060405180910390f35b61040e600480360360208110156103f857600080fd5b8101908080359060200190929190505050610d10565b005b61043c6004803603602081101561042657600080fd5b8101908080359060200190929190505050611183565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104706111bf565b6040518082815260200191505060405180910390f35b61048e6111c5565b005b6104986112df565b005b6104a26114ea565b005b6104ac611675565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104e061168d565b6040518082815260200191505060405180910390f35b6104fe611693565b005b610508611695565b60405180821515815260200191505060405180910390f35b6105286116ab565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105966004803603602081101561056a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116d1565b005b6105a06117dd565b005b6105aa611963565b6040518082815260200191505060405180910390f35b610602600480360360208110156105d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061198b565b005b61060c611acf565b6040518082815260200191505060405180910390f35b61062a611ad4565b005b610634611be6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610668611c0c565b6040518082815260200191505060405180910390f35b610686611c12565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106ba611c3b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106ee611c61565b6040518082815260200191505060405180910390f35b6107466004803603602081101561071a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c67565b005b6107746004803603602081101561075e57600080fd5b8101908080359060200190929190505050611d73565b005b61077e611ef4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107b2611f1a565b6040518082815260200191505060405180910390f35b6107d0611f20565b6040518082815260200191505060405180910390f35b610828600480360360208110156107fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611feb565b005b6108326120f2565b005b61083c6122d3565b6040518082815260200191505060405180910390f35b6108946004803603602081101561086857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122d9565b005b61089e6123e5565b6040518082815260200191505060405180910390f35b6108bc6123ea565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61092a600480360360208110156108fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612402565b005b61093461260d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610968612625565b005b610972612925565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109ca600480360360208110156109b457600080fd5b810190808035906020019092919050505061294b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008073b02e3a4b5ebc315137753e24b6eb6aef7d602e4073ffffffffffffffffffffffffffffffffffffffff166393f1a40b600c54306040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050604080518083038186803b158015610a7d57600080fd5b505afa158015610a91573d6000803e3d6000fd5b505050506040513d6040811015610aa757600080fd5b8101908080519060200190929190805190602001909291905050505090508091505090565b600d8181548110610ad957fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b82611c12565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610c085750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610c7a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f216d616e6167657200000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b606f811115610cf1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f216361700000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060078190555060075460706103e8030360088190555050565b606f81565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dd3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f217661756c74000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610e5e57600080fd5b505afa158015610e72573d6000803e3d6000fd5b505050506040513d6020811015610e8857600080fd5b81019080805190602001909291905050509050818110156110055773b02e3a4b5ebc315137753e24b6eb6aef7d602e4073ffffffffffffffffffffffffffffffffffffffff1663441a3e70600c54610ee98486612b6490919063ffffffff16565b6040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b158015610f2657600080fd5b505af1158015610f3a573d6000803e3d6000fd5b50505050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610fc757600080fd5b505afa158015610fdb573d6000803e3d6000fd5b505050506040513d6020811015610ff157600080fd5b810190808051906020019092919050505090505b81811115611011578190505b611019611c12565b73ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614806110565750611055611695565b5b156110cf576110ca600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612bae9092919063ffffffff16565b61117f565b60006110fa6127106110ec60065485612c5090919063ffffffff16565b612cd690919063ffffffff16565b905061117d600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166111358385612b6490919063ffffffff16565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612bae9092919063ffffffff16565b505b5050565b600e818154811061119057fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b6111cd611c12565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806112535750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6112c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f216d616e6167657200000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6112cd612d20565b6112d5612e12565b6112dd6120f2565b565b600060149054906101000a900460ff1615611362576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611403576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f21454f410000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b73b02e3a4b5ebc315137753e24b6eb6aef7d602e4073ffffffffffffffffffffffffffffffffffffffff1663e2bbb158600c5460006040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b15801561147557600080fd5b505af1158015611489573d6000803e3d6000fd5b50505050611495613114565b61149d613634565b6114a56120f2565b3373ffffffffffffffffffffffffffffffffffffffff167f577a37fdb49a88d66684922c6f913df5239b4f214b2b97c53ef8e3bbb2034cb560405160405180910390a2565b6114f2611c12565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806115785750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6115ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f216d616e6167657200000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6115f2611ad4565b73b02e3a4b5ebc315137753e24b6eb6aef7d602e4073ffffffffffffffffffffffffffffffffffffffff16635312ea8e600c546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561165b57600080fd5b505af115801561166f573d6000803e3d6000fd5b50505050565b7321be370d5312f44cb42ce377bc9b8a0cef1a4c8381565b61271081565b565b60008060149054906101000a900460ff16905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6116d9613ede565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611799576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6117e5613ede565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118a5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006119866119706109f6565b611978611f20565b613ee690919063ffffffff16565b905090565b611993611c12565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611a195750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611a8b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f216d616e6167657200000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b607081565b611adc611c12565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611b625750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611bd4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f216d616e6167657200000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b611bdc613f6e565b611be4614062565b565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b611c6f613ede565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d2f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611d7b611c12565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611e015750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611e73576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260088152602001807f216d616e6167657200000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6032811115611eea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260048152602001807f216361700000000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8060068190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6103e881565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611fab57600080fd5b505afa158015611fbf573d6000803e3d6000fd5b505050506040513d6020811015611fd557600080fd5b8101908080519060200190929190505050905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f217374726174656769737400000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600060149054906101000a900460ff1615612175576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561220057600080fd5b505afa158015612214573d6000803e3d6000fd5b505050506040513d602081101561222a57600080fd5b8101908080519060200190929190505050905060008111156122d05773b02e3a4b5ebc315137753e24b6eb6aef7d602e4073ffffffffffffffffffffffffffffffffffffffff1663e2bbb158600c54836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b1580156122b757600080fd5b505af11580156122cb573d6000803e3d6000fd5b505050505b50565b60085481565b6122e1613ede565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b603281565b736cc0e0aedbbd3c35283e38668d959f6eb303485681565b61240a613ede565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612550576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806146976026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b73b02e3a4b5ebc315137753e24b6eb6aef7d602e4081565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146126e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f217661756c74000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b73b02e3a4b5ebc315137753e24b6eb6aef7d602e4073ffffffffffffffffffffffffffffffffffffffff16635312ea8e600c546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561275157600080fd5b505af1158015612765573d6000803e3d6000fd5b505050506000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156127f457600080fd5b505afa158015612808573d6000803e3d6000fd5b505050506040513d602081101561281e57600080fd5b81019080805190602001909291905050509050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156128e657600080fd5b505af11580156128fa573d6000803e3d6000fd5b505050506040513d602081101561291057600080fd5b81019080805190602001909291905050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f818154811061295857fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000811480612a55575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015612a1857600080fd5b505afa158015612a2c573d6000803e3d6000fd5b505050506040513d6020811015612a4257600080fd5b8101908080519060200190929190505050145b612aaa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806147086036913960400191505060405180910390fd5b612b478363095ea7b360e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050614208565b505050565b6060612b5b84846000856142f7565b90509392505050565b6000612ba683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506144fd565b905092915050565b612c4b8363a9059cbb60e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050614208565b505050565b600080831415612c635760009050612cd0565b6000828402905082848281612c7457fe5b0414612ccb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806146bd6021913960400191505060405180910390fd5b809150505b92915050565b6000612d1883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506145bd565b905092915050565b600060149054906101000a900460ff16612da2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b60008060146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612de5613ede565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b612e9373b02e3a4b5ebc315137753e24b6eb6aef7d602e407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166129879092919063ffffffff16565b612f14600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff736cc0e0aedbbd3c35283e38668d959f6eb303485673ffffffffffffffffffffffffffffffffffffffff166129879092919063ffffffff16565b612f84600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166129879092919063ffffffff16565b613013600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166129879092919063ffffffff16565b613083600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166129879092919063ffffffff16565b613112600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166129879092919063ffffffff16565b565b60006131f36103e86131e5602d736cc0e0aedbbd3c35283e38668d959f6eb303485673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561319c57600080fd5b505afa1580156131b0573d6000803e3d6000fd5b505050506040513d60208110156131c657600080fd5b8101908080519060200190929190505050612c5090919063ffffffff16565b612cd690919063ffffffff16565b9050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338ed1739826000600d30426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182810382528581815481526020019150805480156132f257602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116132a8575b50509650505050505050600060405180830381600087803b15801561331657600080fd5b505af115801561332a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561335457600080fd5b810190808051604051939291908464010000000082111561337457600080fd5b8382019150602082018581111561338a57600080fd5b82518660208202830111640100000000821117156133a757600080fd5b8083526020830192505050908051906020019060200280838360005b838110156133de5780820151818401526020810190506133c3565b505050509050016040525050505060007321be370d5312f44cb42ce377bc9b8a0cef1a4c8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561346957600080fd5b505afa15801561347d573d6000803e3d6000fd5b505050506040513d602081101561349357600080fd5b8101908080519060200190929190505050905060006134d16103e86134c360075485612c5090919063ffffffff16565b612cd690919063ffffffff16565b905061351233827321be370d5312f44cb42ce377bc9b8a0cef1a4c8373ffffffffffffffffffffffffffffffffffffffff16612bae9092919063ffffffff16565b600061353d6103e861352f60085486612c5090919063ffffffff16565b612cd690919063ffffffff16565b90506135a0600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16827321be370d5312f44cb42ce377bc9b8a0cef1a4c8373ffffffffffffffffffffffffffffffffffffffff16612bae9092919063ffffffff16565b60006135ca6103e86135bc607087612c5090919063ffffffff16565b612cd690919063ffffffff16565b905061362d600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16827321be370d5312f44cb42ce377bc9b8a0cef1a4c8373ffffffffffffffffffffffffffffffffffffffff16612bae9092919063ffffffff16565b5050505050565b60006136ff6002736cc0e0aedbbd3c35283e38668d959f6eb303485673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156136b657600080fd5b505afa1580156136ca573d6000803e3d6000fd5b505050506040513d60208110156136e057600080fd5b8101908080519060200190929190505050612cd690919063ffffffff16565b9050736cc0e0aedbbd3c35283e38668d959f6eb303485673ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461396257600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338ed1739826000600e30426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818154815260200191508054801561386757602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161381d575b50509650505050505050600060405180830381600087803b15801561388b57600080fd5b505af115801561389f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060208110156138c957600080fd5b81019080805160405193929190846401000000008211156138e957600080fd5b838201915060208201858111156138ff57600080fd5b825186602082028301116401000000008211171561391c57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015613953578082015181840152602081019050613938565b50505050905001604052505050505b736cc0e0aedbbd3c35283e38668d959f6eb303485673ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613bc357600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338ed1739826000600f30426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252858181548152602001915080548015613ac857602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311613a7e575b50509650505050505050600060405180830381600087803b158015613aec57600080fd5b505af1158015613b00573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015613b2a57600080fd5b8101908080516040519392919084640100000000821115613b4a57600080fd5b83820191506020820185811115613b6057600080fd5b8251866020820283011164010000000082111715613b7d57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015613bb4578082015181840152602081019050613b99565b50505050905001604052505050505b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015613c4e57600080fd5b505afa158015613c62573d6000803e3d6000fd5b505050506040513d6020811015613c7857600080fd5b810190808051906020019092919050505090506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015613d1657600080fd5b505afa158015613d2a573d6000803e3d6000fd5b505050506040513d6020811015613d4057600080fd5b81019080805190602001909291905050509050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e33700600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16858560018030426040518963ffffffff1660e01b8152600401808973ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018781526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200198505050505050505050606060405180830381600087803b158015613e8757600080fd5b505af1158015613e9b573d6000803e3d6000fd5b505050506040513d6060811015613eb157600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050505050505050565b600033905090565b600080828401905083811015613f64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600060149054906101000a900460ff1615613ff1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b6001600060146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258614035613ede565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6140c473b02e3a4b5ebc315137753e24b6eb6aef7d602e406000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166129879092919063ffffffff16565b614126600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000736cc0e0aedbbd3c35283e38668d959f6eb303485673ffffffffffffffffffffffffffffffffffffffff166129879092919063ffffffff16565b614196600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166129879092919063ffffffff16565b614206600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166129879092919063ffffffff16565b565b606061426a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612b4c9092919063ffffffff16565b90506000815111156142f25780806020019051602081101561428b57600080fd5b81019080805190602001909291905050506142f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806146de602a913960400191505060405180910390fd5b5b505050565b606061430285614683565b614374576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b602083106143c457805182526020820191506020810190506020830392506143a1565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614426576040519150601f19603f3d011682016040523d82523d6000602084013e61442b565b606091505b509150915081156144405780925050506144f5565b6000815111156144535780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156144ba57808201518184015260208101905061449f565b50505050905090810190601f1680156144e75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b949350505050565b60008383111582906145aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561456f578082015181840152602081019050614554565b50505050905090810190601f16801561459c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290614669576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561462e578082015181840152602081019050614613565b50505050905090810190601f16801561465b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161467557fe5b049050809150509392505050565b600080823b90506000811191505091905056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a26469706673582212207153ca0ab3489951efcab22da91dd4e18db3f128b2b5789b053bde9d51b25c1e64736f6c634300060c00335361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000000068d47d67b893c44a72bcac39b1b658d4cbdf87ca0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000dba79696fd4d2b44487f556e171ca99d4da743c6000000000000000000000000045312c737a6b7a115906be0ad0ef53a6aa38106000000000000000000000000c4091892cfbc7576c01f0dc93474f688ae6022bd000000000000000000000000c4091892cfbc7576c01f0dc93474f688ae6022bd0000000000000000000000006ef78432f6ba7121d2891560c70a8d7c2dedfbf6
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000068d47d67b893c44a72bcac39b1b658d4cbdf87ca0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000dba79696fd4d2b44487f556e171ca99d4da743c6000000000000000000000000045312c737a6b7a115906be0ad0ef53a6aa38106000000000000000000000000c4091892cfbc7576c01f0dc93474f688ae6022bd000000000000000000000000c4091892cfbc7576c01f0dc93474f688ae6022bd0000000000000000000000006ef78432f6ba7121d2891560c70a8d7c2dedfbf6
-----Decoded View---------------
Arg [0] : _want (address): 0x68d47d67b893c44a72bcac39b1b658d4cbdf87ca
Arg [1] : _poolId (uint256): 0
Arg [2] : _vault (address): 0xdba79696fd4d2b44487f556e171ca99d4da743c6
Arg [3] : _unirouter (address): 0x045312c737a6b7a115906be0ad0ef53a6aa38106
Arg [4] : _keeper (address): 0xc4091892cfbc7576c01f0dc93474f688ae6022bd
Arg [5] : _strategist (address): 0xc4091892cfbc7576c01f0dc93474f688ae6022bd
Arg [6] : _beefyFeeRecipient (address): 0x6ef78432f6ba7121d2891560c70a8d7c2dedfbf6
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 00000000000000000000000068d47d67b893c44a72bcac39b1b658d4cbdf87ca
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [2] : 000000000000000000000000dba79696fd4d2b44487f556e171ca99d4da743c6
Arg [3] : 000000000000000000000000045312c737a6b7a115906be0ad0ef53a6aa38106
Arg [4] : 000000000000000000000000c4091892cfbc7576c01f0dc93474f688ae6022bd
Arg [5] : 000000000000000000000000c4091892cfbc7576c01f0dc93474f688ae6022bd
Arg [6] : 0000000000000000000000006ef78432f6ba7121d2891560c70a8d7c2dedfbf6
Deployed ByteCode Sourcemap
41069:6738:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46155:176;;;:::i;:::-;;;;;;;;;;;;;;;;;;;41663:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;41405:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;37631:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;37663:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;40653:202;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;40361:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;43111:742;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;41727:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;41618:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;47013:121;;;:::i;:::-;;43916:221;;;:::i;:::-;;46780:122;;;:::i;:::-;;41222:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;40460:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;40136:44;;;:::i;:::-;;33346:78;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;41431:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;39641:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2761:148;;;:::i;:::-;;45773:113;;;:::i;:::-;;;;;;;;;;;;;;;;;;;38913:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;40271:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;46910:95;;;:::i;:::-;;41461:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;40516:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2119:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;37721:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;40555:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;39862:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;40867:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;37603:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;40319:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;45953:118;;;:::i;:::-;;;;;;;;;;;;;;;;;;;39150:155;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;42885:218;;;:::i;:::-;;40587:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;39437:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;40409:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;41314:84;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3064:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;41523:88;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;46431:267;;;:::i;:::-;;37694:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;41767:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;46155:176;46201:7;46222:15;41568:42;46243:32;;;46276:6;;46292:4;46243:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46221:77;;;46316:7;46309:14;;;46155:176;:::o;41663:57::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;41405:19::-;;;;;;;;;;;;;:::o;37631:25::-;;;;;;;;;;;;;:::o;37663:24::-;;;;;;;;;;;;;:::o;40653:202::-;38580:7;:5;:7::i;:::-;38566:21;;:10;:21;;;:45;;;;38605:6;;;;;;;;;;;38591:20;;:10;:20;;;38566:45;38558:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40397:3:::1;40727:4;:20;;40719:37;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;40787:4;40777:7;:14;;;;40840:7;;40309:3;40350:4;40813:24;:34;40802:8;:45;;;;40653:202:::0;:::o;40361:39::-;40397:3;40361:39;:::o;43111:742::-;43188:5;;;;;;;;;;;43174:19;;:10;:19;;;43166:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43217:15;43242:4;;;;;;;;;;;43235:22;;;43266:4;43235:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43217:55;;43299:7;43289;:17;43285:174;;;41568:42;43323:32;;;43356:6;;43364:20;43376:7;43364;:11;;:20;;;;:::i;:::-;43323:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43417:4;;;;;;;;;;;43410:22;;;43441:4;43410:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43400:47;;43285:174;43485:7;43475;:17;43471:67;;;43519:7;43509:17;;43471:67;43567:7;:5;:7::i;:::-;43554:20;;:9;:20;;;:32;;;;43578:8;:6;:8::i;:::-;43554:32;43550:296;;;43603:41;43629:5;;;;;;;;;;;43636:7;43610:4;;;;;;;;;;;43603:25;;;;:41;;;;;:::i;:::-;43550:296;;;43677:27;43707:46;40498:5;43707:26;43719:13;;43707:7;:11;;:26;;;;:::i;:::-;:30;;:46;;;;:::i;:::-;43677:76;;43768:66;43794:5;;;;;;;;;;;43801:32;43813:19;43801:7;:11;;:32;;;;:::i;:::-;43775:4;;;;;;;;;;;43768:25;;;;:66;;;;;:::i;:::-;43550:296;;43111:742;;:::o;41727:33::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;41618:21::-;;;;:::o;47013:121::-;38580:7;:5;:7::i;:::-;38566:21;;:10;:21;;;:45;;;;38605:6;;;;;;;;;;;38591:20;;:10;:20;;;38566:45;38558:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;47064:10:::1;:8;:10::i;:::-;47087:17;:15;:17::i;:::-;47117:9;:7;:9::i;:::-;47013:121::o:0;43916:221::-;33664:7;;;;;;;;;;;33663:8;33655:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38756:9:::1;38742:23;;:10;:23;;;38734:40;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;41568:42:::2;43977:31;;;44009:6;;44017:1;43977:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;44030:12;:10;:12::i;:::-;44053:14;:12;:14::i;:::-;44078:9;:7;:9::i;:::-;44118:10;44105:24;;;;;;;;;;;;43916:221::o:0;46780:122::-;38580:7;:5;:7::i;:::-;38566:21;;:10;:21;;;:45;;;;38605:6;;;;;;;;;;;38591:20;;:10;:20;;;38566:45;38558:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46827:7:::1;:5;:7::i;:::-;41568:42;46845:41;;;46887:6;;46845:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;46780:122::o:0;41222:85::-;41264:42;41222:85;:::o;40460:43::-;40498:5;40460:43;:::o;40136:44::-;:::o;33346:78::-;33385:4;33409:7;;;;;;;;;;;33402:14;;33346:78;:::o;41431:23::-;;;;;;;;;;;;;:::o;39641:86::-;2341:12;:10;:12::i;:::-;2331:22;;:6;;;;;;;;;;:22;;;2323:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39713:6:::1;39705:5;;:14;;;;;;;;;;;;;;;;;;39641:86:::0;:::o;2761:148::-;2341:12;:10;:12::i;:::-;2331:22;;:6;;;;;;;;;;:22;;;2323:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2868:1:::1;2831:40;;2852:6;::::0;::::1;;;;;;;;2831:40;;;;;;;;;;;;2899:1;2882:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2761:148::o:0;45773:113::-;45815:7;45842:36;45862:15;:13;:15::i;:::-;45842;:13;:15::i;:::-;:19;;:36;;;;:::i;:::-;45835:43;;45773:113;:::o;38913:92::-;38580:7;:5;:7::i;:::-;38566:21;;:10;:21;;;:45;;;;38605:6;;;;;;;;;;;38591:20;;:10;:20;;;38566:45;38558:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38990:7:::1;38981:6;;:16;;;;;;;;;;;;;;;;;;38913:92:::0;:::o;40271:41::-;40309:3;40271:41;:::o;46910:95::-;38580:7;:5;:7::i;:::-;38566:21;;:10;:21;;;:45;;;;38605:6;;;;;;;;;;;38591:20;;:10;:20;;;38566:45;38558:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46957:8:::1;:6;:8::i;:::-;46978:19;:17;:19::i;:::-;46910:95::o:0;41461:23::-;;;;;;;;;;;;;:::o;40516:30::-;;;;:::o;2119:79::-;2157:7;2184:6;;;;;;;;;;;2177:13;;2119:79;:::o;37721:32::-;;;;;;;;;;;;;:::o;40555:25::-;;;;:::o;39862:134::-;2341:12;:10;:12::i;:::-;2331:22;;:6;;;;;;;;;;:22;;;2323:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39970:18:::1;39950:17;;:38;;;;;;;;;;;;;;;;;;39862:134:::0;:::o;40867:156::-;38580:7;:5;:7::i;:::-;38566:21;;:10;:21;;;:45;;;;38605:6;;;;;;;;;;;38591:20;;:10;:20;;;38566:45;38558:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40451:2:::1;40947:4;:26;;40939:43;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;41011:4;40995:13;:20;;;;40867:156:::0;:::o;37603:21::-;;;;;;;;;;;;;:::o;40319:35::-;40350:4;40319:35;:::o;45953:118::-;45999:7;46033:4;;;;;;;;;;;46026:22;;;46057:4;46026:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46019:44;;45953:118;:::o;39150:155::-;39236:10;;;;;;;;;;;39222:24;;:10;:24;;;39214:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39286:11;39273:10;;:24;;;;;;;;;;;;;;;;;;39150:155;:::o;42885:218::-;33664:7;;;;;;;;;;;33663:8;33655:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42936:15:::1;42961:4;;;;;;;;;;;42954:22;;;42985:4;42954:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;42936:55;;43018:1;43008:7;:11;43004:92;;;41568:42;43036:31;;;43068:6;;43076:7;43036:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;43004:92;33703:1;42885:218::o:0;40587:57::-;;;;:::o;39437:102::-;2341:12;:10;:12::i;:::-;2331:22;;:6;;;;;;;;;;:22;;;2323:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39521:10:::1;39509:9;;:22;;;;;;;;;;;;;;;;;;39437:102:::0;:::o;40409:44::-;40451:2;40409:44;:::o;41314:84::-;41355:42;41314:84;:::o;3064:244::-;2341:12;:10;:12::i;:::-;2331:22;;:6;;;;;;;;;;:22;;;2323:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3173:1:::1;3153:22;;:8;:22;;;;3145:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3263:8;3234:38;;3255:6;::::0;::::1;;;;;;;;3234:38;;;;;;;;;;;;3292:8;3283:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3064:244:::0;:::o;41523:88::-;41568:42;41523:88;:::o;46431:267::-;46496:5;;;;;;;;;;;46482:19;;:10;:19;;;46474:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41568:42;46525:41;;;46567:6;;46525:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46587:15;46612:4;;;;;;;;;;;46605:22;;;46636:4;46605:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46587:55;;46660:4;;;;;;;;;;;46653:21;;;46675:5;;;;;;;;;;;46682:7;46653:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46431:267;:::o;37694:20::-;;;;;;;;;;;;;:::o;41767:33::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;29862:622::-;30241:1;30232:5;:10;30231:62;;;;30291:1;30248:5;:15;;;30272:4;30279:7;30248:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:44;30231:62;30223:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30386:90;30406:5;30436:22;;;30460:7;30469:5;30413:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30386:19;:90::i;:::-;29862:622;;;:::o;15181:196::-;15284:12;15316:53;15339:6;15347:4;15353:1;15356:12;15316:22;:53::i;:::-;15309:60;;15181:196;;;;;:::o;7503:136::-;7561:7;7588:43;7592:1;7595;7588:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;7581:50;;7503:136;;;;:::o;29203:177::-;29286:86;29306:5;29336:23;;;29361:2;29365:5;29313:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29286:19;:86::i;:::-;29203:177;;;:::o;8393:471::-;8451:7;8701:1;8696;:6;8692:47;;;8726:1;8719:8;;;;8692:47;8751:9;8767:1;8763;:5;8751:17;;8796:1;8791;8787;:5;;;;;;:10;8779:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8855:1;8848:8;;;8393:471;;;;;:::o;9340:132::-;9398:7;9425:39;9429:1;9432;9425:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;9418:46;;9340:132;;;;:::o;34395:120::-;33940:7;;;;;;;;;;;33932:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34464:5:::1;34454:7:::0;::::1;:15;;;;;;;;;;;;;;;;;;34485:22;34494:12;:10;:12::i;:::-;34485:22;;;;;;;;;;;;;;;;;;;;34395:120::o:0;47142:401::-;47189:49;41568:42;47234:2;47196:4;;;;;;;;;;;47189:24;;;;:49;;;;;:::i;:::-;47249:50;47276:9;;;;;;;;;;;47295:2;41355:42;47249:26;;;;:50;;;;;:::i;:::-;47312:42;47341:9;;;;;;;;;;;47352:1;47319:8;;;;;;;;;;;47312:28;;;;:42;;;;;:::i;:::-;47365:52;47394:9;;;;;;;;;;;47413:2;47372:8;;;;;;;;;;;47365:28;;;;:52;;;;;:::i;:::-;47430:42;47459:9;;;;;;;;;;;47470:1;47437:8;;;;;;;;;;;47430:28;;;;:42;;;;;:::i;:::-;47483:52;47512:9;;;;;;;;;;;47531:2;47490:8;;;;;;;;;;;47483:28;;;;:52;;;;;:::i;:::-;47142:401::o;44170:755::-;44212:17;44232:57;44284:4;44232:47;44276:2;41355:42;44232:24;;;44265:4;44232:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:43;;:47;;;;:::i;:::-;:51;;:57;;;;:::i;:::-;44212:77;;44318:9;;;;;;;;;;;44300:53;;;44354:9;44365:1;44368:20;44398:4;44405:3;44300:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44422:18;41264:42;44443:25;;;44477:4;44443:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44422:61;;44496:21;44520:36;40350:4;44520:23;44535:7;;44520:10;:14;;:23;;;;:::i;:::-;:27;;:36;;;;:::i;:::-;44496:60;;44567:55;44596:10;44608:13;41264:42;44567:28;;;;:55;;;;;:::i;:::-;44635:22;44660:37;40350:4;44660:24;44675:8;;44660:10;:14;;:24;;;;:::i;:::-;:28;;:37;;;;:::i;:::-;44635:62;;44708:63;44737:17;;;;;;;;;;;44756:14;41264:42;44708:28;;;;:63;;;;;:::i;:::-;44784:21;44808:43;40350:4;44808:30;40309:3;44808:10;:14;;:30;;;;:::i;:::-;:34;;:43;;;;:::i;:::-;44784:67;;44862:55;44891:10;;;;;;;;;;;44903:13;41264:42;44862:28;;;;:55;;;;;:::i;:::-;44170:755;;;;;:::o;44988:711::-;45032:18;45053:46;45097:1;41355:42;45053:24;;;45086:4;45053:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:43;;:46;;;;:::i;:::-;45032:67;;41355:42;45116:18;;:8;;;;;;;;;;;:18;;;45112:157;;45169:9;;;;;;;;;;;45151:53;;;45205:10;45217:1;45220:16;45246:4;45253:3;45151:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45112:157;41355:42;45285:18;;:8;;;;;;;;;;;:18;;;45281:157;;45338:9;;;;;;;;;;;45320:53;;;45374:10;45386:1;45389:16;45415:4;45422:3;45320:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45281:157;45450:14;45474:8;;;;;;;;;;;45467:26;;;45502:4;45467:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45450:58;;45519:14;45543:8;;;;;;;;;;;45536:26;;;45571:4;45536:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45519:58;;45606:9;;;;;;;;;;;45588:41;;;45630:8;;;;;;;;;;;45640;;;;;;;;;;;45650:6;45658;45666:1;45669;45680:4;45687:3;45588:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44988:711;;;:::o;673:106::-;726:15;761:10;754:17;;673:106;:::o;7039:181::-;7097:7;7117:9;7133:1;7129;:5;7117:17;;7158:1;7153;:6;;7145:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7211:1;7204:8;;;7039:181;;;;:::o;34136:118::-;33664:7;;;;;;;;;;;33663:8;33655:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34206:4:::1;34196:7;;:14;;;;;;;;;;;;;;;;;;34226:20;34233:12;:10;:12::i;:::-;34226:20;;;;;;;;;;;;;;;;;;;;34136:118::o:0;47551:253::-;47600:39;41568:42;47637:1;47607:4;;;;;;;;;;;47600:24;;;;:39;;;;;:::i;:::-;47650:40;47677:9;;;;;;;;;;;47688:1;41355:42;47650:26;;;;:40;;;;;:::i;:::-;47701:42;47730:9;;;;;;;;;;;47741:1;47708:8;;;;;;;;;;;47701:28;;;;:42;;;;;:::i;:::-;47754;47783:9;;;;;;;;;;;47794:1;47761:8;;;;;;;;;;;47754:28;;;;:42;;;;;:::i;:::-;47551:253::o;31508:761::-;31932:23;31958:69;31986:4;31958:69;;;;;;;;;;;;;;;;;31966:5;31958:27;;;;:69;;;;;:::i;:::-;31932:95;;32062:1;32042:10;:17;:21;32038:224;;;32184:10;32173:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32165:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32038:224;31508:761;;;:::o;16558:979::-;16688:12;16721:18;16732:6;16721:10;:18::i;:::-;16713:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16847:12;16861:23;16888:6;:11;;16908:8;16919:4;16888:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16846:78;;;;16939:7;16935:595;;;16970:10;16963:17;;;;;;16935:595;17104:1;17084:10;:17;:21;17080:439;;;17347:10;17341:17;17408:15;17395:10;17391:2;17387:19;17380:44;17295:148;17490:12;17483:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16558:979;;;;;;;:::o;7942:192::-;8028:7;8061:1;8056;:6;;8064:12;8048:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8088:9;8104:1;8100;:5;8088:17;;8125:1;8118:8;;;7942:192;;;;;:::o;9968:278::-;10054:7;10086:1;10082;:5;10089:12;10074:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10113:9;10129:1;10125;:5;;;;;;10113:17;;10237:1;10230:8;;;9968:278;;;;;:::o;12263:422::-;12323:4;12531:12;12642:7;12630:20;12622:28;;12676:1;12669:4;:8;12662:15;;;12263:422;;;:::o
Swarm Source
ipfs://7153ca0ab3489951efcab22da91dd4e18db3f128b2b5789b053bde9d51b25c1e
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Validator ID :
0 FTM
Amount Staked
0
Amount Delegated
0
Staking Total
0
Staking Start Epoch
0
Staking Start Time
0
Proof of Importance
0
Origination Score
0
Validation Score
0
Active
0
Online
0
Downtime
0 s
Address | Amount | claimed Rewards | Created On Epoch | Created On |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.