More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 40 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Deposit | 37065731 | 306 days ago | IN | 0 ETH | 0.00001683 | ||||
Deposit | 35757228 | 322 days ago | IN | 0 ETH | 0.00001462 | ||||
Deposit | 35606663 | 324 days ago | IN | 0 ETH | 0.00001641 | ||||
Deposit | 32147060 | 366 days ago | IN | 0 ETH | 0.00002136 | ||||
Deposit | 31709237 | 371 days ago | IN | 0 ETH | 0.00001863 | ||||
Deposit | 30072096 | 391 days ago | IN | 0 ETH | 0.00003452 | ||||
Deposit | 29798501 | 394 days ago | IN | 0 ETH | 0.00001741 | ||||
Deposit | 29222525 | 401 days ago | IN | 0 ETH | 0.00006358 | ||||
Deposit | 28507576 | 410 days ago | IN | 0 ETH | 0.00027719 | ||||
Deposit | 27956220 | 416 days ago | IN | 0 ETH | 0.00028087 | ||||
Deposit | 26936024 | 429 days ago | IN | 0 ETH | 0.00013366 | ||||
Deposit | 23936286 | 466 days ago | IN | 0 ETH | 0.00008758 | ||||
Deposit | 23037891 | 477 days ago | IN | 0 ETH | 0.00010563 | ||||
Deposit | 22471456 | 483 days ago | IN | 0 ETH | 0.00010296 | ||||
Deposit | 20604614 | 506 days ago | IN | 0 ETH | 0.00025414 | ||||
Deposit | 20604411 | 506 days ago | IN | 0 ETH | 0.00026461 | ||||
Deposit | 20557682 | 507 days ago | IN | 0 ETH | 0.00020948 | ||||
Deposit | 20475091 | 508 days ago | IN | 0 ETH | 0.00024594 | ||||
Deposit | 20334459 | 509 days ago | IN | 0 ETH | 0.00079352 | ||||
Deposit | 20124214 | 512 days ago | IN | 0 ETH | 0.00025593 | ||||
Deposit | 20113745 | 512 days ago | IN | 0 ETH | 0.0002494 | ||||
Deposit | 20101200 | 512 days ago | IN | 0 ETH | 0.00029153 | ||||
Deposit | 20090969 | 512 days ago | IN | 0 ETH | 0.00042951 | ||||
Deposit | 19792752 | 516 days ago | IN | 0 ETH | 0.00030252 | ||||
Deposit | 19788508 | 516 days ago | IN | 0 ETH | 0.00027225 |
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
MAVDepositor
Compiler Version
v0.8.19+commit.7dd6d404
ZkSolc Version
v1.3.14
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity 0.8.19; import "./DepositorV4.sol"; /// @title MAVDepositor /// @notice Contract that accepts tokens and locks them in the Locker, minting sdToken in return /// @dev Adapted for Maverick Voting Escrow. /// @author StakeDAO /// @custom:contact [email protected] contract MAVDepositor is DepositorV4 { using SafeERC20 for IERC20; constructor(address _token, address _locker, address _minter, address _gauge) DepositorV4(_token, _locker, _minter, _gauge, 4 * 365 days) {} function _lockToken(uint256 _amount) internal override { // If there is Token available in the contract transfer it to the locker if (_amount != 0) { /// Increase the lock. ILocker(locker).increaseLock(_amount, MAX_LOCK_DURATION); emit TokenLocked(msg.sender, _amount); } } /// @notice Initiate a lock in the Locker contract. /// @param _amount Amount of tokens to lock. function createLock(uint256 _amount) external override { /// Transfer tokens to this contract IERC20(token).safeTransferFrom(msg.sender, address(locker), _amount); /// Can be called only once. ILocker(locker).createLock(_amount, MAX_LOCK_DURATION); /// Mint sdToken to msg.sender. ITokenMinter(minter).mint(msg.sender, _amount); emit CreateLock(_amount, MAX_LOCK_DURATION); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.1; /** * @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 * * Furthermore, `isContract` will also return true if the target contract within * the same transaction is already scheduled for destruction by `SELFDESTRUCT`, * which only has an effect at the end of a transaction. * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://consensys.net/diligence/blog/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.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, "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"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract. * * _Available since v4.8._ */ function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { // only check isContract if the call was successful and the return data is empty // otherwise we already know that it was a contract require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } /** * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason or using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity ^0.8.19; import "./ILocker.sol"; import "./ISdToken.sol"; import "./ITokenMinter.sol"; import "./ILiquidityGauge.sol"; import "./IERC20.sol"; import "./SafeERC20.sol"; /// @title Depositor /// @notice Contract that accepts tokens and locks them in the Locker, minting sdToken in return /// @dev Adapted for veCRV like Locker. /// @author StakeDAO /// @custom:contact [email protected] abstract contract DepositorV4 { using SafeERC20 for IERC20; /// @notice Denominator for fixed point math. uint256 public constant DENOMINATOR = 10_000; /// @notice Maximum lock duration. uint256 public immutable MAX_LOCK_DURATION; /// @notice Address of the token to be locked. address public immutable token; /// @notice Address of the locker contract. address public immutable locker; /// @notice Address of the sdToken minter contract. address public immutable minter; /// @notice Fee percent to users who spend gas to increase lock. uint256 public lockIncentivePercent = 10; /// @notice Incentive accrued in token to users who spend gas to increase lock. uint256 public incentiveToken; /// @notice Gauge to deposit sdToken into. address public gauge; /// @notice Address of the governance. address public governance; /// @notice Address of the future governance contract. address public futureGovernance; //////////////////////////////////////////////////////////////// /// --- EVENTS & ERRORS /////////////////////////////////////////////////////////////// /// @notice Event emitted when a lock is created. /// @param amount Amount of tokens locked. /// @param duration Duration of the lock. event CreateLock(uint256 amount, uint256 duration); /// @notice Event emitted when tokens are deposited. /// @param caller Address of the caller. /// @param user Address of the user. /// @param amount Amount of tokens deposited. /// @param lock Whether the tokens are locked. /// @param stake Whether the sdToken is staked in the gauge. event Deposited(address indexed caller, address indexed user, uint256 amount, bool lock, bool stake); /// @notice Event emitted when incentive tokens are received. /// @param caller Address of the caller. /// @param amount Amount of tokens received. event IncentiveReceived(address indexed caller, uint256 amount); /// @notice Event emitted when tokens are locked. /// @param user Address of the user. /// @param amount Amount of tokens locked. event TokenLocked(address indexed user, uint256 amount); /// @notice Event emitted when governance is changed. /// @param newGovernance Address of the new governance. event GovernanceChanged(address indexed newGovernance); /// @notice Event emitted when the sdToken Operator is changed. event SdTokenOperatorChanged(address indexed newSdToken); /// @notice Event emitted Incentive percent is changed. event FeesChanged(uint256 newFee); /// @notice Throws if caller is not the governance. error GOVERNANCE(); /// @notice Throws if the deposit amount is zero. error AMOUNT_ZERO(); /// @notice Throws if the address is zero. error ADDRESS_ZERO(); //////////////////////////////////////////////////////////////// /// --- MODIFIERS /////////////////////////////////////////////////////////////// modifier onlyGovernance() { if (msg.sender != governance) revert GOVERNANCE(); _; } constructor(address _token, address _locker, address _minter, address _gauge, uint256 _maxLockDuration) { governance = msg.sender; token = _token; gauge = _gauge; minter = _minter; locker = _locker; MAX_LOCK_DURATION = _maxLockDuration; /// Approve sdToken to gauge. if (gauge != address(0)) { IERC20(minter).safeApprove(gauge, type(uint256).max); } } //////////////////////////////////////////////////////////////// /// --- DEPOSIT & LOCK /////////////////////////////////////////////////////////////// /// @notice Initiate a lock in the Locker contract. /// @param _amount Amount of tokens to lock. function createLock(uint256 _amount) external virtual { /// Transfer tokens to this contract IERC20(token).safeTransferFrom(msg.sender, address(locker), _amount); /// Can be called only once. ILocker(locker).createLock(_amount, block.timestamp + MAX_LOCK_DURATION); /// Mint sdToken to msg.sender. ITokenMinter(minter).mint(msg.sender, _amount); emit CreateLock(_amount, block.timestamp + MAX_LOCK_DURATION); } /// @notice Deposit tokens, and receive sdToken or sdTokenGauge in return. /// @param _amount Amount of tokens to deposit. /// @param _lock Whether to lock the tokens in the locker contract. /// @param _stake Whether to stake the sdToken in the gauge. /// @param _user Address of the user to receive the sdToken. /// @dev If the lock is true, the tokens are directly sent to the locker and increase the lock amount as veToken. /// If the lock is false, the tokens are sent to this contract until someone locks them. A small percent of the deposit /// is used to incentivize users to lock the tokens. /// If the stake is true, the sdToken is staked in the gauge that distributes rewards. If the stake is false, the sdToken /// is sent to the user. function deposit(uint256 _amount, bool _lock, bool _stake, address _user) public { if (_amount == 0) revert AMOUNT_ZERO(); if (_user == address(0)) revert ADDRESS_ZERO(); /// If _lock is true, lock tokens in the locker contract. if (_lock) { /// Transfer tokens to this contract IERC20(token).safeTransferFrom(msg.sender, locker, _amount); /// Transfer the balance uint256 balance = IERC20(token).balanceOf(address(this)); if (balance != 0) { IERC20(token).safeTransfer(locker, balance); } /// Lock the amount sent + balance of the contract. _lockToken(balance + _amount); /// If an incentive is available, add it to the amount. if (incentiveToken != 0) { _amount += incentiveToken; emit IncentiveReceived(msg.sender, incentiveToken); incentiveToken = 0; } } else { /// Transfer tokens to the locker contract and lock them. IERC20(token).safeTransferFrom(msg.sender, address(this), _amount); /// Compute call incentive and add to incentiveToken uint256 callIncentive = (_amount * lockIncentivePercent) / DENOMINATOR; /// Subtract call incentive from _amount _amount -= callIncentive; /// Add call incentive to incentiveToken incentiveToken += callIncentive; } // Mint sdtoken to the user if the gauge is not set if (_stake && gauge != address(0)) { /// Mint sdToken to this contract. ITokenMinter(minter).mint(address(this), _amount); /// Deposit sdToken into gauge for _user. ILiquidityGauge(gauge).deposit(_amount, _user); } else { /// Mint sdToken to _user. ITokenMinter(minter).mint(_user, _amount); } emit Deposited(msg.sender, _user, _amount, _lock, _stake); } /// @notice Lock tokens held by the contract /// @dev The contract must have Token to lock function lockToken() external { uint256 tokenBalance = IERC20(token).balanceOf(address(this)); if (tokenBalance != 0) { /// Transfer tokens to the locker contract and lock them. IERC20(token).safeTransfer(locker, tokenBalance); _lockToken(tokenBalance); } /// If there is incentive available give it to the user calling lockToken. if (incentiveToken != 0) { /// Mint incentiveToken to msg.sender. ITokenMinter(minter).mint(msg.sender, incentiveToken); emit IncentiveReceived(msg.sender, incentiveToken); /// Reset incentiveToken. incentiveToken = 0; } } /// @notice Locks the tokens held by the contract /// @dev The contract must have tokens to lock function _lockToken(uint256 _amount) internal virtual { // If there is Token available in the contract transfer it to the locker if (_amount != 0) { /// Increase the lock. ILocker(locker).increaseLock(_amount, block.timestamp + MAX_LOCK_DURATION); emit TokenLocked(msg.sender, _amount); } } //////////////////////////////////////////////////////////////// /// --- GOVERNANCE PARAMETERS /////////////////////////////////////////////////////////////// /// @notice Transfer the governance to a new address. /// @param _governance Address of the new governance. function transferGovernance(address _governance) external onlyGovernance { futureGovernance = _governance; } /// @notice Accept the governance transfer. function acceptGovernance() external { if (msg.sender != futureGovernance) revert GOVERNANCE(); governance = msg.sender; emit GovernanceChanged(msg.sender); } /// @notice Set the new operator for minting sdToken /// @param _minter operator minter address function setSdTokenMinterOperator(address _minter) external onlyGovernance { ISdToken(minter).setOperator(_minter); emit SdTokenOperatorChanged(_minter); } /// @notice Set the gauge to deposit sdToken /// @param _gauge gauge address function setGauge(address _gauge) external onlyGovernance { gauge = _gauge; if (_gauge != address(0)) { /// Approve sdToken to gauge. IERC20(minter).safeApprove(gauge, type(uint256).max); } } /// @notice Set the percentage of the lock incentive /// @param _lockIncentive Percentage of the lock incentive function setFees(uint256 _lockIncentive) external onlyGovernance { if (_lockIncentive >= 0 && _lockIncentive <= 30) { emit FeesChanged(lockIncentivePercent = _lockIncentive); } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. * * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't * need to send a transaction, and thus is not required to hold Ether at all. */ interface IERC20Permit { /** * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens, * given ``owner``'s signed approval. * * IMPORTANT: The same issues {IERC20-approve} has related to transaction * ordering also apply here. * * Emits an {Approval} event. * * Requirements: * * - `spender` cannot be the zero address. * - `deadline` must be a timestamp in the future. * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` * over the EIP712-formatted function arguments. * - the signature must use ``owner``'s current nonce (see {nonces}). * * For more information on the signature format, see the * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP * section]. */ function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; /** * @dev Returns the current nonce for `owner`. This value must be * included whenever a signature is generated for {permit}. * * Every successful call to {permit} increases ``owner``'s nonce by one. This * prevents a signature from being used multiple times. */ function nonces(address owner) external view returns (uint256); /** * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}. */ // solhint-disable-next-line func-name-mixedcase function DOMAIN_SEPARATOR() external view returns (bytes32); }
// SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.7; interface ILiquidityGauge { struct Reward { address token; address distributor; uint256 period_finish; uint256 rate; uint256 last_update; uint256 integral; } // solhint-disable-next-line function deposit_reward_token(address _rewardToken, uint256 _amount) external; // solhint-disable-next-line function claim_rewards_for(address _user, address _recipient) external; function working_balances(address _address) external view returns (uint256); // // solhint-disable-next-line // function claim_rewards_for(address _user) external; // solhint-disable-next-line function deposit(uint256 _value, address _addr) external; // solhint-disable-next-line function reward_tokens(uint256 _i) external view returns (address); // solhint-disable-next-line function reward_data(address _tokenReward) external view returns (Reward memory); function balanceOf(address) external returns (uint256); function claimable_reward(address _user, address _reward_token) external view returns (uint256); function claimable_tokens(address _user) external returns (uint256); function user_checkpoint(address _user) external returns (bool); function commit_transfer_ownership(address) external; function claim_rewards(address) external; function add_reward(address, address) external; function set_claimer(address) external; function admin() external view returns (address); function set_reward_distributor(address _rewardToken, address _newDistrib) external; function initialize( address staking_token, address admin, address SDT, address voting_escrow, address veBoost_proxy, address distributor ) external; function totalSupply() external returns (uint256); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.7; interface ILocker { function createLock(uint256, uint256) external; function claimAllRewards(address[] calldata _tokens, address _recipient) external; function increaseAmount(uint256) external; function increaseAmount(uint128) external; function increaseUnlockTime(uint256) external; function release() external; function claimRewards(address, address) external; function claimFXSRewards(address) external; function claimFPISRewards(address) external; function execute(address, uint256, bytes calldata) external returns (bool, bytes memory); function setGovernance(address) external; function voteGaugeWeight(address, uint256) external; function setAngleDepositor(address) external; function setDepositor(address) external; function setFxsDepositor(address) external; function setYieldDistributor(address) external; function setGaugeController(address) external; function setAccumulator(address _accumulator) external; function governance() external view returns (address); function increaseLock(uint256 _value, uint256 _duration) external; function release(address _recipient) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.7; interface ISdToken { function setOperator(address _operator) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.7; interface ITokenMinter { function mint(address, uint256) external; function burn(address, uint256) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IERC20.sol"; import "./IERC20Permit.sol"; import "./Address.sol"; /** * @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 Address for address; /** * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value, * non-reverting calls are assumed to be successful. */ function safeTransfer(IERC20 token, address to, uint256 value) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } /** * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful. */ 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' 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)); } /** * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value, * non-reverting calls are assumed to be successful. */ function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal { uint256 oldAllowance = token.allowance(address(this), spender); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance + value)); } /** * @dev Decrease the calling contract's allowance toward `spender` by `value`. If `token` returns no value, * non-reverting calls are assumed to be successful. */ function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, oldAllowance - value)); } } /** * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value, * non-reverting calls are assumed to be successful. Compatible with tokens that require the approval to be set to * 0 before setting it to a non-zero value. */ function forceApprove(IERC20 token, address spender, uint256 value) internal { bytes memory approvalCall = abi.encodeWithSelector(token.approve.selector, spender, value); if (!_callOptionalReturnBool(token, approvalCall)) { _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, 0)); _callOptionalReturn(token, approvalCall); } } /** * @dev Use a ERC-2612 signature to set the `owner` approval toward `spender` on `token`. * Revert on invalid signature. */ function safePermit( IERC20Permit token, address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) internal { uint256 nonceBefore = token.nonces(owner); token.permit(owner, spender, value, deadline, v, r, s); uint256 nonceAfter = token.nonces(owner); require(nonceAfter == nonceBefore + 1, "SafeERC20: permit did not succeed"); } /** * @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"); require(returndata.length == 0 || abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } /** * @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). * * This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead. */ function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) { // 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 cannot use {Address-functionCall} here since this should return false // and not revert is the subcall reverts. (bool success, bytes memory returndata) = address(token).call(data); return success && (returndata.length == 0 || abi.decode(returndata, (bool))) && Address.isContract(address(token)); } }
{ "areLibrariesMissing": false, "compilerPath": "/Users/andrea/Library/Caches/hardhat-nodejs/compilers-v2/zksolc/zksolc-v1.3.14", "experimental": {}, "libraries": {}, "missingLibrariesPath": "./.zksolc-libraries-cache/missingLibraryDependencies.json", "optimizer": { "enabled": true, "mode": "3" } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_locker","type":"address"},{"internalType":"address","name":"_minter","type":"address"},{"internalType":"address","name":"_gauge","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ADDRESS_ZERO","type":"error"},{"inputs":[],"name":"AMOUNT_ZERO","type":"error"},{"inputs":[],"name":"GOVERNANCE","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"duration","type":"uint256"}],"name":"CreateLock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"lock","type":"bool"},{"indexed":false,"internalType":"bool","name":"stake","type":"bool"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"FeesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newGovernance","type":"address"}],"name":"GovernanceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"IncentiveReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newSdToken","type":"address"}],"name":"SdTokenOperatorChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenLocked","type":"event"},{"inputs":[],"name":"DENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_LOCK_DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"createLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_lock","type":"bool"},{"internalType":"bool","name":"_stake","type":"bool"},{"internalType":"address","name":"_user","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"futureGovernance","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gauge","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"incentiveToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockIncentivePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"locker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lockIncentive","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_gauge","type":"address"}],"name":"setGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"setSdTokenMinterOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_governance","type":"address"}],"name":"transferGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
9c4d535b00000000000000000000000000000000000000000000000000000000000000000100046b3a3dd52a2f1b09219698f9064d0f8e64fded2dc111ea85cfea0c5e9d00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000080000000000000000000000000787c09494ec8bcb24dcaf8659e7d5d69979ee508000000000000000000000000b908eb86c9427269ec85c83bd812a2265778da3e0000000000000000000000008e6d4c0088b5b41bddb126f355ef278ac5b5974c0000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x0004000000000002000d00000000000200000000030100190000006003300270000004170430019700030000004103550002000000010355000004170030019d000100000000001f00000001012001900000003b0000c13d0000008001000039000000400010043f0000000001000031000000040110008c00000f960000413d0000000201000367000000000101043b000000e0011002700000042b0210009c0000004d0000213d000004380210009c000000dd0000a13d000004390210009c0000018d0000a13d0000043a0210009c000002d40000613d0000043b0210009c000002550000613d0000043c0110009c00000f960000c13d0000000001000416000000000101004b00000f960000c13d000000040100008a00000000011000310000041a02000041000000000301004b000000000300001900000000030240190000041a01100197000000000401004b000000000200a0190000041a0110009c00000000010300190000000001026019000000000101004b00000f960000c13d0000000401000039000000000101041a0000041b01100197000000400200043d00000000001204350000041701000041000004170320009c0000000001024019000000400110021000000445011001c7000010570001042e0000010001000039000000400010043f0000000001000416000000000101004b00000f960000c13d00000000010000310000011f02100039000000200800008a000000000282016f0000041803200041000004190330009c0000007c0000213d000004590100004100000000001004350000004101000039000000040010043f0000044f0100004100001058000104300000042c0210009c0000010c0000a13d0000042d0210009c000001ad0000a13d0000042e0210009c000003440000613d0000042f0210009c000002700000613d000004300110009c00000f960000c13d0000000001000416000000000101004b00000f960000c13d000000040100008a00000000011000310000041a02000041000000000301004b000000000300001900000000030240190000041a01100197000000000401004b000000000200a0190000041a0110009c00000000010300190000000001026019000000000101004b00000f960000c13d000000400100043d000d00000001001d000004440100004100000000001004390000000001000412000000040010044300000020010000390000002400100443000080050100003900000044020000391056103b0000040f0000041b011001970000000d0300002900000000001304350000041701000041000004170230009c0000000001034019000000400110021000000445011001c7000010570001042e000000400020043f0000001f0210018f000000020300036700000005041002720000008a0000613d00000000050000190000000506500210000000000763034f000000000707043b000001000660003900000000007604350000000105500039000000000645004b000000820000413d000000000502004b000000990000613d0000000504400210000000000343034f00000003022002100000010004400039000000000504043300000000052501cf000000000525022f000000000303043b0000010002200089000000000323022f00000000022301cf000000000252019f00000000002404350000041a02000041000000800310008c000000000300001900000000030240190000041a01100197000000000401004b000000000200a0190000041a0110009c00000000010300190000000001026019000000000101004b00000f960000c13d000001000200043d0000041b0120009c00000f960000213d000001200100043d0000041b0310009c00000f960000213d000001400300043d000d00000003001d0000041b0330009c00000f960000213d000001600300043d000c00000003001d0000041b0330009c00000f960000213d0000000a03000039000000000030041b0000000303000039000000000403041a0000041c044001970000000005000411000000000454019f000000000043041b000000a00020043f0000000202000039000000000302041a0000041c033001970000000c04000029000000000343019f000000000032041b0000000d02000029000000e00020043f000000c00010043f0000041d01000041000000800010043f000000000104004b000003d00000c13d000000800100043d00000140000004430000016000100443000000a00100043d00000020020000390000018000200443000001a000100443000000c00100043d0000004003000039000001c000300443000001e0001004430000006001000039000000e00300043d000002000010044300000220003004430000010000200443000000040100003900000120001004430000042a01000041000010570001042e0000043f0210009c0000012e0000213d000004420210009c000001d30000613d000004430110009c00000f960000c13d0000000001000416000000000101004b00000f960000c13d000000040100008a00000000011000310000041a02000041000000000301004b000000000300001900000000030240190000041a01100197000000000401004b000000000200a0190000041a0110009c00000000010300190000000001026019000000000101004b00000f960000c13d0000000401000039000000000101041a0000041b011001970000000005000411000000000115004b000003c70000c13d0000000301000039000000000201041a0000041c02200197000000000252019f000000000021041b00000417010000410000000002000414000004170320009c0000000001024019000000c0011002100000045f011001c70000800d02000039000000020300003900000467040000411056104c0000040f000000010120019000000f960000613d0000038e0000013d000004330210009c000001550000213d000004360210009c000001f10000613d000004370110009c00000f960000c13d0000000001000416000000000101004b00000f960000c13d000000040100008a00000000011000310000041a02000041000000000301004b000000000300001900000000030240190000041a01100197000000000401004b000000000200a0190000041a0110009c00000000010300190000000001026019000000000101004b00000f960000c13d0000000201000039000000000101041a0000041b01100197000000400200043d00000000001204350000041701000041000004170320009c0000000001024019000000400110021000000445011001c7000010570001042e000004400210009c0000020b0000613d000004410110009c00000f960000c13d0000000001000416000000000101004b00000f960000c13d000000040100008a00000000011000310000041a02000041000000000301004b000000000300001900000000030240190000041a01100197000000000401004b000000000200a0190000041a0110009c00000000010300190000000001026019000000000101004b00000f960000c13d000000400100043d000d00000001001d00000444010000410000000000100439000000000100041200000004001004430000002400000443000080050100003900000044020000391056103b0000040f0000000d0300002900000000001304350000041701000041000004170230009c0000000001034019000000400110021000000445011001c7000010570001042e000004340210009c0000023b0000613d000004350110009c00000f960000c13d0000000001000416000000000101004b00000f960000c13d000000040100008a00000000011000310000041a02000041000000000301004b000000000300001900000000030240190000041a01100197000000000401004b000000000200a0190000041a0110009c00000000010300190000000001026019000000000101004b00000f960000c13d000004440100004100000000001004390000000001000412000d00000001001d00000004001004430000002001000039000c00000001001d000000240010044300000417010000410000000002000414000004170320009c0000000001024019000000c00110021000000446011001c70000800502000039105610510000040f000000010220019000000f960000613d000000000201043b000000400a00043d0000044e0100004100000000001a04350000000401a000390000000003000410000000000031043500000000010004140000041b02200197000000040320008c000b00000002001d000004460000c13d0000000103000031000000200130008c00000020040000390000000004034019000004780000013d0000043d0210009c000003690000613d0000043e0110009c00000f960000c13d0000000001000416000000000101004b00000f960000c13d000000040100008a00000000011000310000041a02000041000000000301004b000000000300001900000000030240190000041a01100197000000000401004b000000000200a0190000041a0110009c00000000010300190000000001026019000000000101004b00000f960000c13d0000000301000039000000000101041a0000041b01100197000000400200043d00000000001204350000041701000041000004170320009c0000000001024019000000400110021000000445011001c7000010570001042e000004310210009c000003900000613d000004320110009c00000f960000c13d0000000001000416000000000101004b00000f960000c13d000000040100008a00000000011000310000041a02000041000000200310008c000000000300001900000000030240190000041a01100197000000000401004b000000000200a0190000041a0110009c00000000010300190000000001026019000000000101004b00000f960000c13d00000004010000390000000202100367000000000202043b0000041b0320009c00000f960000213d0000000303000039000000000303041a0000041b033001970000000004000411000000000334004b000003c70000c13d000000000301041a0000041c03300197000000000223019f000000000021041b0000000001000019000010570001042e0000000001000416000000000101004b00000f960000c13d000000040100008a00000000011000310000041a02000041000000000301004b000000000300001900000000030240190000041a01100197000000000401004b000000000200a0190000041a0110009c00000000010300190000000001026019000000000101004b00000f960000c13d000004440100004100000000001004390000000001000412000000040010044300000060010000390000002400100443000080050100003900000044020000391056103b0000040f0000041b01100197000000800010043f0000046801000041000010570001042e0000000001000416000000000101004b00000f960000c13d000000040100008a00000000011000310000041a02000041000000000301004b000000000300001900000000030240190000041a01100197000000000401004b000000000200a0190000041a0110009c00000000010300190000000001026019000000000101004b00000f960000c13d000000400100043d000027100200003900000000002104350000041702000041000004170310009c0000000001028019000000400110021000000445011001c7000010570001042e0000000001000416000000000101004b00000f960000c13d000000040100008a00000000011000310000041a02000041000000200310008c000000000300001900000000030240190000041a01100197000000000401004b000000000200a0190000041a0110009c00000000010300190000000001026019000000000101004b00000f960000c13d00000004010000390000000201100367000000000101043b0000000302000039000000000202041a0000041b022001970000000003000411000000000223004b000003c70000c13d0000001e0210008c0000038e0000213d000000000010041b000000400200043d000000000012043500000417010000410000000003000414000004170430009c0000000003018019000004170420009c00000000010240190000004001100210000000c002300210000000000112019f00000453011001c70000800d02000039000000010300003900000465040000411056104c0000040f00000001012001900000038e0000c13d00000f960000013d0000000001000416000000000101004b00000f960000c13d000000040100008a00000000011000310000041a02000041000000000301004b000000000300001900000000030240190000041a01100197000000000401004b000000000200a0190000041a0110009c00000000010300190000000001026019000000000101004b00000f960000c13d000000400100043d000000000200041a00000000002104350000041702000041000004170310009c0000000001028019000000400110021000000445011001c7000010570001042e0000000001000416000000000101004b00000f960000c13d000000040100008a00000000011000310000041a02000041000000000301004b000000000300001900000000030240190000041a01100197000000000401004b000000000200a0190000041a0110009c00000000010300190000000001026019000000000101004b00000f960000c13d0000000101000039000000000101041a000000400200043d00000000001204350000041701000041000004170320009c0000000001024019000000400110021000000445011001c7000010570001042e0000000001000416000000000101004b00000f960000c13d000000040100008a00000000011000310000041a02000041000000200310008c000000000300001900000000030240190000041a01100197000000000401004b000000000200a0190000041a0110009c00000000010300190000000001026019000000000101004b00000f960000c13d00000004010000390000000201100367000000000101043b000c00000001001d000004440100004100000000001004390000000001000412000d00000001001d00000004001004430000004001000039000000240010044300000417010000410000000002000414000004170320009c0000000001024019000000c00110021000000446011001c70000800502000039105610510000040f000000010220019000000f960000613d000000000101043b000b00000001001d000004440100004100000000001004390000000d0100002900000004001004430000002001000039000a00000001001d000000240010044300000417010000410000000002000414000004170320009c0000000001024019000000c00110021000000446011001c70000800502000039105610510000040f000000010220019000000f960000613d000000000301043b000000400700043d00000064017000390000000c0400002900000000004104350000002001700039000004470400004100000000004104350000000b020000290000041b06200197000000440470003900000000006404350000006404000039000000000047043500000000040004110000041b05400197000000240470003900000000005404350000041b02300197000004480370009c000000470000213d000000a004700039000000400040043f000004490370009c000000470000213d000700000006001d000600000005001d000000e003700039000000400030043f0000000a03000029000900000004001d0000000000340435000000c0037000390000042704000041000000000043043500000000030704330000000006000414000000040420008c000b00000002001d000005b70000c13d00000001020000390000000101000031000005ca0000013d0000000001000416000000000101004b00000f960000c13d000000040100008a00000000011000310000041a02000041000000200310008c000000000300001900000000030240190000041a01100197000000000401004b000000000200a0190000041a0110009c00000000010300190000000001026019000000000101004b00000f960000c13d00000004010000390000000201100367000000000101043b000d00000001001d0000041b0110009c00000f960000213d0000000301000039000000000101041a0000041b011001970000000002000411000000000112004b000003c70000c13d00000444010000410000000000100439000000000100041200000004001004430000006001000039000000240010044300000417010000410000000002000414000004170320009c0000000001024019000000c00110021000000446011001c70000800502000039105610510000040f000000010220019000000f960000613d000000000101043b000004280200004100000000002004390000041b01100197000c00000001001d000000040010044300000417010000410000000002000414000004170320009c0000000001024019000000c00110021000000429011001c70000800202000039105610510000040f000000010220019000000f960000613d000000000101043b000000000101004b00000f960000613d000000400500043d0000045e01000041000000000015043500000004015000390000000d02000029000000000021043500000000010004140000000c02000029000000040320008c000003320000613d0000041704000041000004170310009c0000000001048019000004170350009c000000000304001900000000030540190000004003300210000000c001100210000000000131019f0000044f011001c7000c00000005001d1056104c0000040f0000000c0500002900000000030100190000006003300270000104170030019d000004170430019700030000000103550000000102200190000008b30000613d0000000002050019000004200150009c000000470000213d000000400020043f00000417010000410000000002000414000004170320009c0000000001024019000000c0011002100000045f011001c70000800d02000039000000020300003900000460040000410000000d050000291056104c0000040f00000001012001900000038e0000c13d00000f960000013d0000000001000416000000000101004b00000f960000c13d000000040100008a00000000011000310000041a02000041000000000301004b000000000300001900000000030240190000041a01100197000000000401004b000000000200a0190000041a0110009c00000000010300190000000001026019000000000101004b00000f960000c13d000000400100043d000d00000001001d000004440100004100000000001004390000000001000412000000040010044300000040010000390000002400100443000080050100003900000044020000391056103b0000040f0000041b011001970000000d0300002900000000001304350000041701000041000004170230009c0000000001034019000000400110021000000445011001c7000010570001042e0000000001000416000000000101004b00000f960000c13d000000040100008a00000000011000310000041a02000041000000200310008c000000000300001900000000030240190000041a01100197000000000401004b000000000200a0190000041a0110009c00000000010300190000000001026019000000000101004b00000f960000c13d00000004010000390000000201100367000000000101043b000d00000001001d0000041b0110009c00000f960000213d0000000301000039000000000101041a0000041b011001970000000002000411000000000112004b000003c70000c13d0000000201000039000000000201041a0000041c022001970000000d03000029000000000232019f000000000021041b000000000103004b000005170000c13d0000000001000019000010570001042e0000000001000416000000000101004b00000f960000c13d000000040100008a00000000011000310000041a02000041000000800310008c000000000300001900000000030240190000041a01100197000000000401004b000000000200a0190000041a0110009c00000000010300190000000001026019000000000101004b00000f960000c13d00000002010003670000000402100370000000000202043b000d00000002001d0000002402100370000000000302043b000000000203004b0000000002000019000000010200c039000c00000003001d000000000223004b00000f960000c13d0000004402100370000000000302043b000000000203004b0000000002000019000000010200c039000b00000003001d000000000223004b00000f960000c13d0000006401100370000000000101043b0000041b02100197000a00000002001d0000041b0110009c00000f960000213d0000000d01000029000000000101004b000005620000c13d000000400100043d0000045c0200004100000000002104350000041702000041000004170310009c000000000102801900000040011002100000045b011001c70000105800010430000000400100043d000004660200004100000000002104350000041702000041000004170310009c000000000102801900000040011002100000045b011001c70000105800010430000000400a00043d0000002401a000390000000c0200002900000000002104350000041e0100004100000000001a04350000000401a000390000000002000410000000000021043500000000010004140000000d02000029000000040320008c000003e20000c13d0000000103000031000000200130008c00000020040000390000000004034019000004160000013d000b00000008001d0000041704000041000004170310009c00000000010480190000041703a0009c000000000304001900000000030a40190000004003300210000000c001100210000000000131019f0000041f011001c7000a0000000a001d105610510000040f0000000a0a000029000000000301001900000060033002700000041703300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000004020000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000003fa0000413d000000000705004b000004110000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f000300000001035500000001022001900000000b08000029000004f10000613d0000001f01400039000000600210018f0000000001a20019000000000221004b00000000020000190000000102004039000004200410009c000000470000213d0000000102200190000000470000c13d000000400010043f000000200230008c00000f960000413d00000000020a0433000000000202004b0000056e0000c13d0000004402100039000000010300008a000000000032043500000020021000390000042503000041000000000032043500000024031000390000000c04000029000000000043043500000044030000390000000000310435000004260310009c000000470000213d000b00000008001d0000008004100039000000c003100039000000400030043f0000002003000039000c00000004001d000a00000003001d0000000000340435000000a00310003900000427040000410000000000430435000000000301043300000000010004140000000d04000029000000040440008c000008090000c13d000000010200003900000001010000310000081c0000013d0000041704000041000004170310009c00000000010480190000041703a0009c000000000304001900000000030a40190000004003300210000000c001100210000000000131019f0000044f011001c7000a0000000a001d105610510000040f0000000a0a000029000000000301001900000060033002700000041703300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000004650000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b0000045d0000413d000000000705004b000004740000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f000300000001035500000001022001900000053c0000613d0000001f01400039000000600210018f0000000001a20019000000000221004b00000000020000190000000102004039000004200410009c000000470000213d0000000102200190000000470000c13d000000400010043f000000200130008c00000f960000413d00000000010a0433000a00000001001d000000000101004b000005820000c13d0000000101000039000b00000001001d000000000101041a000c00000001001d000000000101004b0000038e0000613d000004440100004100000000001004390000000d0100002900000004001004430000006001000039000000240010044300000417010000410000000002000414000004170320009c0000000001024019000000c00110021000000446011001c70000800502000039105610510000040f000000010220019000000f960000613d000000000101043b000004280200004100000000002004390000041b01100197000d00000001001d000000040010044300000417010000410000000002000414000004170320009c0000000001024019000000c00110021000000429011001c70000800202000039105610510000040f000000010220019000000f960000613d000000000101043b000000000101004b00000f960000613d000000400300043d00000024013000390000000c0200002900000000002104350000044b0100004100000000001304350000000001000411000a00000001001d0000041b01100197000c00000003001d0000000402300039000000000012043500000000010004140000000d02000029000000040220008c000004d50000613d0000041702000041000004170310009c00000000010280190000000c04000029000004170340009c00000000020440190000004002200210000000c001100210000000000121019f0000041f011001c70000000d020000291056104c0000040f00000000030100190000006003300270000104170030019d00000417043001970003000000010355000000010220019000000a7c0000613d0000000c01000029000004200110009c000000470000213d0000000c04000029000000400040043f0000000b01000029000000000101041a000000000014043500000417010000410000000002000414000004170320009c0000000002018019000004170340009c00000000010440190000004001100210000000c002200210000000000112019f00000453011001c70000800d02000039000000020300003900000455040000410000000a050000291056104c0000040f000000010120019000000f960000613d0000000b01000029000000000001041b0000038e0000013d000000400200043d0000001f0430018f0000000503300272000004fe0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000004f60000413d000000000504004b0000050d0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000417010000410000000103000031000004170430009c0000000003018019000004170420009c000000000102401900000040011002100000006002300210000000000112019f000010580001043000000444010000410000000000100439000000000100041200000004001004430000006001000039000c00000001001d000000240010044300000417010000410000000002000414000004170320009c0000000001024019000000c00110021000000446011001c70000800502000039105610510000040f000000010220019000000f960000613d000000000201043b000000400a00043d0000002401a000390000000d0300002900000000003104350000041e0100004100000000001a04350000000401a000390000000003000410000000000031043500000000010004140000041b02200197000000040320008c000b00000002001d000006260000c13d0000000103000031000000200130008c00000020040000390000000004034019000006580000013d000000400200043d0000001f0430018f0000000503300272000005490000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000005410000413d000000000504004b000005580000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000417010000410000000103000031000004170430009c0000000003018019000004170420009c000000000102401900000040011002100000006002300210000000000112019f00001058000104300000000a01000029000000000101004b0000068c0000c13d000000400100043d0000045a0200004100000000002104350000041702000041000004170310009c000000000102801900000040011002100000045b011001c70000105800010430000000640210003900000421030000410000000000320435000000440210003900000422030000410000000000320435000000240210003900000036030000390000000000320435000004230200004100000000002104350000000402100039000000200300003900000000003204350000041702000041000004170310009c0000000001028019000000400110021000000424011001c70000105800010430000004440100004100000000001004390000000d0100002900000004001004430000004001000039000900000001001d000000240010044300000417010000410000000002000414000004170320009c0000000001024019000000c00110021000000446011001c70000800502000039105610510000040f000000010220019000000f960000613d000000000301043b000000400200043d00000044012000390000000a0400002900000000004104350000002001200039000004500400004100000000004104350000041b033001970000002404200039000000000034043500000044030000390000000000320435000004510320009c000000470000213d0000008003200039000000400030043f000800000003001d0000045d0330009c000000470000213d000000c003200039000000400030043f0000000c0300002900000008040000290000000000340435000000a00320003900000427040000410000000000430435000000000302043300000000020004140000000b04000029000000040440008c000008f80000c13d000000010200003900000001010000310000090b0000013d0000041704000041000004170510009c00000000010480190000004001100210000004170530009c00000000030480190000006003300210000000000113019f000004170360009c00000000030400190000000003064019000000c003300210000000000131019f1056104c0000040f000000010220018f00030000000103550000006001100270000104170010019d00000417011001970000006006000039000000000301004b000005fb0000613d0000003f03100039000000200400008a000000000343016f000000400600043d0000000003360019000000000463004b00000000040000190000000104004039000004200530009c0000000b05000029000000470000213d0000000104400190000000470000c13d000000400030043f00000000090600190000000001160436000000030300036700000001050000310000001f0450018f0000000505500272000005eb0000613d000000000600001900000005076002100000000008710019000000000773034f000000000707043b00000000007804350000000106600039000000000756004b000005e30000413d000000000604004b0000000006090019000005fb0000613d0000000505500210000000000353034f00000000015100190000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f0000000000310435000500000006001d0000000031060434000800000003001d000000000202004b000006cd0000c13d000000000201004b0000087b0000c13d000000400100043d0000042302000041000000000021043500000004021000390000000a03000029000000000032043500000009070000290000000002070433000000240310003900000000002304350000004403100039000000000402004b000006170000613d000000000400001900000000053400190000002004400039000000000674001900000000060604330000000000650435000000000524004b000006100000413d0000001f04200039000000200500008a000000000454016f0000000002320019000000000002043500000044024000390000041703000041000004170420009c0000000002038019000004170410009c000000000103801900000040011002100000006002200210000000000112019f00001058000104300000041704000041000004170310009c00000000010480190000041703a0009c000000000304001900000000030a40190000004003300210000000c001100210000000000131019f0000041f011001c7000a0000000a001d105610510000040f0000000a0a000029000000000301001900000060033002700000041703300197000000200430008c000000200400003900000000040340190000001f0540018f0000000506400272000006450000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b0000063d0000413d000000000705004b000006540000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f00030000000103550000000102200190000007a10000613d0000001f01400039000000600210018f00000000050a00190000000001a20019000000000221004b00000000020000190000000102004039000004200410009c000000470000213d0000000102200190000000470000c13d000000400010043f000000200230008c00000f960000413d0000000002050433000000000202004b000008d90000c13d0000004402100039000000010300008a000000000032043500000020021000390000042503000041000000000032043500000024031000390000000d04000029000000000043043500000044030000390000000000310435000004510310009c000000470000213d0000008003100039000d00000003001d000000400030043f000004260310009c000000470000213d000000c003100039000000400030043f00000020040000390000000d03000029000a00000004001d0000000000430435000000a00310003900000427040000410000000000430435000000000301043300000000010004140000000b04000029000000040440008c00000aa20000c13d0000000102000039000000010100003100000ab50000013d000004440100004100000000001004390000000001000412000900000001001d00000004001004430000002001000039000800000001001d000000240010044300000417010000410000000002000414000004170320009c0000000001024019000000c00110021000000446011001c70000800502000039105610510000040f0000000c03000029000000000303004b000000010220018f000007c70000c13d000000000202004b00000f960000613d000000000301043b000000400200043d00000064012000390000000d04000029000000000041043500000000010004100000041b011001970000004404200039000000000014043500000020012000390000044704000041000000000041043500000000040004110000041b0440019700000024052000390000000000450435000000640400003900000000004204350000041b03300197000700000003001d000004480320009c000000470000213d000000a003200039000600000003001d000000400030043f000004490320009c000000470000213d000000e003200039000000400030043f000000080300002900000006040000290000000000340435000000c00320003900000427040000410000000000430435000000000302043300000000020004140000000704000029000000040440008c00000a0c0000c13d0000000102000039000000010100003100000a1f0000013d000000000201004b000006e40000c13d000004280100004100000000001004390000000b01000029000000040010044300000417010000410000000002000414000004170320009c0000000001024019000000c00110021000000429011001c70000800202000039105610510000040f000000010220019000000f960000613d000000000101043b000000000101004b00000c0c0000613d00000005010000290000000001010433000000000201004b000006f90000613d0000041a02000041000000200310008c000000000300001900000000030240190000041a01100197000000000401004b000000000200a0190000041a0110009c00000000010300190000000001026019000000000101004b00000f960000c13d00000008010000290000000001010433000000000201004b0000000002000019000000010200c039000000000221004b00000f960000c13d000000000101004b00000c730000613d000004440100004100000000001004390000000d010000290000000400100443000000240000044300000417010000410000000002000414000004170320009c0000000001024019000000c00110021000000446011001c70000800502000039105610510000040f000000010220019000000f960000613d000000000101043b000b00000001001d000004280100004100000000001004390000000701000029000000040010044300000417010000410000000002000414000004170320009c0000000001024019000000c00110021000000429011001c70000800202000039105610510000040f000000010220019000000f960000613d000000000101043b000000000101004b00000f960000613d000000400300043d00000024013000390000000b0200002900000000002104350000044a010000410000000000130435000a00000003001d00000004013000390000000c02000029000000000021043500000000010004140000000702000029000000040220008c0000073c0000613d0000041702000041000004170310009c00000000010280190000000a04000029000004170340009c00000000020440190000004002200210000000c001100210000000000121019f0000041f011001c700000007020000291056104c0000040f00000000030100190000006003300270000104170030019d00000417043001970003000000010355000000010220019000000c340000613d0000000a01000029000004200110009c000000470000213d0000000a01000029000000400010043f000004440100004100000000001004390000000d0100002900000004001004430000006001000039000000240010044300000417010000410000000002000414000004170320009c0000000001024019000000c00110021000000446011001c70000800502000039105610510000040f000000010220019000000f960000613d000000000101043b000004280200004100000000002004390000041b01100197000d00000001001d000000040010044300000417010000410000000002000414000004170320009c0000000001024019000000c00110021000000429011001c70000800202000039105610510000040f000000010220019000000f960000613d000000000101043b000000000101004b00000f960000613d000000400300043d00000024013000390000000c0200002900000000002104350000044b010000410000000001130436000900000001001d000a00000003001d00000004013000390000000602000029000000000021043500000000010004140000000d02000029000000040220008c000007860000613d0000041702000041000004170310009c00000000010280190000000a04000029000004170340009c00000000020440190000004002200210000000c001100210000000000121019f0000041f011001c70000000d020000291056104c0000040f00000000030100190000006003300270000104170030019d00000417043001970003000000010355000000010220019000000d9b0000613d0000000a01000029000004200110009c000000470000213d0000000a04000029000000400040043f0000000b01000029000000090200002900000000001204350000000c01000029000000000014043500000417010000410000000002000414000004170320009c0000000002018019000004170340009c00000000010440190000004001100210000000c002200210000000000112019f0000044c011001c70000800d0200003900000001030000390000044d040000411056104c0000040f00000001012001900000038e0000c13d00000f960000013d000000400200043d0000001f0430018f0000000503300272000007ae0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b000007a60000413d000000000504004b000007bd0000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000417010000410000000103000031000004170430009c0000000003018019000004170420009c000000000102401900000040011002100000006002300210000000000112019f0000105800010430000000000202004b00000f960000613d000000000101043b000700000001001d00000444010000410000000000100439000000090100002900000004001004430000004001000039000600000001001d000000240010044300000417010000410000000002000414000004170320009c0000000001024019000000c00110021000000446011001c70000800502000039105610510000040f00000007030000290000041b03300197000700000003001d000000010220019000000f960000613d000000000301043b000000400200043d00000064012000390000000d0400002900000000004104350000002001200039000004470400004100000000004104350000000004000411000400000004001d0000041b0440019700000024052000390000000000450435000000640400003900000000004204350000041b043001970000004403200039000500000004001d0000000000430435000004480320009c000000470000213d000000a003200039000300000003001d000000400030043f000004490320009c000000470000213d000000e003200039000000400030043f000000080300002900000003040000290000000000340435000000c00320003900000427040000410000000000430435000000000302043300000000020004140000000704000029000000040440008c00000b7e0000c13d0000000102000039000000010100003100000b910000013d0000041704000041000004170520009c00000000020480190000004002200210000004170530009c00000000030480190000006003300210000000000223019f000004170310009c0000000001048019000000c001100210000000000112019f0000000d020000291056104c0000040f000000010220018f00030000000103550000006001100270000104170010019d00000417011001970000006009000039000000000301004b0000084a0000c13d000800000009001d0000000031090434000900000003001d000000000202004b000008860000c13d000000000201004b000008ed0000c13d000000400100043d0000042302000041000000000021043500000004021000390000000a0300002900000000003204350000000c070000290000000002070433000000240310003900000000002304350000004403100039000000000402004b0000083b0000613d000000000400001900000000053400190000002004400039000000000674001900000000060604330000000000650435000000000524004b000008340000413d0000001f042000390000000b05000029000000000454016f0000000002320019000000000002043500000044024000390000041703000041000004170420009c0000000002038019000004170410009c000000000103801900000040011002100000006002200210000000000112019f0000105800010430000004200310009c0000000b04000029000000470000213d0000001f031000390000001f033001bf0000002003300039000000000343016f000000400400043d00000000033400190000000009040019000000000443004b00000000040000190000000104004039000004200530009c000000470000213d0000000104400190000000470000c13d000000400030043f0000000001190436000000030300036700000001050000310000001f0450018f00000005055002720000086b0000613d000000000600001900000005076002100000000008710019000000000773034f000000000707043b00000000007804350000000106600039000000000756004b000008630000413d000000000604004b0000081f0000613d0000000505500210000000000353034f00000000015100190000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f00000000003104350000081f0000013d00000417020000410000000804000029000004170340009c00000000030200190000000003044019000004170410009c000000000102801900000060011002100000004002300210000000000121019f0000105800010430000000000201004b0000089d0000c13d000004280100004100000000001004390000000d01000029000000040010044300000417010000410000000002000414000004170320009c0000000001024019000000c00110021000000429011001c70000800202000039105610510000040f000000010220019000000f960000613d000000000101043b000000000101004b00000c0c0000613d00000008010000290000000001010433000000000201004b000000c90000613d0000041a02000041000000200310008c000000000300001900000000030240190000041a01100197000000000401004b000000000200a0190000041a0110009c00000000010300190000000001026019000000000101004b00000f960000c13d00000009010000290000000001010433000000000201004b0000000002000019000000010200c039000000000221004b00000f960000c13d000000000101004b00000c730000613d000000c90000013d000000400200043d0000001f0340018f0000000504400272000008c00000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b000008b80000413d000000000503004b000008cf0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000417010000410000000103000031000004170430009c0000000003018019000004170420009c000000000102401900000040011002100000006002300210000000000112019f0000105800010430000000640210003900000421030000410000000000320435000000440210003900000422030000410000000000320435000000240210003900000036030000390000000000320435000004230200004100000000002104350000000402100039000000200300003900000000003204350000041702000041000004170310009c0000000001028019000000400110021000000424011001c7000010580001043000000417020000410000000904000029000004170340009c00000000030200190000000003044019000004170410009c000000000102801900000060011002100000004002300210000000000121019f00001058000104300000041704000041000004170510009c00000000010480190000004001100210000004170530009c00000000030480190000006003300210000000000113019f000004170320009c0000000002048019000000c002200210000000000121019f0000000b020000291056104c0000040f000000010220018f00030000000103550000006001100270000104170010019d00000417011001970000006003000039000700000003001d000000000301004b0000093a0000c13d00000007010000290000000031010434000600000003001d000000000202004b000009680000c13d000000000201004b00000a010000c13d000000400100043d0000042302000041000000000021043500000004021000390000000c03000029000000000032043500000008070000290000000002070433000000240310003900000000002304350000004403100039000000000402004b0000092b0000613d000000000400001900000000053400190000002004400039000000000674001900000000060604330000000000650435000000000524004b000009240000413d0000001f04200039000000200500008a000000000454016f0000000002320019000000000002043500000044024000390000041703000041000004170420009c0000000002038019000004170410009c000000000103801900000040011002100000006002200210000000000112019f00001058000104300000003f03100039000000200400008a000000000343016f000000400400043d0000000003340019000700000004001d000000000443004b00000000040000190000000104004039000004200530009c000000470000213d0000000104400190000000470000c13d000000400030043f00000007030000290000000001130436000000030300036700000001050000310000001f0450018f0000000505500272000009580000613d000000000600001900000005076002100000000008710019000000000773034f000000000707043b00000000007804350000000106600039000000000756004b000009500000413d000000000604004b0000090f0000613d0000000505500210000000000353034f00000000015100190000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f00000000003104350000090f0000013d000000000201004b0000097f0000c13d000004280100004100000000001004390000000b01000029000000040010044300000417010000410000000002000414000004170320009c0000000001024019000000c00110021000000429011001c70000800202000039105610510000040f000000010220019000000f960000613d000000000101043b000000000101004b00000c0c0000613d00000007010000290000000001010433000000000201004b000009940000613d0000041a02000041000000200310008c000000000300001900000000030240190000041a01100197000000000401004b000000000200a0190000041a0110009c00000000010300190000000001026019000000000101004b00000f960000c13d00000006010000290000000001010433000000000201004b0000000002000019000000010200c039000000000221004b00000f960000c13d000000000101004b00000c730000613d000004440100004100000000001004390000000d0100002900000004001004430000000901000029000000240010044300000417010000410000000002000414000004170320009c0000000001024019000000c00110021000000446011001c70000800502000039105610510000040f000000010220019000000f960000613d000000000101043b000004280200004100000000002004390000041b01100197000c00000001001d000000040010044300000417010000410000000002000414000004170320009c0000000001024019000000c00110021000000429011001c70000800202000039105610510000040f000000010220019000000f960000613d000000000101043b000000000101004b00000f960000613d000000400200043d00000452010000410000000000120435000b00000002001d00000004012000390000000a020000290000000000210435000004440100004100000000001004390000000d010000290000000400100443000000240000044300000417010000410000000002000414000004170320009c0000000001024019000000c00110021000000446011001c70000800502000039105610510000040f000000010220019000000f960000613d000000000101043b0000000b020000290000002402200039000000000012043500000000010004140000000c02000029000000040220008c000009e80000613d0000041702000041000004170310009c00000000010280190000000b04000029000004170340009c00000000020440190000004002200210000000c001100210000000000121019f0000041f011001c70000000c020000291056104c0000040f00000000030100190000006003300270000104170030019d00000417043001970003000000010355000000010220019000000dc10000613d0000000b01000029000004200110009c000000470000213d0000000b04000029000000400040043f0000000a01000029000000000014043500000417010000410000000002000414000004170320009c0000000002018019000004170340009c00000000010440190000004001100210000000c002200210000000000112019f00000453011001c70000800d020000390000000203000039000004540400004100000000050004111056104c0000040f000000010120019000000f960000613d000004890000013d00000417020000410000000604000029000004170340009c00000000030200190000000003044019000004170410009c000000000102801900000060011002100000004002300210000000000121019f00001058000104300000041704000041000004170510009c00000000010480190000004001100210000004170530009c00000000030480190000006003300210000000000113019f000004170320009c0000000002048019000000c002200210000000000121019f00000007020000291056104c0000040f000000010220018f00030000000103550000006001100270000104170010019d00000417011001970000006003000039000500000003001d000000000301004b00000a4e0000c13d00000005010000290000000031010434000400000003001d000000000202004b00000ae20000c13d000000000201004b00000bee0000c13d000000400100043d0000042302000041000000000021043500000004021000390000000803000029000000000032043500000006070000290000000002070433000000240310003900000000002304350000004403100039000000000402004b00000a3f0000613d000000000400001900000000053400190000002004400039000000000674001900000000060604330000000000650435000000000524004b00000a380000413d0000001f04200039000000200500008a000000000454016f0000000002320019000000000002043500000044024000390000041703000041000004170420009c0000000002038019000004170410009c000000000103801900000040011002100000006002200210000000000112019f00001058000104300000003f03100039000000200400008a000000000343016f000000400400043d0000000003340019000500000004001d000000000443004b00000000040000190000000104004039000004200530009c000000470000213d0000000104400190000000470000c13d000000400030043f00000005030000290000000001130436000000030300036700000001050000310000001f0450018f000000050550027200000a6c0000613d000000000600001900000005076002100000000008710019000000000773034f000000000707043b00000000007804350000000106600039000000000756004b00000a640000413d000000000604004b00000a230000613d0000000505500210000000000353034f00000000015100190000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f000000000031043500000a230000013d000000400200043d0000001f0340018f000000050440027200000a890000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b00000a810000413d000000000503004b00000a980000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000417010000410000000103000031000004170430009c0000000003018019000004170420009c000000000102401900000040011002100000006002300210000000000112019f00001058000104300000041704000041000004170520009c00000000020480190000004002200210000004170530009c00000000030480190000006003300210000000000223019f000004170310009c0000000001048019000000c001100210000000000112019f0000000b020000291056104c0000040f000000010220018f00030000000103550000006001100270000104170010019d0000041701100197000000000301004b00000b230000c13d0000000c010000290000000031010434000900000003001d000000000202004b00000b510000c13d000000000201004b00000c1e0000c13d000000400100043d0000042302000041000000000021043500000004021000390000000a0300002900000000003204350000000d070000290000000002070433000000240310003900000000002304350000004403100039000000000402004b00000ad30000613d000000000400001900000000053400190000002004400039000000000674001900000000060604330000000000650435000000000524004b00000acc0000413d0000001f04200039000000200500008a000000000454016f0000000002320019000000000002043500000044024000390000041703000041000004170420009c0000000002038019000004170410009c000000000103801900000040011002100000006002200210000000000112019f0000105800010430000000000201004b00000af90000c13d000004280100004100000000001004390000000701000029000000040010044300000417010000410000000002000414000004170320009c0000000001024019000000c00110021000000429011001c70000800202000039105610510000040f000000010220019000000f960000613d000000000101043b000000000101004b00000c0c0000613d00000005010000290000000001010433000000000201004b00000b0e0000613d0000041a02000041000000200310008c000000000300001900000000030240190000041a01100197000000000401004b000000000200a0190000041a0110009c00000000010300190000000001026019000000000101004b00000f960000c13d00000004010000290000000001010433000000000201004b0000000002000019000000010200c039000000000221004b00000f960000c13d000000000101004b00000c730000613d000000000200041a0000000d0400002900000000314200a900000000434100d9000000000232004b00000b1d0000c13d000027102110011a0000000d02000029000000000212004b00000b1d0000413d0000000102000039000000000302041a000000000313001a00000b1d0000413d00000d050000013d000004590100004100000000001004350000001101000039000000040010043f0000044f0100004100001058000104300000003f03100039000000200400008a000000000343016f000000400400043d0000000003340019000c00000004001d000000000443004b00000000040000190000000104004039000004200530009c000000470000213d0000000104400190000000470000c13d000000400030043f0000000c030000290000000001130436000000030300036700000001050000310000001f0450018f000000050550027200000b410000613d000000000600001900000005076002100000000008710019000000000773034f000000000707043b00000000007804350000000106600039000000000756004b00000b390000413d000000000604004b00000ab70000613d0000000505500210000000000353034f00000000015100190000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f000000000031043500000ab70000013d000000000201004b00000b680000c13d000004280100004100000000001004390000000b01000029000000040010044300000417010000410000000002000414000004170320009c0000000001024019000000c00110021000000429011001c70000800202000039105610510000040f000000010220019000000f960000613d000000000101043b000000000101004b00000c0c0000613d0000000c010000290000000001010433000000000201004b0000038e0000613d0000041a02000041000000200310008c000000000300001900000000030240190000041a01100197000000000401004b000000000200a0190000041a0110009c00000000010300190000000001026019000000000101004b00000f960000c13d00000009010000290000000001010433000000000201004b0000000002000019000000010200c039000000000221004b00000f960000c13d000000000101004b00000c730000613d0000038e0000013d0000041704000041000004170510009c00000000010480190000004001100210000004170530009c00000000030480190000006003300210000000000113019f000004170320009c0000000002048019000000c002200210000000000121019f00000007020000291056104c0000040f000000010220018f00030000000103550000006001100270000104170010019d00000417011001970000006003000039000200000003001d000000000301004b00000bc00000c13d00000002010000290000000031010434000100000003001d000000000202004b00000bf90000c13d000000000201004b00000c290000c13d000000400100043d0000042302000041000000000021043500000004021000390000000803000029000000000032043500000003070000290000000002070433000000240310003900000000002304350000004403100039000000000402004b00000bb10000613d000000000400001900000000053400190000002004400039000000000674001900000000060604330000000000650435000000000524004b00000baa0000413d0000001f04200039000000200500008a000000000454016f0000000002320019000000000002043500000044024000390000041703000041000004170420009c0000000002038019000004170410009c000000000103801900000040011002100000006002200210000000000112019f00001058000104300000003f03100039000000200400008a000000000343016f000000400400043d0000000003340019000200000004001d000000000443004b00000000040000190000000104004039000004200530009c000000470000213d0000000104400190000000470000c13d000000400030043f00000002030000290000000001130436000000030300036700000001050000310000001f0450018f000000050550027200000bde0000613d000000000600001900000005076002100000000008710019000000000773034f000000000707043b00000000007804350000000106600039000000000756004b00000bd60000413d000000000604004b00000b950000613d0000000505500210000000000353034f00000000015100190000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f000000000031043500000b950000013d00000417020000410000000404000029000004170340009c00000000030200190000000003044019000004170410009c000000000102801900000060011002100000004002300210000000000121019f0000105800010430000000000201004b00000c5e0000c13d000004280100004100000000001004390000000701000029000000040010044300000417010000410000000002000414000004170320009c0000000001024019000000c00110021000000429011001c70000800202000039105610510000040f000000010220019000000f960000613d000000000101043b000000000101004b00000c5a0000c13d000000400100043d00000044021000390000046303000041000000000032043500000024021000390000001d030000390000000000320435000004230200004100000000002104350000000402100039000000200300003900000000003204350000041702000041000004170310009c0000000001028019000000400110021000000464011001c7000010580001043000000417020000410000000904000029000004170340009c00000000030200190000000003044019000004170410009c000000000102801900000060011002100000004002300210000000000121019f000010580001043000000417020000410000000104000029000004170340009c00000000030200190000000003044019000004170410009c000000000102801900000060011002100000004002300210000000000121019f0000105800010430000000400200043d0000001f0340018f000000050440027200000c410000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b00000c390000413d000000000503004b00000c500000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000417010000410000000103000031000004170430009c0000000003018019000004170420009c000000000102401900000040011002100000006002300210000000000112019f000010580001043000000002010000290000000001010433000000000201004b00000c880000613d0000041a02000041000000200310008c000000000300001900000000030240190000041a01100197000000000401004b000000000200a0190000041a0110009c00000000010300190000000001026019000000000101004b00000f960000c13d00000001010000290000000001010433000000000201004b0000000002000019000000010200c039000000000221004b00000f960000c13d000000000101004b00000c880000c13d000000400100043d00000064021000390000046103000041000000000032043500000044021000390000046203000041000000000032043500000024021000390000002a030000390000000000320435000004230200004100000000002104350000000402100039000000200300003900000000003204350000041702000041000004170310009c0000000001028019000000400110021000000424011001c70000105800010430000000400200043d0000044e010000410000000000120435000300000002001d00000004012000390000000002000410000000000021043500000000010004140000000702000029000000040220008c00000c980000c13d0000000103000031000000200130008c0000002004000039000000000403401900000ccb0000013d0000041702000041000004170310009c00000000010280190000000304000029000004170340009c00000000020440190000004002200210000000c001100210000000000121019f0000044f011001c70000000702000029105610510000040f000000030a000029000000000301001900000060033002700000041703300197000000200430008c000000200400003900000000040340190000001f0540018f000000050640027200000cb70000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b00000caf0000413d000000000705004b00000cc70000613d0000000506600210000000000761034f000000030800002900000000066800190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f0000000000560435000100000003001f0003000000010355000000010220019000000d750000613d0000001f01400039000000600210018f00000003010000290000000001120019000000000221004b00000000020000190000000102004039000004200410009c000000470000213d0000000102200190000000470000c13d000000400010043f000000200230008c00000f960000413d00000003020000290000000002020433000300000002001d000000000202004b00000de70000c13d0000000d010000290000000302000029000000000112001a000800000001001d00000b1d0000413d0000000801000029000000000101004b00000e8c0000c13d0000000101000039000800000001001d000000000101041a000000000201004b00000d090000613d0000000d02000029000000000221001a000d00000002001d00000b1d0000413d000000400200043d000000000012043500000417010000410000000003000414000004170430009c0000000003018019000004170420009c00000000010240190000004001100210000000c002300210000000000112019f00000453011001c70000800d020000390000000203000039000004550400004100000004050000291056104c0000040f000000010120019000000f960000613d0000000801000029000000000001041b00000d090000013d000000000032041b0000000d020000290000000002120049000d00000002001d0000000b01000029000000000101004b00000d110000613d0000000201000039000800000001001d000000000101041a0000041b0110019800000e090000c13d00000444010000410000000000100439000000090100002900000004001004430000006001000039000000240010044300000417010000410000000002000414000004170320009c0000000001024019000000c00110021000000446011001c70000800502000039105610510000040f000000010220019000000f960000613d000000000101043b000004280200004100000000002004390000041b01100197000900000001001d000000040010044300000417010000410000000002000414000004170320009c0000000001024019000000c00110021000000429011001c70000800202000039105610510000040f000000010220019000000f960000613d000000000101043b000000000101004b00000f960000613d000000400300043d00000024013000390000000d0200002900000000002104350000044b010000410000000000130435000800000003001d00000004013000390000000a02000029000000000021043500000000010004140000000902000029000000040220008c00000d550000613d0000041702000041000004170310009c00000000010280190000000804000029000004170340009c00000000020440190000004002200210000000c001100210000000000121019f0000041f011001c700000009020000291056104c0000040f00000000030100190000006003300270000104170030019d00000417043001970003000000010355000000010220019000000f980000613d0000000801000029000004200110009c000000470000213d0000000804000029000000400040043f0000000d01000029000000000014043500000040014000390000000b02000029000000000021043500000020014000390000000c02000029000000000021043500000417010000410000000002000414000004170320009c0000000002018019000004170340009c00000000010440190000004001100210000000c002200210000000000112019f00000457011001c70000800d020000390000000303000039000004580400004100000000050004110000000a060000291056104c0000040f00000001012001900000038e0000c13d00000f960000013d000000400200043d0000001f0430018f000000050330027200000d820000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000635004b00000d7a0000413d000000000504004b00000d910000613d0000000503300210000000000131034f00000000033200190000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f000000000013043500000417010000410000000103000031000004170430009c0000000003018019000004170420009c000000000102401900000040011002100000006002300210000000000112019f0000105800010430000000400200043d0000001f0340018f000000050440027200000da80000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b00000da00000413d000000000503004b00000db70000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000417010000410000000103000031000004170430009c0000000003018019000004170420009c000000000102401900000040011002100000006002300210000000000112019f0000105800010430000000400200043d0000001f0340018f000000050440027200000dce0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b00000dc60000413d000000000503004b00000ddd0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000417010000410000000103000031000004170430009c0000000003018019000004170420009c000000000102401900000040011002100000006002300210000000000112019f000010580001043000000044021000390000000303000029000000000032043500000020021000390000045003000041000000000032043500000024031000390000000504000029000000000043043500000044030000390000000000310435000004510310009c000000470000213d0000008003100039000500000003001d000000400030043f000004260310009c000000470000213d000000c003100039000000400030043f000000080300002900000005040000290000000000340435000000a00310003900000427040000410000000000430435000000000301043300000000010004140000000704000029000000040440008c00000ef90000c13d0000000102000039000000010100003100000f0c0000013d00000444010000410000000000100439000000090100002900000004001004430000006001000039000000240010044300000417010000410000000002000414000004170320009c0000000001024019000000c00110021000000446011001c70000800502000039105610510000040f000000010220019000000f960000613d000000000101043b000004280200004100000000002004390000041b01100197000900000001001d000000040010044300000417010000410000000002000414000004170320009c0000000001024019000000c00110021000000429011001c70000800202000039105610510000040f000000010220019000000f960000613d000000000101043b000000000101004b00000f960000613d000000400300043d00000024013000390000000d0200002900000000002104350000044b01000041000000000013043500000000010004100000041b01100197000700000003001d0000000402300039000000000012043500000000010004140000000902000029000000040220008c00000e4e0000613d0000041702000041000004170310009c00000000010280190000000704000029000004170340009c00000000020440190000004002200210000000c001100210000000000121019f0000041f011001c700000009020000291056104c0000040f00000000030100190000006003300270000104170030019d00000417043001970003000000010355000000010220019000000fc90000613d0000000701000029000004200110009c000000470000213d0000000701000029000000400010043f0000000801000029000000000101041a000004280200004100000000002004390000041b01100197000900000001001d000000040010044300000417010000410000000002000414000004170320009c0000000001024019000000c00110021000000429011001c70000800202000039105610510000040f000000010220019000000f960000613d000000000101043b000000000101004b00000f960000613d000000400300043d00000024013000390000000a02000029000000000021043500000456010000410000000000130435000800000003001d00000004013000390000000d02000029000000000021043500000000010004140000000902000029000000040220008c00000e880000613d0000041702000041000004170310009c00000000010280190000000804000029000004170340009c00000000020440190000004002200210000000c001100210000000000121019f0000041f011001c700000009020000291056104c0000040f00000000030100190000006003300270000104170030019d000004170430019700030000000103550000000102200190000010150000613d0000000801000029000004200110009c000000470000213d00000d580000013d00000444010000410000000000100439000000090100002900000004001004430000000601000029000000240010044300000417010000410000000002000414000004170320009c0000000001024019000000c00110021000000446011001c70000800502000039105610510000040f000000010220019000000f960000613d000000000101043b000004280200004100000000002004390000041b01100197000700000001001d000000040010044300000417010000410000000002000414000004170320009c0000000001024019000000c00110021000000429011001c70000800202000039105610510000040f000000010220019000000f960000613d000000000101043b000000000101004b00000f960000613d000000400200043d00000452010000410000000000120435000600000002001d0000000401200039000000080200002900000000002104350000044401000041000000000010043900000009010000290000000400100443000000240000044300000417010000410000000002000414000004170320009c0000000001024019000000c00110021000000446011001c70000800502000039105610510000040f000000010220019000000f960000613d000000000101043b00000006020000290000002402200039000000000012043500000000010004140000000702000029000000040220008c00000ee00000613d0000041702000041000004170310009c00000000010280190000000604000029000004170340009c00000000020440190000004002200210000000c001100210000000000121019f0000041f011001c700000007020000291056104c0000040f00000000030100190000006003300270000104170030019d00000417043001970003000000010355000000010220019000000fef0000613d0000000601000029000004200110009c000000470000213d0000000604000029000000400040043f0000000801000029000000000014043500000417010000410000000002000414000004170320009c0000000002018019000004170340009c00000000010440190000004001100210000000c002200210000000000112019f00000453011001c70000800d020000390000000203000039000004540400004100000004050000291056104c0000040f000000010120019000000f960000613d00000ce60000013d0000041704000041000004170520009c00000000020480190000004002200210000004170530009c00000000030480190000006003300210000000000223019f000004170310009c0000000001048019000000c001100210000000000112019f00000007020000291056104c0000040f000000010220018f00030000000103550000006001100270000104170010019d00000417011001970000006003000039000200000003001d000000000301004b00000f3b0000c13d00000002010000290000000031010434000100000003001d000000000202004b00000f690000c13d000000000201004b00000fbe0000c13d000000400100043d0000042302000041000000000021043500000004021000390000000803000029000000000032043500000005070000290000000002070433000000240310003900000000002304350000004403100039000000000402004b00000f2c0000613d000000000400001900000000053400190000002004400039000000000674001900000000060604330000000000650435000000000524004b00000f250000413d0000001f04200039000000200500008a000000000454016f0000000002320019000000000002043500000044024000390000041703000041000004170420009c0000000002038019000004170410009c000000000103801900000040011002100000006002200210000000000112019f00001058000104300000003f03100039000000200400008a000000000343016f000000400400043d0000000003340019000200000004001d000000000443004b00000000040000190000000104004039000004200530009c000000470000213d0000000104400190000000470000c13d000000400030043f00000002030000290000000001130436000000030300036700000001050000310000001f0450018f000000050550027200000f590000613d000000000600001900000005076002100000000008710019000000000773034f000000000707043b00000000007804350000000106600039000000000756004b00000f510000413d000000000604004b00000f100000613d0000000505500210000000000353034f00000000015100190000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f000000000031043500000f100000013d000000000201004b00000f800000c13d000004280100004100000000001004390000000701000029000000040010044300000417010000410000000002000414000004170320009c0000000001024019000000c00110021000000429011001c70000800202000039105610510000040f000000010220019000000f960000613d000000000101043b000000000101004b00000c0c0000613d00000002010000290000000001010433000000000201004b00000cde0000613d0000041a02000041000000200310008c000000000300001900000000030240190000041a01100197000000000401004b000000000200a0190000041a0110009c00000000010300190000000001026019000000000101004b00000f960000c13d00000001010000290000000001010433000000000201004b0000000002000019000000010200c039000000000221004b00000f960000c13d000000000101004b00000c730000613d00000cde0000013d00000000010000190000105800010430000000400200043d0000001f0340018f000000050440027200000fa50000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b00000f9d0000413d000000000503004b00000fb40000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000417010000410000000103000031000004170430009c0000000003018019000004170420009c000000000102401900000040011002100000006002300210000000000112019f000010580001043000000417020000410000000104000029000004170340009c00000000030200190000000003044019000004170410009c000000000102801900000060011002100000004002300210000000000121019f0000105800010430000000400200043d0000001f0340018f000000050440027200000fd60000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b00000fce0000413d000000000503004b00000fe50000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000417010000410000000103000031000004170430009c0000000003018019000004170420009c000000000102401900000040011002100000006002300210000000000112019f0000105800010430000000400200043d0000001f0340018f000000050440027200000ffc0000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b00000ff40000413d000000000503004b0000100b0000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000417010000410000000103000031000004170430009c0000000003018019000004170420009c000000000102401900000040011002100000006002300210000000000112019f0000105800010430000000400200043d0000001f0340018f0000000504400272000010220000613d000000000500001900000005065002100000000007620019000000000661034f000000000606043b00000000006704350000000105500039000000000645004b0000101a0000413d000000000503004b000010310000613d0000000504400210000000000141034f00000000044200190000000303300210000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f000000000014043500000417010000410000000103000031000004170430009c0000000003018019000004170420009c000000000102401900000040011002100000006002300210000000000112019f0000105800010430000000000301001900000417010000410000000004000414000004170540009c0000000001044019000000c0011002100000006002200210000000000112001900000469011000410000000002030019105610510000040f00000001022001900000104a0000613d000000000101043b000000000001042d000000000100001900001058000104300000104f002104210000000102000039000000000001042d0000000002000019000000000001042d00001054002104230000000102000039000000000001042d0000000002000019000000000001042d0000105600000432000010570001042e000010580001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff00000000000000ff8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000784ce00dd62ed3e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000005361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f08c379a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084000000000000000000000000095ea7b300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff3f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65641806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000000000020000000000000000000000000000014000000100000000000000000000000000000000000000000000000000000000000000000000000000918f867300000000000000000000000000000000000000000000000000000000d0f492f600000000000000000000000000000000000000000000000000000000d7b96d4d00000000000000000000000000000000000000000000000000000000d7b96d4e00000000000000000000000000000000000000000000000000000000f7d9d0c400000000000000000000000000000000000000000000000000000000fc0c546a00000000000000000000000000000000000000000000000000000000d0f492f700000000000000000000000000000000000000000000000000000000d38bfff400000000000000000000000000000000000000000000000000000000b7fa1ba600000000000000000000000000000000000000000000000000000000b7fa1ba700000000000000000000000000000000000000000000000000000000bca7a9e200000000000000000000000000000000000000000000000000000000918f867400000000000000000000000000000000000000000000000000000000a6f19c840000000000000000000000000000000000000000000000000000000055a68ed200000000000000000000000000000000000000000000000000000000601aff1100000000000000000000000000000000000000000000000000000000601aff1200000000000000000000000000000000000000000000000000000000638126f8000000000000000000000000000000000000000000000000000000008070c5030000000000000000000000000000000000000000000000000000000055a68ed3000000000000000000000000000000000000000000000000000000005aa6e675000000000000000000000000000000000000000000000000000000003d18678d000000000000000000000000000000000000000000000000000000003d18678e000000000000000000000000000000000000000000000000000000004f1bfc9e000000000000000000000000000000000000000000000000000000000754617200000000000000000000000000000000000000000000000000000000238efcbc310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e0000000000000000000000000000000000000020000000000000000000000000020000020000000000000000000000000000004400000000000000000000000023b872dd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff5f000000000000000000000000000000000000000000000000ffffffffffffff1fb52c05fe0000000000000000000000000000000000000000000000000000000040c10f19000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000040000000000000000000000000d297715049e243e1bd6e98f7fd4da4dce0544c26f4ddf14b24b617743ba06e2870a08231000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000a9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f5e70a6dc000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000020000000000000000000000000f9626bca62c59d77fa45a204dc096874ee066a5c5e124aa9ce6c438dbdf7387a70220290ea80981efd0f0f7e6b1b5085605eb976822c8b8422e5bcc53e4c6d636e553f650000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000600000000000000000000000001652dc46c7c8f691f8e51f9897515fc24cbd8cafd7eb97f620fe1635399d8c764e487b710000000000000000000000000000000000000000000000000000000066e795090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000001f4d907000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffbfb3ab15fb000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000860079172b8d313ffe6600be83301a99a5099e33a3f5cbe541d97e98074cbfe76f742073756363656564000000000000000000000000000000000000000000005361666545524332303a204552433230206f7065726174696f6e20646964206e416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000000000000000000000000000000000000000000640000000000000000000000003dda580d2b9d92da338ef46ec718e7b1dd0a2c505e3df4aa8d40360192a0f8221462783400000000000000000000000000000000000000000000000000000000a6a85f15b976d399f39ad43e515e75910bac714bc55eeff6131fb90780d6f74600000000000000000000000000000000000000200000008000000000000000000200000200000000000000000000000000000000000000000000000000000000599e9889daacd2627ac1a1ec01020a8868db04ca93befe47f1ac3b74eea78f56
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0x000000000000000000000000787c09494ec8bcb24dcaf8659e7d5d69979ee508000000000000000000000000b908eb86c9427269ec85c83bd812a2265778da3e0000000000000000000000008e6d4c0088b5b41bddb126f355ef278ac5b5974c0000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _token (address): 0x787c09494Ec8Bcb24DcAf8659E7d5D69979eE508
Arg [1] : _locker (address): 0xb908EB86C9427269EC85C83bd812A2265778Da3e
Arg [2] : _minter (address): 0x8E6d4c0088b5B41BdDb126f355Ef278Ac5B5974C
Arg [3] : _gauge (address): 0x0000000000000000000000000000000000000000
-----Encoded View---------------
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.