More Info
Private Name Tags
ContractCreator
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Latest 25 Deposits
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:
MiniChefV2
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Nova.Arbiscan.io on 2023-01-11 */ // SPDX-License-Identifier: MIT pragma solidity 0.6.12; // a library for performing overflow-safe math, updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math) library BoringMath { function add(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a + b) >= b, "BoringMath: Add Overflow");} function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a - b) <= a, "BoringMath: Underflow");} function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {require(b == 0 || (c = a * b)/b == a, "BoringMath: Mul Overflow");} function to128(uint256 a) internal pure returns (uint128 c) { require(a <= uint128(-1), "BoringMath: uint128 Overflow"); c = uint128(a); } function to64(uint256 a) internal pure returns (uint64 c) { require(a <= uint64(-1), "BoringMath: uint64 Overflow"); c = uint64(a); } function to32(uint256 a) internal pure returns (uint32 c) { require(a <= uint32(-1), "BoringMath: uint32 Overflow"); c = uint32(a); } } library BoringMath128 { function add(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a + b) >= b, "BoringMath: Add Overflow");} function sub(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a - b) <= a, "BoringMath: Underflow");} } library BoringMath64 { function add(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a + b) >= b, "BoringMath: Add Overflow");} function sub(uint64 a, uint64 b) internal pure returns (uint64 c) {require((c = a - b) <= a, "BoringMath: Underflow");} } library BoringMath32 { function add(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a + b) >= b, "BoringMath: Add Overflow");} function sub(uint32 a, uint32 b) internal pure returns (uint32 c) {require((c = a - b) <= a, "BoringMath: Underflow");} } // File @boringcrypto/boring-solidity/contracts/interfaces/[email protected] pragma solidity 0.6.12; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); // EIP 2612 function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external; } // File @boringcrypto/boring-solidity/contracts/libraries/[email protected] pragma solidity 0.6.12; library BoringERC20 { function safeSymbol(IERC20 token) internal view returns(string memory) { (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41)); return success && data.length > 0 ? abi.decode(data, (string)) : "???"; } function safeName(IERC20 token) internal view returns(string memory) { (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03)); return success && data.length > 0 ? abi.decode(data, (string)) : "???"; } function safeDecimals(IERC20 token) internal view returns (uint8) { (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567)); return success && data.length == 32 ? abi.decode(data, (uint8)) : 18; } function safeTransfer(IERC20 token, address to, uint256 amount) internal { (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount)); require(success && (data.length == 0 || abi.decode(data, (bool))), "BoringERC20: Transfer failed"); } function safeTransferFrom(IERC20 token, address from, address to, uint256 amount) internal { (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, to, amount)); require(success && (data.length == 0 || abi.decode(data, (bool))), "BoringERC20: TransferFrom failed"); } } // File @boringcrypto/boring-solidity/contracts/[email protected] // Audit on 5-Jan-2021 by Keno and BoringCrypto // P1 - P3: OK pragma solidity 0.6.12; pragma experimental ABIEncoderV2; // solhint-disable avoid-low-level-calls // T1 - T4: OK contract BaseBoringBatchable { function _getRevertMsg(bytes memory _returnData) internal pure returns (string memory) { // If the _res length is less than 68, then the transaction failed silently (without a revert message) if (_returnData.length < 68) return "Transaction reverted silently"; assembly { // Slice the sighash. _returnData := add(_returnData, 0x04) } return abi.decode(_returnData, (string)); // All that remains is the revert string } // F3 - F9: OK // F1: External is ok here because this is the batch function, adding it to a batch makes no sense // F2: Calls in the batch may be payable, delegatecall operates in the same context, so each call in the batch has access to msg.value // C1 - C21: OK // C3: The length of the loop is fully under user control, so can't be exploited // C7: Delegatecall is only used on the same contract, so it's safe function batch(bytes[] calldata calls, bool revertOnFail) external payable returns(bool[] memory successes, bytes[] memory results) { // Interactions successes = new bool[](calls.length); results = new bytes[](calls.length); for (uint256 i = 0; i < calls.length; i++) { (bool success, bytes memory result) = address(this).delegatecall(calls[i]); require(success || !revertOnFail, _getRevertMsg(result)); successes[i] = success; results[i] = result; } } } // T1 - T4: OK contract BoringBatchable is BaseBoringBatchable { // F1 - F9: OK // F6: Parameters can be used front-run the permit and the user's permit will fail (due to nonce or other revert) // if part of a batch this could be used to grief once as the second call would not need the permit // C1 - C21: OK function permitToken(IERC20 token, address from, address to, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public { // Interactions // X1 - X5 token.permit(from, to, amount, deadline, v, r, s); } } // File @boringcrypto/boring-solidity/contracts/[email protected] // Audit on 5-Jan-2021 by Keno and BoringCrypto // P1 - P3: OK pragma solidity 0.6.12; // Source: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol + Claimable.sol // Edited by BoringCrypto // T1 - T4: OK contract BoringOwnableData { // V1 - V5: OK address public owner; // V1 - V5: OK address public pendingOwner; } // T1 - T4: OK contract BoringOwnable is BoringOwnableData { // E1: OK event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () public { owner = msg.sender; emit OwnershipTransferred(address(0), msg.sender); } // F1 - F9: OK // C1 - C21: OK function transferOwnership(address newOwner, bool direct, bool renounce) public onlyOwner { if (direct) { // Checks require(newOwner != address(0) || renounce, "Ownable: zero address"); // Effects emit OwnershipTransferred(owner, newOwner); owner = newOwner; pendingOwner = address(0); } else { // Effects pendingOwner = newOwner; } } // F1 - F9: OK // C1 - C21: OK function claimOwnership() public { address _pendingOwner = pendingOwner; // Checks require(msg.sender == _pendingOwner, "Ownable: caller != pending owner"); // Effects emit OwnershipTransferred(owner, _pendingOwner); owner = _pendingOwner; pendingOwner = address(0); } // M1 - M5: OK // C1 - C21: OK modifier onlyOwner() { require(msg.sender == owner, "Ownable: caller is not the owner"); _; } } // File contracts/libraries/SignedSafeMath.sol pragma solidity 0.6.12; library SignedSafeMath { int256 constant private _INT256_MIN = -2**255; /** * @dev Returns the multiplication of two signed integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(int256 a, int256 b) internal pure returns (int256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } require(!(a == -1 && b == _INT256_MIN), "SignedSafeMath: multiplication overflow"); int256 c = a * b; require(c / a == b, "SignedSafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two signed integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(int256 a, int256 b) internal pure returns (int256) { require(b != 0, "SignedSafeMath: division by zero"); require(!(b == -1 && a == _INT256_MIN), "SignedSafeMath: division overflow"); int256 c = a / b; return c; } /** * @dev Returns the subtraction of two signed integers, reverting on * overflow. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a), "SignedSafeMath: subtraction overflow"); return c; } /** * @dev Returns the addition of two signed integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a), "SignedSafeMath: addition overflow"); return c; } function toUInt256(int256 a) internal pure returns (uint256) { require(a >= 0, "Integer < 0"); return uint256(a); } } // File contracts/interfaces/IRewarder.sol pragma solidity 0.6.12; interface IRewarder { using BoringERC20 for IERC20; function onSushiReward(uint256 pid, address user, address recipient, uint256 sushiAmount, uint256 newLpAmount) external; function pendingTokens(uint256 pid, address user, uint256 sushiAmount) external view returns (IERC20[] memory, uint256[] memory); } // File contracts/interfaces/IMasterChef.sol pragma solidity 0.6.12; interface IMasterChef { using BoringERC20 for IERC20; struct UserInfo { uint256 amount; // How many LP tokens the user has provided. uint256 rewardDebt; // Reward debt. See explanation below. } struct PoolInfo { IERC20 lpToken; // Address of LP token contract. uint256 allocPoint; // How many allocation points assigned to this pool. SUSHI to distribute per block. uint256 lastRewardBlock; // Last block number that SUSHI distribution occurs. uint256 accSushiPerShare; // Accumulated SUSHI per share, times 1e12. See below. } function poolInfo(uint256 pid) external view returns (IMasterChef.PoolInfo memory); function totalAllocPoint() external view returns (uint256); function deposit(uint256 _pid, uint256 _amount) external; } // File contracts/MiniChefV2.sol pragma solidity 0.6.12; interface IMigratorChef { // Take the current LP token address and return the new LP token address. // Migrator should have full access to the caller's LP token. function migrate(IERC20 token) external returns (IERC20); } /// @notice The (older) MasterChef contract gives out a constant number of SUSHI tokens per block. /// It is the only address with minting rights for SUSHI. /// The idea for this MasterChef V2 (MCV2) contract is therefore to be the owner of a dummy token /// that is deposited into the MasterChef V1 (MCV1) contract. /// The allocation point for this pool on MCV1 is the total allocation point for all pools that receive double incentives. contract MiniChefV2 is BoringOwnable, BoringBatchable { using BoringMath for uint256; using BoringMath128 for uint128; using BoringERC20 for IERC20; using SignedSafeMath for int256; /// @notice Info of each MCV2 user. /// `amount` LP token amount the user has provided. /// `rewardDebt` The amount of SUSHI entitled to the user. struct UserInfo { uint256 amount; int256 rewardDebt; } /// @notice Info of each MCV2 pool. /// `allocPoint` The amount of allocation points assigned to the pool. /// Also known as the amount of SUSHI to distribute per block. struct PoolInfo { uint128 accSushiPerShare; uint64 lastRewardTime; uint64 allocPoint; } /// @notice Address of SUSHI contract. IERC20 public immutable SUSHI; // @notice The migrator contract. It has a lot of power. Can only be set through governance (owner). IMigratorChef public migrator; /// @notice Info of each MCV2 pool. PoolInfo[] public poolInfo; /// @notice Address of the LP token for each MCV2 pool. IERC20[] public lpToken; /// @notice Address of each `IRewarder` contract in MCV2. IRewarder[] public rewarder; /// @notice Info of each user that stakes LP tokens. mapping (uint256 => mapping (address => UserInfo)) public userInfo; /// @dev Tokens added mapping (address => bool) public addedTokens; /// @dev Total allocation points. Must be the sum of all allocation points in all pools. uint256 public totalAllocPoint; uint256 public sushiPerSecond; uint256 private constant ACC_SUSHI_PRECISION = 1e12; event Deposit(address indexed user, uint256 indexed pid, uint256 amount, address indexed to); event Withdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to); event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount, address indexed to); event Harvest(address indexed user, uint256 indexed pid, uint256 amount); event LogPoolAddition(uint256 indexed pid, uint256 allocPoint, IERC20 indexed lpToken, IRewarder indexed rewarder); event LogSetPool(uint256 indexed pid, uint256 allocPoint, IRewarder indexed rewarder, bool overwrite); event LogUpdatePool(uint256 indexed pid, uint64 lastRewardTime, uint256 lpSupply, uint256 accSushiPerShare); event LogSushiPerSecond(uint256 sushiPerSecond); /// @param _sushi The SUSHI token contract address. constructor(IERC20 _sushi) public { SUSHI = _sushi; } /// @notice Returns the number of MCV2 pools. function poolLength() public view returns (uint256 pools) { pools = poolInfo.length; } /// @notice Add a new LP to the pool. Can only be called by the owner. /// DO NOT add the same LP token more than once. Rewards will be messed up if you do. /// @param allocPoint AP of the new pool. /// @param _lpToken Address of the LP ERC-20 token. /// @param _rewarder Address of the rewarder delegate. function add(uint256 allocPoint, IERC20 _lpToken, IRewarder _rewarder) public onlyOwner { require(addedTokens[address(_lpToken)] == false, "Token already added"); totalAllocPoint = totalAllocPoint.add(allocPoint); lpToken.push(_lpToken); rewarder.push(_rewarder); poolInfo.push(PoolInfo({ allocPoint: allocPoint.to64(), lastRewardTime: block.timestamp.to64(), accSushiPerShare: 0 })); addedTokens[address(_lpToken)] = true; emit LogPoolAddition(lpToken.length.sub(1), allocPoint, _lpToken, _rewarder); } /// @notice Update the given pool's SUSHI allocation point and `IRewarder` contract. Can only be called by the owner. /// @param _pid The index of the pool. See `poolInfo`. /// @param _allocPoint New AP of the pool. /// @param _rewarder Address of the rewarder delegate. /// @param overwrite True if _rewarder should be `set`. Otherwise `_rewarder` is ignored. function set(uint256 _pid, uint256 _allocPoint, IRewarder _rewarder, bool overwrite) public onlyOwner { totalAllocPoint = totalAllocPoint.sub(poolInfo[_pid].allocPoint).add(_allocPoint); poolInfo[_pid].allocPoint = _allocPoint.to64(); if (overwrite) { rewarder[_pid] = _rewarder; } emit LogSetPool(_pid, _allocPoint, overwrite ? _rewarder : rewarder[_pid], overwrite); } /// @notice Sets the sushi per second to be distributed. Can only be called by the owner. /// @param _sushiPerSecond The amount of Sushi to be distributed per second. function setSushiPerSecond(uint256 _sushiPerSecond) public onlyOwner { sushiPerSecond = _sushiPerSecond; emit LogSushiPerSecond(_sushiPerSecond); } /// @notice Set the `migrator` contract. Can only be called by the owner. /// @param _migrator The contract address to set. function setMigrator(IMigratorChef _migrator) public onlyOwner { migrator = _migrator; } /// @notice Migrate LP token to another LP contract through the `migrator` contract. /// @param _pid The index of the pool. See `poolInfo`. function migrate(uint256 _pid) public { require(address(migrator) != address(0), "MasterChefV2: no migrator set"); IERC20 _lpToken = lpToken[_pid]; uint256 bal = _lpToken.balanceOf(address(this)); _lpToken.approve(address(migrator), bal); IERC20 newLpToken = migrator.migrate(_lpToken); require(bal == newLpToken.balanceOf(address(this)), "MasterChefV2: migrated balance must match"); require(addedTokens[address(newLpToken)] == false, "Token already added"); addedTokens[address(newLpToken)] = true; addedTokens[address(_lpToken)] = false; lpToken[_pid] = newLpToken; } /// @notice View function to see pending SUSHI on frontend. /// @param _pid The index of the pool. See `poolInfo`. /// @param _user Address of user. /// @return pending SUSHI reward for a given user. function pendingSushi(uint256 _pid, address _user) external view returns (uint256 pending) { PoolInfo memory pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][_user]; uint256 accSushiPerShare = pool.accSushiPerShare; uint256 lpSupply = lpToken[_pid].balanceOf(address(this)); if (block.timestamp > pool.lastRewardTime && lpSupply != 0) { uint256 time = block.timestamp.sub(pool.lastRewardTime); uint256 sushiReward = time.mul(sushiPerSecond).mul(pool.allocPoint) / totalAllocPoint; accSushiPerShare = accSushiPerShare.add(sushiReward.mul(ACC_SUSHI_PRECISION) / lpSupply); } pending = int256(user.amount.mul(accSushiPerShare) / ACC_SUSHI_PRECISION).sub(user.rewardDebt).toUInt256(); } /// @notice Update reward variables for all pools. Be careful of gas spending! /// @param pids Pool IDs of all to be updated. Make sure to update all active pools. function massUpdatePools(uint256[] calldata pids) external { uint256 len = pids.length; for (uint256 i = 0; i < len; ++i) { updatePool(pids[i]); } } /// @notice Update reward variables of the given pool. /// @param pid The index of the pool. See `poolInfo`. /// @return pool Returns the pool that was updated. function updatePool(uint256 pid) public returns (PoolInfo memory pool) { pool = poolInfo[pid]; if (block.timestamp > pool.lastRewardTime) { uint256 lpSupply = lpToken[pid].balanceOf(address(this)); if (lpSupply > 0) { uint256 time = block.timestamp.sub(pool.lastRewardTime); uint256 sushiReward = time.mul(sushiPerSecond).mul(pool.allocPoint) / totalAllocPoint; pool.accSushiPerShare = pool.accSushiPerShare.add((sushiReward.mul(ACC_SUSHI_PRECISION) / lpSupply).to128()); } pool.lastRewardTime = block.timestamp.to64(); poolInfo[pid] = pool; emit LogUpdatePool(pid, pool.lastRewardTime, lpSupply, pool.accSushiPerShare); } } /// @notice Deposit LP tokens to MCV2 for SUSHI allocation. /// @param pid The index of the pool. See `poolInfo`. /// @param amount LP token amount to deposit. /// @param to The receiver of `amount` deposit benefit. function deposit(uint256 pid, uint256 amount, address to) public { PoolInfo memory pool = updatePool(pid); UserInfo storage user = userInfo[pid][to]; // Effects user.amount = user.amount.add(amount); user.rewardDebt = user.rewardDebt.add(int256(amount.mul(pool.accSushiPerShare) / ACC_SUSHI_PRECISION)); // Interactions IRewarder _rewarder = rewarder[pid]; if (address(_rewarder) != address(0)) { _rewarder.onSushiReward(pid, to, to, 0, user.amount); } lpToken[pid].safeTransferFrom(msg.sender, address(this), amount); emit Deposit(msg.sender, pid, amount, to); } /// @notice Withdraw LP tokens from MCV2. /// @param pid The index of the pool. See `poolInfo`. /// @param amount LP token amount to withdraw. /// @param to Receiver of the LP tokens. function withdraw(uint256 pid, uint256 amount, address to) public { PoolInfo memory pool = updatePool(pid); UserInfo storage user = userInfo[pid][msg.sender]; // Effects user.rewardDebt = user.rewardDebt.sub(int256(amount.mul(pool.accSushiPerShare) / ACC_SUSHI_PRECISION)); user.amount = user.amount.sub(amount); // Interactions IRewarder _rewarder = rewarder[pid]; if (address(_rewarder) != address(0)) { _rewarder.onSushiReward(pid, msg.sender, to, 0, user.amount); } lpToken[pid].safeTransfer(to, amount); emit Withdraw(msg.sender, pid, amount, to); } /// @notice Harvest proceeds for transaction sender to `to`. /// @param pid The index of the pool. See `poolInfo`. /// @param to Receiver of SUSHI rewards. function harvest(uint256 pid, address to) public { PoolInfo memory pool = updatePool(pid); UserInfo storage user = userInfo[pid][msg.sender]; int256 accumulatedSushi = int256(user.amount.mul(pool.accSushiPerShare) / ACC_SUSHI_PRECISION); uint256 _pendingSushi = accumulatedSushi.sub(user.rewardDebt).toUInt256(); // Effects user.rewardDebt = accumulatedSushi; // Interactions if (_pendingSushi != 0) { SUSHI.safeTransfer(to, _pendingSushi); } IRewarder _rewarder = rewarder[pid]; if (address(_rewarder) != address(0)) { _rewarder.onSushiReward( pid, msg.sender, to, _pendingSushi, user.amount); } emit Harvest(msg.sender, pid, _pendingSushi); } /// @notice Withdraw LP tokens from MCV2 and harvest proceeds for transaction sender to `to`. /// @param pid The index of the pool. See `poolInfo`. /// @param amount LP token amount to withdraw. /// @param to Receiver of the LP tokens and SUSHI rewards. function withdrawAndHarvest(uint256 pid, uint256 amount, address to) public { PoolInfo memory pool = updatePool(pid); UserInfo storage user = userInfo[pid][msg.sender]; int256 accumulatedSushi = int256(user.amount.mul(pool.accSushiPerShare) / ACC_SUSHI_PRECISION); uint256 _pendingSushi = accumulatedSushi.sub(user.rewardDebt).toUInt256(); // Effects user.rewardDebt = accumulatedSushi.sub(int256(amount.mul(pool.accSushiPerShare) / ACC_SUSHI_PRECISION)); user.amount = user.amount.sub(amount); // Interactions SUSHI.safeTransfer(to, _pendingSushi); IRewarder _rewarder = rewarder[pid]; if (address(_rewarder) != address(0)) { _rewarder.onSushiReward(pid, msg.sender, to, _pendingSushi, user.amount); } lpToken[pid].safeTransfer(to, amount); emit Withdraw(msg.sender, pid, amount, to); emit Harvest(msg.sender, pid, _pendingSushi); } /// @notice Withdraw without caring about rewards. EMERGENCY ONLY. /// @param pid The index of the pool. See `poolInfo`. /// @param to Receiver of the LP tokens. function emergencyWithdraw(uint256 pid, address to) public { UserInfo storage user = userInfo[pid][msg.sender]; uint256 amount = user.amount; user.amount = 0; user.rewardDebt = 0; IRewarder _rewarder = rewarder[pid]; if (address(_rewarder) != address(0)) { _rewarder.onSushiReward(pid, msg.sender, to, 0, 0); } // Note: transfer can fail or succeed if `amount` is zero. lpToken[pid].safeTransfer(to, amount); emit EmergencyWithdraw(msg.sender, pid, amount, to); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"contract IERC20","name":"_sushi","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"EmergencyWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Harvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"allocPoint","type":"uint256"},{"indexed":true,"internalType":"contract IERC20","name":"lpToken","type":"address"},{"indexed":true,"internalType":"contract IRewarder","name":"rewarder","type":"address"}],"name":"LogPoolAddition","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"allocPoint","type":"uint256"},{"indexed":true,"internalType":"contract IRewarder","name":"rewarder","type":"address"},{"indexed":false,"internalType":"bool","name":"overwrite","type":"bool"}],"name":"LogSetPool","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sushiPerSecond","type":"uint256"}],"name":"LogSushiPerSecond","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint64","name":"lastRewardTime","type":"uint64"},{"indexed":false,"internalType":"uint256","name":"lpSupply","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"accSushiPerShare","type":"uint256"}],"name":"LogUpdatePool","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"SUSHI","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"contract IERC20","name":"_lpToken","type":"address"},{"internalType":"contract IRewarder","name":"_rewarder","type":"address"}],"name":"add","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addedTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"calls","type":"bytes[]"},{"internalType":"bool","name":"revertOnFail","type":"bool"}],"name":"batch","outputs":[{"internalType":"bool[]","name":"successes","type":"bool[]"},{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"claimOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"harvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"lpToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"pids","type":"uint256[]"}],"name":"massUpdatePools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"migrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"migrator","outputs":[{"internalType":"contract IMigratorChef","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"pendingSushi","outputs":[{"internalType":"uint256","name":"pending","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permitToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolInfo","outputs":[{"internalType":"uint128","name":"accSushiPerShare","type":"uint128"},{"internalType":"uint64","name":"lastRewardTime","type":"uint64"},{"internalType":"uint64","name":"allocPoint","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolLength","outputs":[{"internalType":"uint256","name":"pools","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rewarder","outputs":[{"internalType":"contract IRewarder","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"contract IRewarder","name":"_rewarder","type":"address"},{"internalType":"bool","name":"overwrite","type":"bool"}],"name":"set","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IMigratorChef","name":"_migrator","type":"address"}],"name":"setMigrator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sushiPerSecond","type":"uint256"}],"name":"setSushiPerSecond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sushiPerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAllocPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"},{"internalType":"bool","name":"direct","type":"bool"},{"internalType":"bool","name":"renounce","type":"bool"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"}],"name":"updatePool","outputs":[{"components":[{"internalType":"uint128","name":"accSushiPerShare","type":"uint128"},{"internalType":"uint64","name":"lastRewardTime","type":"uint64"},{"internalType":"uint64","name":"allocPoint","type":"uint64"}],"internalType":"struct MiniChefV2.PoolInfo","name":"pool","type":"tuple"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"int256","name":"rewardDebt","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"pid","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawAndHarvest","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a06040523480156200001157600080fd5b506040516200382038038062003820833981016040819052620000349162000089565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360601b6001600160601b031916608052620000b9565b6000602082840312156200009b578081fd5b81516001600160a01b0381168114620000b2578182fd5b9392505050565b60805160601c61373f620000e160003980610a175280611e4b5280612295525061373f6000f3fe6080604052600436106101c25760003560e01c806379d12ffb116100f75780639baf58c311610095578063c346253d11610064578063c346253d146104f6578063d1abb90714610516578063d2423b5114610536578063e30c397814610557576101c2565b80639baf58c31461048c578063a06e408b146104ac578063ab560e10146104c1578063ab7de098146104d6576101c2565b806388bba42f116100d157806388bba42f146104095780638da5cb5b146104295780638dbdbe6d1461043e57806393f1a40b1461045e576101c2565b806379d12ffb146103a75780637c516e94146103d45780637cd07e47146103f4576101c2565b806323cf3118116101645780634e71e0c81161013e5780634e71e0c81461031857806351eb05a61461032d57806357a5b58c1461035a57806378ed5d1f1461037a576101c2565b806323cf3118146102b85780632f940c70146102d8578063454b0608146102f8576101c2565b80631526fe27116101a05780631526fe271461023457806317caf6f11461026357806318fccc7614610278578063195426ec14610298576101c2565b8063078dfbe7146101c7578063081e3eda146101e95780630ad58d2f14610214575b600080fd5b3480156101d357600080fd5b506101e76101e2366004612c12565b61056c565b005b3480156101f557600080fd5b506101fe610700565b60405161020b91906135b0565b60405180910390f35b34801561022057600080fd5b506101e761022f366004612ef3565b610706565b34801561024057600080fd5b5061025461024f366004612e5e565b6108f9565b60405161020b9392919061357c565b34801561026f57600080fd5b506101fe610967565b34801561028457600080fd5b506101e7610293366004612e8e565b61096d565b3480156102a457600080fd5b506101fe6102b3366004612e8e565b610b5d565b3480156102c457600080fd5b506101e76102d3366004612bf6565b610dbf565b3480156102e457600080fd5b506101e76102f3366004612e8e565b610e57565b34801561030457600080fd5b506101e7610313366004612e5e565b610fc5565b34801561032457600080fd5b506101e7611428565b34801561033957600080fd5b5061034d610348366004612e5e565b61150e565b60405161020b9190613539565b34801561036657600080fd5b506101e7610375366004612ca6565b611862565b34801561038657600080fd5b5061039a610395366004612e5e565b611898565b60405161020b9190612fdf565b3480156103b357600080fd5b506103c76103c2366004612bf6565b6118cc565b60405161020b919061313f565b3480156103e057600080fd5b506101e76103ef366004612d1e565b6118e1565b34801561040057600080fd5b5061039a61197b565b34801561041557600080fd5b506101e7610424366004612f20565b611997565b34801561043557600080fd5b5061039a611b77565b34801561044a57600080fd5b506101e7610459366004612ef3565b611b93565b34801561046a57600080fd5b5061047e610479366004612e8e565b611d8e565b60405161020b929190613605565b34801561049857600080fd5b506101e76104a7366004612e5e565b611db2565b3480156104b857600080fd5b506101fe611e43565b3480156104cd57600080fd5b5061039a611e49565b3480156104e257600080fd5b506101e76104f1366004612ebd565b611e6d565b34801561050257600080fd5b5061039a610511366004612e5e565b61219b565b34801561052257600080fd5b506101e7610531366004612ef3565b6121a8565b610549610544366004612c5c565b612454565b60405161020b9291906130a5565b34801561056357600080fd5b5061039a612600565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd90613361565b60405180910390fd5b81156106ba5773ffffffffffffffffffffffffffffffffffffffff83161515806105ed5750805b610623576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd9061325f565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff85167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179091556001805490911690556106fb565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85161790555b505050565b60035490565b61070e612b8d565b6107178461150e565b600085815260066020908152604080832033845290915290208151919250906107729064e8d4a510009061075e9087906fffffffffffffffffffffffffffffffff1661261c565b8161076557fe5b6001840154919004612673565b6001820155805461078390856126da565b815560058054600091908790811061079757fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905080156108505781546040517f8bf6374200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831691638bf637429161081d918a9133918a91600091906004016135b9565b600060405180830381600087803b15801561083757600080fd5b505af115801561084b573d6000803e3d6000fd5b505050505b61088b84866004898154811061086257fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169190612717565b8373ffffffffffffffffffffffffffffffffffffffff16863373ffffffffffffffffffffffffffffffffffffffff167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec2132886040516108e991906135b0565b60405180910390a4505050505050565b6003818154811061090657fe5b6000918252602090912001546fffffffffffffffffffffffffffffffff8116915067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b60085481565b610975612b8d565b61097e8361150e565b6000848152600660209081526040808320338452909152812082518154939450909264e8d4a51000916109c391906fffffffffffffffffffffffffffffffff1661261c565b816109ca57fe5b04905060006109ee6109e984600101548461267390919063ffffffff16565b612841565b6001840183905590508015610a3e57610a3e73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168683612717565b600060058781548110610a4d57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1690508015610b055783546040517f8bf6374200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831691638bf6374291610ad2918b9133918c918991906004016135b9565b600060405180830381600087803b158015610aec57600080fd5b505af1158015610b00573d6000803e3d6000fd5b505050505b863373ffffffffffffffffffffffffffffffffffffffff167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae066092495484604051610b4c91906135b0565b60405180910390a350505050505050565b6000610b67612b8d565b60038481548110610b7457fe5b600091825260208083206040805160608101825291909301546fffffffffffffffffffffffffffffffff808216835267ffffffffffffffff70010000000000000000000000000000000083048116848601527801000000000000000000000000000000000000000000000000909204909116828501528885526006835283852073ffffffffffffffffffffffffffffffffffffffff89168652909252918320825160048054949650919492169288908110610c2b57fe5b6000918252602090912001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190610c8a903090600401612fdf565b60206040518083038186803b158015610ca257600080fd5b505afa158015610cb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cda9190612e76565b9050836020015167ffffffffffffffff1642118015610cf857508015155b15610d86576000610d20856020015167ffffffffffffffff16426126da90919063ffffffff16565b90506000600854610d54876040015167ffffffffffffffff16610d4e6009548661261c90919063ffffffff16565b9061261c565b81610d5b57fe5b049050610d8183610d718364e8d4a5100061261c565b81610d7857fe5b86919004612881565b935050505b60018301548354610db4916109e99164e8d4a5100090610da6908761261c565b81610dad57fe5b0490612673565b979650505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e10576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd90613361565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008281526006602090815260408083203384529091528120805482825560018201839055600580549293919286908110610e8e57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1690508015610f46576040517f8bf6374200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638bf6374290610f139088903390899060009081906004016135b9565b600060405180830381600087803b158015610f2d57600080fd5b505af1158015610f41573d6000803e3d6000fd5b505050505b610f5884836004888154811061086257fe5b8373ffffffffffffffffffffffffffffffffffffffff16853373ffffffffffffffffffffffffffffffffffffffff167f2cac5e20e1541d836381527a43f651851e302817b71dc8e810284e69210c1c6b85604051610fb691906135b0565b60405180910390a45050505050565b60025473ffffffffffffffffffffffffffffffffffffffff16611014576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd90613439565b60006004828154811061102357fe5b60009182526020822001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116925082906370a0823190611084903090600401612fdf565b60206040518083038186803b15801561109c57600080fd5b505afa1580156110b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d49190612e76565b6002546040517f095ea7b300000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff8085169263095ea7b39261112f921690859060040161307f565b602060405180830381600087803b15801561114957600080fd5b505af115801561115d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111819190612ce6565b506002546040517fce5494bb00000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff169063ce5494bb906111d9908690600401612fdf565b602060405180830381600087803b1580156111f357600080fd5b505af1158015611207573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122b9190612d02565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8216906370a0823190611280903090600401612fdf565b60206040518083038186803b15801561129857600080fd5b505afa1580156112ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d09190612e76565b8214611308576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd90613296565b73ffffffffffffffffffffffffffffffffffffffff811660009081526007602052604090205460ff1615611368576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd906133cb565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526007602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00908116600117909155928616825290208054909116905560048054829190869081106113da57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b60015473ffffffffffffffffffffffffffffffffffffffff1633811461147a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd90613396565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179055600180549091169055565b611516612b8d565b6003828154811061152357fe5b60009182526020918290206040805160608101825292909101546fffffffffffffffffffffffffffffffff8116835267ffffffffffffffff7001000000000000000000000000000000008204811694840185905278010000000000000000000000000000000000000000000000009091041690820152915042111561185d576000600483815481106115b157fe5b6000918252602090912001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190611610903090600401612fdf565b60206040518083038186803b15801561162857600080fd5b505afa15801561163c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116609190612e76565b9050801561171757600061168b836020015167ffffffffffffffff16426126da90919063ffffffff16565b905060006008546116b9856040015167ffffffffffffffff16610d4e6009548661261c90919063ffffffff16565b816116c057fe5b0490506117006116e6846116d98464e8d4a5100061261c565b816116e057fe5b046128be565b85516fffffffffffffffffffffffffffffffff169061290a565b6fffffffffffffffffffffffffffffffff16845250505b6117204261295c565b67ffffffffffffffff166020830152600380548391908590811061174057fe5b6000918252602091829020835191018054848401516040958601517fffffffffffffffffffffffffffffffff000000000000000000000000000000009092166fffffffffffffffffffffffffffffffff909416939093177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000067ffffffffffffffff948516021777ffffffffffffffffffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000093909116929092029190911790558301518351915185927f0fc9545022a542541ad085d091fb09a2ab36fee366a4576ab63714ea907ad353926118539290918691613613565b60405180910390a2505b919050565b8060005b818110156118925761188984848381811061187d57fe5b9050602002013561150e565b50600101611866565b50505050565b600481815481106118a557fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60076020526000908152604090205460ff1681565b6040517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89169063d505accf9061193f908a908a908a908a908a908a908a90600401613031565b600060405180830381600087803b15801561195957600080fd5b505af115801561196d573d6000803e3d6000fd5b505050505050505050505050565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1633146119e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd90613361565b611a3d83611a37600387815481106119fc57fe5b600091825260209091200154600854907801000000000000000000000000000000000000000000000000900467ffffffffffffffff166126da565b90612881565b600855611a498361295c565b60038581548110611a5657fe5b9060005260206000200160000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508015611ae6578160058581548110611a9d57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b80611b1f5760058481548110611af857fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16611b21565b815b73ffffffffffffffffffffffffffffffffffffffff16847f95895a6ab1df54420d241b55243258a33e61b2194db66c1179ec521aae8e18658584604051611b699291906135f5565b60405180910390a350505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b611b9b612b8d565b611ba48461150e565b600085815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091529020805491925090611be39085612881565b81558151611c239064e8d4a5100090611c0f9087906fffffffffffffffffffffffffffffffff1661261c565b81611c1657fe5b60018401549190046129a0565b8160010181905550600060058681548110611c3a57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1690508015611cf35781546040517f8bf6374200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831691638bf6374291611cc0918a9189918291600091906004016135b9565b600060405180830381600087803b158015611cda57600080fd5b505af1158015611cee573d6000803e3d6000fd5b505050505b611d3033308760048a81548110611d0657fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16929190612a00565b8373ffffffffffffffffffffffffffffffffffffffff16863373ffffffffffffffffffffffffffffffffffffffff167f02d7e648dd130fc184d383e55bb126ac4c9c60e8f94bf05acdf557ba2d540b47886040516108e991906135b0565b60066020908152600092835260408084209091529082529020805460019091015482565b60005473ffffffffffffffffffffffffffffffffffffffff163314611e03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd90613361565b60098190556040517fc6ce5eff3291fb2c1517b943daa5067ea76c83816bbf674307fbc7fea3b311d090611e389083906135b0565b60405180910390a150565b60095481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60005473ffffffffffffffffffffffffffffffffffffffff163314611ebe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd90613361565b73ffffffffffffffffffffffffffffffffffffffff821660009081526007602052604090205460ff1615611f1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd906133cb565b600854611f2b9084612881565b6008556004805460018181019092557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560058054938401815560009081527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0909301805492851692909116919091179055604080516060810190915290815260039060208101611ffd4261295c565b67ffffffffffffffff1681526020016120158661295c565b67ffffffffffffffff9081169091528254600181810185556000948552602080862085519301805482870151604097880151871678010000000000000000000000000000000000000000000000000277ffffffffffffffffffffffffffffffffffffffffffffffff91909716700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff6fffffffffffffffffffffffffffffffff9097167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909316929092179590951617939093169390931790915573ffffffffffffffffffffffffffffffffffffffff80871680865260079093529290932080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168417905560045491841692909161215f916126da565b7f81ee0f8c5c46e2cb41984886f77a84181724abb86c32a5f6de539b07509d45e58660405161218e91906135b0565b60405180910390a4505050565b600581815481106118a557fe5b6121b0612b8d565b6121b98461150e565b6000858152600660209081526040808320338452909152812082518154939450909264e8d4a51000916121fe91906fffffffffffffffffffffffffffffffff1661261c565b8161220557fe5b04905060006122246109e984600101548461267390919063ffffffff16565b905061226864e8d4a5100061225886600001516fffffffffffffffffffffffffffffffff168961261c90919063ffffffff16565b8161225f57fe5b84919004612673565b6001840155825461227990876126da565b83556122bc73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168683612717565b6000600588815481106122cb57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905080156123835783546040517f8bf6374200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831691638bf6374291612350918c9133918c918991906004016135b9565b600060405180830381600087803b15801561236a57600080fd5b505af115801561237e573d6000803e3d6000fd5b505050505b612395868860048b8154811061086257fe5b8573ffffffffffffffffffffffffffffffffffffffff16883373ffffffffffffffffffffffffffffffffffffffff167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec21328a6040516123f391906135b0565b60405180910390a4873373ffffffffffffffffffffffffffffffffffffffff167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae06609249548460405161244291906135b0565b60405180910390a35050505050505050565b6060808367ffffffffffffffff8111801561246e57600080fd5b50604051908082528060200260200182016040528015612498578160200160208202803683370190505b5091508367ffffffffffffffff811180156124b257600080fd5b506040519080825280602002602001820160405280156124e657816020015b60608152602001906001900390816124d15790505b50905060005b848110156125f757600060603088888581811061250557fe5b90506020028101906125179190613647565b604051612525929190612fb3565b600060405180830381855af49150503d8060008114612560576040519150601f19603f3d011682016040523d82523d6000602084013e612565565b606091505b50915091508180612574575085155b61257d82612b2d565b906125b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd919061314a565b50818584815181106125c357fe5b602002602001019015159081151581525050808484815181106125e257fe5b602090810291909101015250506001016124ec565b50935093915050565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60008115806126375750508082028282828161263457fe5b04145b61266d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd90613502565b92915050565b60008183038183128015906126885750838113155b8061269d575060008312801561269d57508381135b6126d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd90613470565b9392505050565b8082038281111561266d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd9061315d565b600060608473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb858560405160240161274a92919061307f565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516127989190612fc3565b6000604051808303816000865af19150503d80600081146127d5576040519150601f19603f3d011682016040523d82523d6000602084013e6127da565b606091505b50915091508180156128045750805115806128045750808060200190518101906128049190612ce6565b61283a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd906131cb565b5050505050565b60008082121561287d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd90613194565b5090565b8181018181101561266d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd9061332a565b60006fffffffffffffffffffffffffffffffff82111561287d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd906132f3565b8181016fffffffffffffffffffffffffffffffff808316908216101561266d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd9061332a565b600067ffffffffffffffff82111561287d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd90613402565b60008282018183128015906129b55750838112155b806129ca57506000831280156129ca57508381125b6126d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd90613202565b600060608573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401612a3593929190613000565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051612a839190612fc3565b6000604051808303816000865af19150503d8060008114612ac0576040519150601f19603f3d011682016040523d82523d6000602084013e612ac5565b606091505b5091509150818015612aef575080511580612aef575080806020019051810190612aef9190612ce6565b612b25576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd906134cd565b505050505050565b6060604482511015612b73575060408051808201909152601d81527f5472616e73616374696f6e2072657665727465642073696c656e746c79000000602082015261185d565b6004820191508180602001905181019061266d9190612da5565b604080516060810182526000808252602082018190529181019190915290565b60008083601f840112612bbe578182fd5b50813567ffffffffffffffff811115612bd5578182fd5b6020830191508360208083028501011115612bef57600080fd5b9250929050565b600060208284031215612c07578081fd5b81356126d3816136d6565b600080600060608486031215612c26578182fd5b8335612c31816136d6565b92506020840135612c41816136fb565b91506040840135612c51816136fb565b809150509250925092565b600080600060408486031215612c70578283fd5b833567ffffffffffffffff811115612c86578384fd5b612c9286828701612bad565b9094509250506020840135612c51816136fb565b60008060208385031215612cb8578182fd5b823567ffffffffffffffff811115612cce578283fd5b612cda85828601612bad565b90969095509350505050565b600060208284031215612cf7578081fd5b81516126d3816136fb565b600060208284031215612d13578081fd5b81516126d3816136d6565b600080600080600080600080610100898b031215612d3a578384fd5b8835612d45816136d6565b97506020890135612d55816136d6565b96506040890135612d65816136d6565b9550606089013594506080890135935060a089013560ff81168114612d88578384fd5b979a969950949793969295929450505060c08201359160e0013590565b600060208284031215612db6578081fd5b815167ffffffffffffffff80821115612dcd578283fd5b818401915084601f830112612de0578283fd5b815181811115612dee578384fd5b60405160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401168201018181108482111715612e2c578586fd5b604052818152838201602001871015612e43578485fd5b612e548260208301602087016136aa565b9695505050505050565b600060208284031215612e6f578081fd5b5035919050565b600060208284031215612e87578081fd5b5051919050565b60008060408385031215612ea0578182fd5b823591506020830135612eb2816136d6565b809150509250929050565b600080600060608486031215612ed1578081fd5b833592506020840135612ee3816136d6565b91506040840135612c51816136d6565b600080600060608486031215612f07578081fd5b83359250602084013591506040840135612c51816136d6565b60008060008060808587031215612f35578182fd5b84359350602085013592506040850135612f4e816136d6565b91506060850135612f5e816136fb565b939692955090935050565b60008151808452612f818160208601602086016136aa565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000828483379101908152919050565b60008251612fd58184602087016136aa565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff97881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b604080825283519082018190526000906020906060840190828701845b828110156130e05781511515845292840192908401906001016130c2565b505050838103828501528085516130f781846135b0565b91508192508381028201848801865b8381101561313057858303855261311e838351612f69565b94870194925090860190600101613106565b50909998505050505050505050565b901515815260200190565b6000602082526126d36020830184612f69565b60208082526015908201527f426f72696e674d6174683a20556e646572666c6f770000000000000000000000604082015260600190565b6020808252600b908201527f496e7465676572203c2030000000000000000000000000000000000000000000604082015260600190565b6020808252601c908201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604082015260600190565b60208082526021908201527f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f60408201527f7700000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526015908201527f4f776e61626c653a207a65726f20616464726573730000000000000000000000604082015260600190565b60208082526029908201527f4d61737465724368656656323a206d696772617465642062616c616e6365206d60408201527f757374206d617463680000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f426f72696e674d6174683a2075696e74313238204f766572666c6f7700000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604082015260600190565b60208082526013908201527f546f6b656e20616c726561647920616464656400000000000000000000000000604082015260600190565b6020808252601b908201527f426f72696e674d6174683a2075696e743634204f766572666c6f770000000000604082015260600190565b6020808252601d908201527f4d61737465724368656656323a206e6f206d69677261746f7220736574000000604082015260600190565b60208082526024908201527f5369676e6564536166654d6174683a207375627472616374696f6e206f76657260408201527f666c6f7700000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252818101527f426f72696e6745524332303a205472616e7366657246726f6d206661696c6564604082015260600190565b60208082526018908201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604082015260600190565b81516fffffffffffffffffffffffffffffffff16815260208083015167ffffffffffffffff90811691830191909152604092830151169181019190915260600190565b6fffffffffffffffffffffffffffffffff93909316835267ffffffffffffffff918216602084015216604082015260600190565b90815260200190565b94855273ffffffffffffffffffffffffffffffffffffffff93841660208601529190921660408401526060830191909152608082015260a00190565b9182521515602082015260400190565b918252602082015260400190565b67ffffffffffffffff93909316835260208301919091526fffffffffffffffffffffffffffffffff16604082015260600190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261367b578283fd5b83018035915067ffffffffffffffff821115613695578283fd5b602001915036819003821315612bef57600080fd5b60005b838110156136c55781810151838201526020016136ad565b838111156118925750506000910152565b73ffffffffffffffffffffffffffffffffffffffff811681146136f857600080fd5b50565b80151581146136f857600080fdfea26469706673582212208a14da58cb08cd849a28844ebd777fb9e053479d71202a84420b1323e84ac52364736f6c634300060c0033000000000000000000000000fe60a48a0bcf4636afecc9642a145d2f241a7011
Deployed Bytecode
0x6080604052600436106101c25760003560e01c806379d12ffb116100f75780639baf58c311610095578063c346253d11610064578063c346253d146104f6578063d1abb90714610516578063d2423b5114610536578063e30c397814610557576101c2565b80639baf58c31461048c578063a06e408b146104ac578063ab560e10146104c1578063ab7de098146104d6576101c2565b806388bba42f116100d157806388bba42f146104095780638da5cb5b146104295780638dbdbe6d1461043e57806393f1a40b1461045e576101c2565b806379d12ffb146103a75780637c516e94146103d45780637cd07e47146103f4576101c2565b806323cf3118116101645780634e71e0c81161013e5780634e71e0c81461031857806351eb05a61461032d57806357a5b58c1461035a57806378ed5d1f1461037a576101c2565b806323cf3118146102b85780632f940c70146102d8578063454b0608146102f8576101c2565b80631526fe27116101a05780631526fe271461023457806317caf6f11461026357806318fccc7614610278578063195426ec14610298576101c2565b8063078dfbe7146101c7578063081e3eda146101e95780630ad58d2f14610214575b600080fd5b3480156101d357600080fd5b506101e76101e2366004612c12565b61056c565b005b3480156101f557600080fd5b506101fe610700565b60405161020b91906135b0565b60405180910390f35b34801561022057600080fd5b506101e761022f366004612ef3565b610706565b34801561024057600080fd5b5061025461024f366004612e5e565b6108f9565b60405161020b9392919061357c565b34801561026f57600080fd5b506101fe610967565b34801561028457600080fd5b506101e7610293366004612e8e565b61096d565b3480156102a457600080fd5b506101fe6102b3366004612e8e565b610b5d565b3480156102c457600080fd5b506101e76102d3366004612bf6565b610dbf565b3480156102e457600080fd5b506101e76102f3366004612e8e565b610e57565b34801561030457600080fd5b506101e7610313366004612e5e565b610fc5565b34801561032457600080fd5b506101e7611428565b34801561033957600080fd5b5061034d610348366004612e5e565b61150e565b60405161020b9190613539565b34801561036657600080fd5b506101e7610375366004612ca6565b611862565b34801561038657600080fd5b5061039a610395366004612e5e565b611898565b60405161020b9190612fdf565b3480156103b357600080fd5b506103c76103c2366004612bf6565b6118cc565b60405161020b919061313f565b3480156103e057600080fd5b506101e76103ef366004612d1e565b6118e1565b34801561040057600080fd5b5061039a61197b565b34801561041557600080fd5b506101e7610424366004612f20565b611997565b34801561043557600080fd5b5061039a611b77565b34801561044a57600080fd5b506101e7610459366004612ef3565b611b93565b34801561046a57600080fd5b5061047e610479366004612e8e565b611d8e565b60405161020b929190613605565b34801561049857600080fd5b506101e76104a7366004612e5e565b611db2565b3480156104b857600080fd5b506101fe611e43565b3480156104cd57600080fd5b5061039a611e49565b3480156104e257600080fd5b506101e76104f1366004612ebd565b611e6d565b34801561050257600080fd5b5061039a610511366004612e5e565b61219b565b34801561052257600080fd5b506101e7610531366004612ef3565b6121a8565b610549610544366004612c5c565b612454565b60405161020b9291906130a5565b34801561056357600080fd5b5061039a612600565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd90613361565b60405180910390fd5b81156106ba5773ffffffffffffffffffffffffffffffffffffffff83161515806105ed5750805b610623576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd9061325f565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff85167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179091556001805490911690556106fb565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85161790555b505050565b60035490565b61070e612b8d565b6107178461150e565b600085815260066020908152604080832033845290915290208151919250906107729064e8d4a510009061075e9087906fffffffffffffffffffffffffffffffff1661261c565b8161076557fe5b6001840154919004612673565b6001820155805461078390856126da565b815560058054600091908790811061079757fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905080156108505781546040517f8bf6374200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831691638bf637429161081d918a9133918a91600091906004016135b9565b600060405180830381600087803b15801561083757600080fd5b505af115801561084b573d6000803e3d6000fd5b505050505b61088b84866004898154811061086257fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169190612717565b8373ffffffffffffffffffffffffffffffffffffffff16863373ffffffffffffffffffffffffffffffffffffffff167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec2132886040516108e991906135b0565b60405180910390a4505050505050565b6003818154811061090657fe5b6000918252602090912001546fffffffffffffffffffffffffffffffff8116915067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b60085481565b610975612b8d565b61097e8361150e565b6000848152600660209081526040808320338452909152812082518154939450909264e8d4a51000916109c391906fffffffffffffffffffffffffffffffff1661261c565b816109ca57fe5b04905060006109ee6109e984600101548461267390919063ffffffff16565b612841565b6001840183905590508015610a3e57610a3e73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000fe60a48a0bcf4636afecc9642a145d2f241a7011168683612717565b600060058781548110610a4d57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1690508015610b055783546040517f8bf6374200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831691638bf6374291610ad2918b9133918c918991906004016135b9565b600060405180830381600087803b158015610aec57600080fd5b505af1158015610b00573d6000803e3d6000fd5b505050505b863373ffffffffffffffffffffffffffffffffffffffff167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae066092495484604051610b4c91906135b0565b60405180910390a350505050505050565b6000610b67612b8d565b60038481548110610b7457fe5b600091825260208083206040805160608101825291909301546fffffffffffffffffffffffffffffffff808216835267ffffffffffffffff70010000000000000000000000000000000083048116848601527801000000000000000000000000000000000000000000000000909204909116828501528885526006835283852073ffffffffffffffffffffffffffffffffffffffff89168652909252918320825160048054949650919492169288908110610c2b57fe5b6000918252602090912001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190610c8a903090600401612fdf565b60206040518083038186803b158015610ca257600080fd5b505afa158015610cb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cda9190612e76565b9050836020015167ffffffffffffffff1642118015610cf857508015155b15610d86576000610d20856020015167ffffffffffffffff16426126da90919063ffffffff16565b90506000600854610d54876040015167ffffffffffffffff16610d4e6009548661261c90919063ffffffff16565b9061261c565b81610d5b57fe5b049050610d8183610d718364e8d4a5100061261c565b81610d7857fe5b86919004612881565b935050505b60018301548354610db4916109e99164e8d4a5100090610da6908761261c565b81610dad57fe5b0490612673565b979650505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610e10576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd90613361565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008281526006602090815260408083203384529091528120805482825560018201839055600580549293919286908110610e8e57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1690508015610f46576040517f8bf6374200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638bf6374290610f139088903390899060009081906004016135b9565b600060405180830381600087803b158015610f2d57600080fd5b505af1158015610f41573d6000803e3d6000fd5b505050505b610f5884836004888154811061086257fe5b8373ffffffffffffffffffffffffffffffffffffffff16853373ffffffffffffffffffffffffffffffffffffffff167f2cac5e20e1541d836381527a43f651851e302817b71dc8e810284e69210c1c6b85604051610fb691906135b0565b60405180910390a45050505050565b60025473ffffffffffffffffffffffffffffffffffffffff16611014576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd90613439565b60006004828154811061102357fe5b60009182526020822001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116925082906370a0823190611084903090600401612fdf565b60206040518083038186803b15801561109c57600080fd5b505afa1580156110b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d49190612e76565b6002546040517f095ea7b300000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff8085169263095ea7b39261112f921690859060040161307f565b602060405180830381600087803b15801561114957600080fd5b505af115801561115d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111819190612ce6565b506002546040517fce5494bb00000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff169063ce5494bb906111d9908690600401612fdf565b602060405180830381600087803b1580156111f357600080fd5b505af1158015611207573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122b9190612d02565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8216906370a0823190611280903090600401612fdf565b60206040518083038186803b15801561129857600080fd5b505afa1580156112ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d09190612e76565b8214611308576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd90613296565b73ffffffffffffffffffffffffffffffffffffffff811660009081526007602052604090205460ff1615611368576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd906133cb565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526007602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00908116600117909155928616825290208054909116905560048054829190869081106113da57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b60015473ffffffffffffffffffffffffffffffffffffffff1633811461147a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd90613396565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179055600180549091169055565b611516612b8d565b6003828154811061152357fe5b60009182526020918290206040805160608101825292909101546fffffffffffffffffffffffffffffffff8116835267ffffffffffffffff7001000000000000000000000000000000008204811694840185905278010000000000000000000000000000000000000000000000009091041690820152915042111561185d576000600483815481106115b157fe5b6000918252602090912001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190611610903090600401612fdf565b60206040518083038186803b15801561162857600080fd5b505afa15801561163c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116609190612e76565b9050801561171757600061168b836020015167ffffffffffffffff16426126da90919063ffffffff16565b905060006008546116b9856040015167ffffffffffffffff16610d4e6009548661261c90919063ffffffff16565b816116c057fe5b0490506117006116e6846116d98464e8d4a5100061261c565b816116e057fe5b046128be565b85516fffffffffffffffffffffffffffffffff169061290a565b6fffffffffffffffffffffffffffffffff16845250505b6117204261295c565b67ffffffffffffffff166020830152600380548391908590811061174057fe5b6000918252602091829020835191018054848401516040958601517fffffffffffffffffffffffffffffffff000000000000000000000000000000009092166fffffffffffffffffffffffffffffffff909416939093177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000067ffffffffffffffff948516021777ffffffffffffffffffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000093909116929092029190911790558301518351915185927f0fc9545022a542541ad085d091fb09a2ab36fee366a4576ab63714ea907ad353926118539290918691613613565b60405180910390a2505b919050565b8060005b818110156118925761188984848381811061187d57fe5b9050602002013561150e565b50600101611866565b50505050565b600481815481106118a557fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60076020526000908152604090205460ff1681565b6040517fd505accf00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89169063d505accf9061193f908a908a908a908a908a908a908a90600401613031565b600060405180830381600087803b15801561195957600080fd5b505af115801561196d573d6000803e3d6000fd5b505050505050505050505050565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1633146119e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd90613361565b611a3d83611a37600387815481106119fc57fe5b600091825260209091200154600854907801000000000000000000000000000000000000000000000000900467ffffffffffffffff166126da565b90612881565b600855611a498361295c565b60038581548110611a5657fe5b9060005260206000200160000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508015611ae6578160058581548110611a9d57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b80611b1f5760058481548110611af857fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16611b21565b815b73ffffffffffffffffffffffffffffffffffffffff16847f95895a6ab1df54420d241b55243258a33e61b2194db66c1179ec521aae8e18658584604051611b699291906135f5565b60405180910390a350505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b611b9b612b8d565b611ba48461150e565b600085815260066020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091529020805491925090611be39085612881565b81558151611c239064e8d4a5100090611c0f9087906fffffffffffffffffffffffffffffffff1661261c565b81611c1657fe5b60018401549190046129a0565b8160010181905550600060058681548110611c3a57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1690508015611cf35781546040517f8bf6374200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831691638bf6374291611cc0918a9189918291600091906004016135b9565b600060405180830381600087803b158015611cda57600080fd5b505af1158015611cee573d6000803e3d6000fd5b505050505b611d3033308760048a81548110611d0657fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16929190612a00565b8373ffffffffffffffffffffffffffffffffffffffff16863373ffffffffffffffffffffffffffffffffffffffff167f02d7e648dd130fc184d383e55bb126ac4c9c60e8f94bf05acdf557ba2d540b47886040516108e991906135b0565b60066020908152600092835260408084209091529082529020805460019091015482565b60005473ffffffffffffffffffffffffffffffffffffffff163314611e03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd90613361565b60098190556040517fc6ce5eff3291fb2c1517b943daa5067ea76c83816bbf674307fbc7fea3b311d090611e389083906135b0565b60405180910390a150565b60095481565b7f000000000000000000000000fe60a48a0bcf4636afecc9642a145d2f241a701181565b60005473ffffffffffffffffffffffffffffffffffffffff163314611ebe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd90613361565b73ffffffffffffffffffffffffffffffffffffffff821660009081526007602052604090205460ff1615611f1e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd906133cb565b600854611f2b9084612881565b6008556004805460018181019092557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560058054938401815560009081527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0909301805492851692909116919091179055604080516060810190915290815260039060208101611ffd4261295c565b67ffffffffffffffff1681526020016120158661295c565b67ffffffffffffffff9081169091528254600181810185556000948552602080862085519301805482870151604097880151871678010000000000000000000000000000000000000000000000000277ffffffffffffffffffffffffffffffffffffffffffffffff91909716700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff6fffffffffffffffffffffffffffffffff9097167fffffffffffffffffffffffffffffffff00000000000000000000000000000000909316929092179590951617939093169390931790915573ffffffffffffffffffffffffffffffffffffffff80871680865260079093529290932080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168417905560045491841692909161215f916126da565b7f81ee0f8c5c46e2cb41984886f77a84181724abb86c32a5f6de539b07509d45e58660405161218e91906135b0565b60405180910390a4505050565b600581815481106118a557fe5b6121b0612b8d565b6121b98461150e565b6000858152600660209081526040808320338452909152812082518154939450909264e8d4a51000916121fe91906fffffffffffffffffffffffffffffffff1661261c565b8161220557fe5b04905060006122246109e984600101548461267390919063ffffffff16565b905061226864e8d4a5100061225886600001516fffffffffffffffffffffffffffffffff168961261c90919063ffffffff16565b8161225f57fe5b84919004612673565b6001840155825461227990876126da565b83556122bc73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000fe60a48a0bcf4636afecc9642a145d2f241a7011168683612717565b6000600588815481106122cb57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905080156123835783546040517f8bf6374200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831691638bf6374291612350918c9133918c918991906004016135b9565b600060405180830381600087803b15801561236a57600080fd5b505af115801561237e573d6000803e3d6000fd5b505050505b612395868860048b8154811061086257fe5b8573ffffffffffffffffffffffffffffffffffffffff16883373ffffffffffffffffffffffffffffffffffffffff167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec21328a6040516123f391906135b0565b60405180910390a4873373ffffffffffffffffffffffffffffffffffffffff167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae06609249548460405161244291906135b0565b60405180910390a35050505050505050565b6060808367ffffffffffffffff8111801561246e57600080fd5b50604051908082528060200260200182016040528015612498578160200160208202803683370190505b5091508367ffffffffffffffff811180156124b257600080fd5b506040519080825280602002602001820160405280156124e657816020015b60608152602001906001900390816124d15790505b50905060005b848110156125f757600060603088888581811061250557fe5b90506020028101906125179190613647565b604051612525929190612fb3565b600060405180830381855af49150503d8060008114612560576040519150601f19603f3d011682016040523d82523d6000602084013e612565565b606091505b50915091508180612574575085155b61257d82612b2d565b906125b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd919061314a565b50818584815181106125c357fe5b602002602001019015159081151581525050808484815181106125e257fe5b602090810291909101015250506001016124ec565b50935093915050565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60008115806126375750508082028282828161263457fe5b04145b61266d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd90613502565b92915050565b60008183038183128015906126885750838113155b8061269d575060008312801561269d57508381135b6126d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd90613470565b9392505050565b8082038281111561266d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd9061315d565b600060608473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb858560405160240161274a92919061307f565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516127989190612fc3565b6000604051808303816000865af19150503d80600081146127d5576040519150601f19603f3d011682016040523d82523d6000602084013e6127da565b606091505b50915091508180156128045750805115806128045750808060200190518101906128049190612ce6565b61283a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd906131cb565b5050505050565b60008082121561287d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd90613194565b5090565b8181018181101561266d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd9061332a565b60006fffffffffffffffffffffffffffffffff82111561287d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd906132f3565b8181016fffffffffffffffffffffffffffffffff808316908216101561266d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd9061332a565b600067ffffffffffffffff82111561287d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd90613402565b60008282018183128015906129b55750838112155b806129ca57506000831280156129ca57508381125b6126d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd90613202565b600060608573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401612a3593929190613000565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051612a839190612fc3565b6000604051808303816000865af19150503d8060008114612ac0576040519150601f19603f3d011682016040523d82523d6000602084013e612ac5565b606091505b5091509150818015612aef575080511580612aef575080806020019051810190612aef9190612ce6565b612b25576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105bd906134cd565b505050505050565b6060604482511015612b73575060408051808201909152601d81527f5472616e73616374696f6e2072657665727465642073696c656e746c79000000602082015261185d565b6004820191508180602001905181019061266d9190612da5565b604080516060810182526000808252602082018190529181019190915290565b60008083601f840112612bbe578182fd5b50813567ffffffffffffffff811115612bd5578182fd5b6020830191508360208083028501011115612bef57600080fd5b9250929050565b600060208284031215612c07578081fd5b81356126d3816136d6565b600080600060608486031215612c26578182fd5b8335612c31816136d6565b92506020840135612c41816136fb565b91506040840135612c51816136fb565b809150509250925092565b600080600060408486031215612c70578283fd5b833567ffffffffffffffff811115612c86578384fd5b612c9286828701612bad565b9094509250506020840135612c51816136fb565b60008060208385031215612cb8578182fd5b823567ffffffffffffffff811115612cce578283fd5b612cda85828601612bad565b90969095509350505050565b600060208284031215612cf7578081fd5b81516126d3816136fb565b600060208284031215612d13578081fd5b81516126d3816136d6565b600080600080600080600080610100898b031215612d3a578384fd5b8835612d45816136d6565b97506020890135612d55816136d6565b96506040890135612d65816136d6565b9550606089013594506080890135935060a089013560ff81168114612d88578384fd5b979a969950949793969295929450505060c08201359160e0013590565b600060208284031215612db6578081fd5b815167ffffffffffffffff80821115612dcd578283fd5b818401915084601f830112612de0578283fd5b815181811115612dee578384fd5b60405160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401168201018181108482111715612e2c578586fd5b604052818152838201602001871015612e43578485fd5b612e548260208301602087016136aa565b9695505050505050565b600060208284031215612e6f578081fd5b5035919050565b600060208284031215612e87578081fd5b5051919050565b60008060408385031215612ea0578182fd5b823591506020830135612eb2816136d6565b809150509250929050565b600080600060608486031215612ed1578081fd5b833592506020840135612ee3816136d6565b91506040840135612c51816136d6565b600080600060608486031215612f07578081fd5b83359250602084013591506040840135612c51816136d6565b60008060008060808587031215612f35578182fd5b84359350602085013592506040850135612f4e816136d6565b91506060850135612f5e816136fb565b939692955090935050565b60008151808452612f818160208601602086016136aa565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000828483379101908152919050565b60008251612fd58184602087016136aa565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff97881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b604080825283519082018190526000906020906060840190828701845b828110156130e05781511515845292840192908401906001016130c2565b505050838103828501528085516130f781846135b0565b91508192508381028201848801865b8381101561313057858303855261311e838351612f69565b94870194925090860190600101613106565b50909998505050505050505050565b901515815260200190565b6000602082526126d36020830184612f69565b60208082526015908201527f426f72696e674d6174683a20556e646572666c6f770000000000000000000000604082015260600190565b6020808252600b908201527f496e7465676572203c2030000000000000000000000000000000000000000000604082015260600190565b6020808252601c908201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604082015260600190565b60208082526021908201527f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f60408201527f7700000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526015908201527f4f776e61626c653a207a65726f20616464726573730000000000000000000000604082015260600190565b60208082526029908201527f4d61737465724368656656323a206d696772617465642062616c616e6365206d60408201527f757374206d617463680000000000000000000000000000000000000000000000606082015260800190565b6020808252601c908201527f426f72696e674d6174683a2075696e74313238204f766572666c6f7700000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604082015260600190565b60208082526013908201527f546f6b656e20616c726561647920616464656400000000000000000000000000604082015260600190565b6020808252601b908201527f426f72696e674d6174683a2075696e743634204f766572666c6f770000000000604082015260600190565b6020808252601d908201527f4d61737465724368656656323a206e6f206d69677261746f7220736574000000604082015260600190565b60208082526024908201527f5369676e6564536166654d6174683a207375627472616374696f6e206f76657260408201527f666c6f7700000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252818101527f426f72696e6745524332303a205472616e7366657246726f6d206661696c6564604082015260600190565b60208082526018908201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604082015260600190565b81516fffffffffffffffffffffffffffffffff16815260208083015167ffffffffffffffff90811691830191909152604092830151169181019190915260600190565b6fffffffffffffffffffffffffffffffff93909316835267ffffffffffffffff918216602084015216604082015260600190565b90815260200190565b94855273ffffffffffffffffffffffffffffffffffffffff93841660208601529190921660408401526060830191909152608082015260a00190565b9182521515602082015260400190565b918252602082015260400190565b67ffffffffffffffff93909316835260208301919091526fffffffffffffffffffffffffffffffff16604082015260600190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261367b578283fd5b83018035915067ffffffffffffffff821115613695578283fd5b602001915036819003821315612bef57600080fd5b60005b838110156136c55781810151838201526020016136ad565b838111156118925750506000910152565b73ffffffffffffffffffffffffffffffffffffffff811681146136f857600080fd5b50565b80151581146136f857600080fdfea26469706673582212208a14da58cb08cd849a28844ebd777fb9e053479d71202a84420b1323e84ac52364736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000fe60a48a0bcf4636afecc9642a145d2f241a7011
-----Decoded View---------------
Arg [0] : _sushi (address): 0xfe60A48a0bCf4636aFEcC9642a145D2F241A7011
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000fe60a48a0bcf4636afecc9642a145d2f241a7011
Deployed Bytecode Sourcemap
13472:13171:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7542:472;;;;;;;;;;-1:-1:-1;7542:472:0;;;;;:::i;:::-;;:::i;:::-;;16139:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22944:679;;;;;;;;;;-1:-1:-1;22944:679:0;;;;;:::i;:::-;;:::i;14505:26::-;;;;;;;;;;-1:-1:-1;14505:26:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;15035:30::-;;;;;;;;;;;;;:::i;23802:800::-;;;;;;;;;;-1:-1:-1;23802:800:0;;;;;:::i;:::-;;:::i;19654:802::-;;;;;;;;;;-1:-1:-1;19654:802:0;;;;;:::i;:::-;;:::i;18501:102::-;;;;;;;;;;-1:-1:-1;18501:102:0;;;;;:::i;:::-;;:::i;26065:575::-;;;;;;;;;;-1:-1:-1;26065:575:0;;;;;:::i;:::-;;:::i;18761:665::-;;;;;;;;;;-1:-1:-1;18761:665:0;;;;;:::i;:::-;;:::i;8063:348::-;;;;;;;;;;;;;:::i;21015:785::-;;;;;;;;;;-1:-1:-1;21015:785:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;20638:193::-;;;;;;;;;;-1:-1:-1;20638:193:0;;;;;:::i;:::-;;:::i;14599:23::-;;;;;;;;;;-1:-1:-1;14599:23:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;14888:44::-;;;;;;;;;;-1:-1:-1;14888:44:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6470:246::-;;;;;;;;;;-1:-1:-1;6470:246:0;;;;;:::i;:::-;;:::i;14426:29::-;;;;;;;;;;;;;:::i;17593:411::-;;;;;;;;;;-1:-1:-1;17593:411:0;;;;;:::i;:::-;;:::i;7118:20::-;;;;;;;;;;;;;:::i;22044:688::-;;;;;;;;;;-1:-1:-1;22044:688:0;;;;;:::i;:::-;;:::i;14786:66::-;;;;;;;;;;-1:-1:-1;14786:66:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;18189:170::-;;;;;;;;;;-1:-1:-1;18189:170:0;;;;;:::i;:::-;;:::i;15074:29::-;;;;;;;;;;;;;:::i;14284:::-;;;;;;;;;;;;;:::i;16578:621::-;;;;;;;;;;-1:-1:-1;16578:621:0;;;;;:::i;:::-;;:::i;14692:27::-;;;;;;;;;;-1:-1:-1;14692:27:0;;;;;:::i;:::-;;:::i;24884:996::-;;;;;;;;;;-1:-1:-1;24884:996:0;;;;;:::i;:::-;;:::i;5569:554::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;7165:27::-;;;;;;;;;;;;;:::i;7542:472::-;8514:5;;;;8500:10;:19;8492:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7647:6:::1;7643:364;;;7701:22;::::0;::::1;::::0;::::1;::::0;:34:::1;;;7727:8;7701:34;7693:68;;;;;;;;;;;;:::i;:::-;7828:5;::::0;;7807:37:::1;::::0;::::1;::::0;;::::1;::::0;7828:5;::::1;::::0;7807:37:::1;::::0;::::1;7859:5;:16:::0;;::::1;::::0;::::1;::::0;;;::::1;;::::0;;;;7890:25;;;;::::1;::::0;;7643:364:::1;;;7972:12;:23:::0;;;::::1;;::::0;::::1;;::::0;;7643:364:::1;7542:472:::0;;;:::o;16139:100::-;16216:8;:15;;16139:100::o;22944:679::-;23021:20;;:::i;:::-;23044:15;23055:3;23044:10;:15::i;:::-;23070:21;23094:13;;;:8;:13;;;;;;;;23108:10;23094:25;;;;;;;23208:21;;23021:38;;-1:-1:-1;23094:25:0;23170:84;;15157:4;;23197:33;;:6;;:33;;:10;:33::i;:::-;:55;;;;;23170:15;;;;;23197:55;;23170:19;:84::i;:::-;23152:15;;;:102;23279:11;;:23;;23295:6;23279:15;:23::i;:::-;23265:37;;23362:8;:13;;23265:11;;23362:8;23371:3;;23362:13;;;;;;;;;;;;;;;;;;;-1:-1:-1;23390:32:0;;23386:125;;23487:11;;23439:60;;;;;:23;;;;;;:60;;23463:3;;23468:10;;23480:2;;23484:1;;23487:11;23439:60;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23386:125;23523:37;23549:2;23553:6;23523:7;23531:3;23523:12;;;;;;;;;;;;;;;;;;;;;:37;:25;:37::i;:::-;23612:2;23578:37;;23599:3;23587:10;23578:37;;;23604:6;23578:37;;;;;;:::i;:::-;;;;;;;;22944:679;;;;;;:::o;14505:26::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14505:26:0;;;;;;;;;;;;:::o;15035:30::-;;;;:::o;23802:800::-;23862:20;;:::i;:::-;23885:15;23896:3;23885:10;:15::i;:::-;23911:21;23935:13;;;:8;:13;;;;;;;;23949:10;23935:25;;;;;;;24020:21;;24004:11;;23862:38;;-1:-1:-1;23935:25:0;;15157:4;;24004:38;;:11;:38;;:15;:38::i;:::-;:60;;;;;;23971:94;;24076:21;24100:49;:37;24121:4;:15;;;24100:16;:20;;:37;;;;:::i;:::-;:47;:49::i;:::-;24182:15;;;:34;;;24076:73;-1:-1:-1;24258:18:0;;24254:88;;24293:37;:18;:5;:18;24312:2;24316:13;24293:18;:37::i;:::-;24354:19;24376:8;24385:3;24376:13;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24404:32:0;;24400:138;;24514:11;;24453:73;;;;;:23;;;;;;:73;;24478:3;;24483:10;;24495:2;;24499:13;;24514:11;24453:73;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24400:138;24575:3;24563:10;24555:39;;;24580:13;24555:39;;;;;;:::i;:::-;;;;;;;;23802:800;;;;;;;:::o;19654:802::-;19728:15;19756:20;;:::i;:::-;19779:8;19788:4;19779:14;;;;;;;;;;;;;;;;19756:37;;;;;;;;19779:14;;;;19756:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;19828:14;;;:8;:14;;;;;:21;;;;;;;;;;;19887;;19938:7;:13;;19756:37;;-1:-1:-1;19828:21:0;;19860:48;;;19837:4;;19938:13;;;;;;;;;;;;;;;;:38;;;;;:13;;;;;:23;;:38;;19970:4;;19938:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19919:57;;20009:4;:19;;;19991:37;;:15;:37;:54;;;;-1:-1:-1;20032:13:0;;;19991:54;19987:345;;;20062:12;20077:40;20097:4;:19;;;20077:40;;:15;:19;;:40;;;;:::i;:::-;20062:55;;20132:19;20202:15;;20154:45;20183:4;:15;;;20154:45;;:24;20163:14;;20154:4;:8;;:24;;;;:::i;:::-;:28;;:45::i;:::-;:63;;;;;;;-1:-1:-1;20251:69:0;20311:8;20272:36;20154:63;15157:4;20272:15;:36::i;:::-;:47;;;;;20251:16;;20272:47;;20251:20;:69::i;:::-;20232:88;;19987:345;;;20420:15;;;;20359:11;;20352:96;;:84;;15157:4;;20359:33;;20375:16;20359:15;:33::i;:::-;:55;;;;;;;20352:67;:84::i;:96::-;20342:106;19654:802;-1:-1:-1;;;;;;;19654:802:0:o;18501:102::-;8514:5;;;;8500:10;:19;8492:64;;;;;;;;;;;;:::i;:::-;18575:8:::1;:20:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;18501:102::o;26065:575::-;26135:21;26159:13;;;:8;:13;;;;;;;;26173:10;26159:25;;;;;;;26212:11;;26234:15;;;-1:-1:-1;26260:15:0;;:19;;;26314:8;:13;;26159:25;;26212:11;;26168:3;;26314:13;;;;;;;;;;;;;;;;;;;-1:-1:-1;26342:32:0;;26338:115;;26391:50;;;;;:23;;;;;;:50;;26415:3;;26420:10;;26432:2;;26436:1;;;;26391:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26338:115;26533:37;26559:2;26563:6;26533:7;26541:3;26533:12;;;;;;;:37;26629:2;26586:46;;26616:3;26604:10;26586:46;;;26621:6;26586:46;;;;;;:::i;:::-;;;;;;;;26065:575;;;;;:::o;18761:665::-;18826:8;;18818:31;18826:8;18810:73;;;;;;;;;;;;:::i;:::-;18894:15;18912:7;18920:4;18912:13;;;;;;;;;;;;;;;;;18950:33;;;;;18912:13;;;;;-1:-1:-1;18912:13:0;;18950:18;;:33;;18977:4;;18950:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19019:8;;18994:40;;;;;18936:47;;-1:-1:-1;18994:16:0;;;;;;;:40;;19019:8;;18936:47;;18994:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;19065:8:0;;:26;;;;;19045:17;;19065:8;;;:16;;:26;;19082:8;;19065:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19117:35;;;;;19045:46;;-1:-1:-1;19117:20:0;;;;;;:35;;19146:4;;19117:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19110:3;:42;19102:96;;;;;;;;;;;;:::i;:::-;19217:32;;;;;;;:11;:32;;;;;;;;:41;19209:73;;;;;;;;;;;;:::i;:::-;19293:32;;;;;;;;:11;:32;;;;;;:39;;;;;;19328:4;19293:39;;;;19343:30;;;;;;;:38;;;;;;;19392:7;:13;;19313:10;;19392:7;19400:4;;19392:13;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;18761:665;;;;:::o;8063:348::-;8131:12;;;;8191:10;:27;;8183:72;;;;;;;;;;;;:::i;:::-;8314:5;;;8293:42;;;;;;;8314:5;;;8293:42;;;8346:5;:21;;;;;;;;;;;;;;8378:25;;;;;;;8063:348::o;21015:785::-;21064:20;;:::i;:::-;21104:8;21113:3;21104:13;;;;;;;;;;;;;;;;;21097:20;;;;;;;;21104:13;;;;21097:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21132:15:0;:37;21128:665;;;21186:16;21205:7;21213:3;21205:12;;;;;;;;;;;;;;;;;;:37;;;;;:12;;;;;:22;;:37;;21236:4;;21205:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21186:56;-1:-1:-1;21261:12:0;;21257:339;;21294:12;21309:40;21329:4;:19;;;21309:40;;:15;:19;;:40;;;;:::i;:::-;21294:55;;21368:19;21438:15;;21390:45;21419:4;:15;;;21390:45;;:24;21399:14;;21390:4;:8;;:24;;;;:::i;:45::-;:63;;;;;;;-1:-1:-1;21496:84:0;21522:57;21562:8;21523:36;21390:63;15157:4;21523:15;:36::i;:::-;:47;;;;;;21522:55;:57::i;:::-;21496:21;;:25;;;;:84::i;:::-;21472:108;;;;-1:-1:-1;;21257:339:0;21632:22;:15;:20;:22::i;:::-;21610:44;;:19;;;:44;21669:8;:13;;21610:4;;21669:8;21678:3;;21669:13;;;;;;;;;;;;;;;:20;;:13;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21728:19;;;21759:21;;21709:72;;21723:3;;21709:72;;;;21728:19;;21749:8;;21709:72;:::i;:::-;;;;;;;;21128:665;;21015:785;;;:::o;20638:193::-;20722:4;20708:11;20744:80;20768:3;20764:1;:7;20744:80;;;20793:19;20804:4;;20809:1;20804:7;;;;;;;;;;;;;20793:10;:19::i;:::-;-1:-1:-1;20773:3:0;;20744:80;;;;20638:193;;;:::o;14599:23::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14599:23:0;:::o;14888:44::-;;;;;;;;;;;;;;;:::o;6470:246::-;6659:49;;;;;:12;;;;;;:49;;6672:4;;6678:2;;6682:6;;6690:8;;6700:1;;6703;;6706;;6659:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6470:246;;;;;;;;:::o;14426:29::-;;;;;;:::o;17593:411::-;8514:5;;;;8500:10;:19;8492:64;;;;;;;;;;;;:::i;:::-;17724:63:::1;17775:11;17724:46;17744:8;17753:4;17744:14;;;;;;;;;::::0;;;::::1;::::0;;;::::1;:25:::0;17724:15:::1;::::0;;17744:25;;::::1;;;17724:19;:46::i;:::-;:50:::0;::::1;:63::i;:::-;17706:15;:81:::0;17826:18:::1;:11:::0;:16:::1;:18::i;:::-;17798:8;17807:4;17798:14;;;;;;;;;;;;;;;:25;;;:46;;;;;;;;;;;;;;;;;;17859:9;17855:46;;;17889:9;17872:8;17881:4;17872:14;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;17855:46;17946:9;:38;;17970:8;17979:4;17970:14;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;::::1;;17946:38;;;17958:9;17946:38;17916:80;;17927:4;17916:80;17933:11;17986:9;17916:80;;;;;;;:::i;:::-;;;;;;;;17593:411:::0;;;;:::o;7118:20::-;;;;;;:::o;22044:688::-;22120:20;;:::i;:::-;22143:15;22154:3;22143:10;:15::i;:::-;22169:21;22193:13;;;:8;:13;;;;;;;;:17;;;;;;;;;;22257:11;;22120:38;;-1:-1:-1;22193:17:0;22257:23;;22273:6;22257:15;:23::i;:::-;22243:37;;22347:21;;22309:84;;15157:4;;22336:33;;:6;;:33;;:10;:33::i;:::-;:55;;;;;22309:15;;;;;22336:55;;22309:19;:84::i;:::-;22291:4;:15;;:102;;;;22431:19;22453:8;22462:3;22453:13;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22481:32:0;;22477:117;;22570:11;;22530:52;;;;;:23;;;;;;:52;;22554:3;;22559:2;;;;22567:1;;22570:11;22530:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22477:117;22606:64;22636:10;22656:4;22663:6;22606:7;22614:3;22606:12;;;;;;;;;;;;;;;;;;;;;:64;;:29;:64::i;:::-;22721:2;22688:36;;22708:3;22696:10;22688:36;;;22713:6;22688:36;;;;;;:::i;14786:66::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;18189:170::-;8514:5;;;;8500:10;:19;8492:64;;;;;;;;;;;;:::i;:::-;18269:14:::1;:32:::0;;;18317:34:::1;::::0;::::1;::::0;::::1;::::0;18286:15;;18317:34:::1;:::i;:::-;;;;;;;;18189:170:::0;:::o;15074:29::-;;;;:::o;14284:::-;;;:::o;16578:621::-;8514:5;;;;8500:10;:19;8492:64;;;;;;;;;;;;:::i;:::-;16685:30:::1;::::0;::::1;;::::0;;;:11:::1;:30;::::0;;;;;::::1;;:39;16677:71;;;;;;;;;;;;:::i;:::-;16777:15;::::0;:31:::1;::::0;16797:10;16777:19:::1;:31::i;:::-;16759:15;:49:::0;16819:7:::1;:22:::0;;::::1;::::0;;::::1;::::0;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;::::1;;::::0;;;16852:8:::1;:24:::0;;;;::::1;::::0;;-1:-1:-1;16852:24:0;;;;;;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;16903:152:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;16889:8:::1;::::0;16819:22:::1;16903:152:::0;::::1;16987:22;:15;:20;:22::i;:::-;16903:152;;;;;;16939:17;:10;:15;:17::i;:::-;16903:152;::::0;;::::1;::::0;;;16889:167;;::::1;::::0;;::::1;::::0;;-1:-1:-1;16889:167:0;;;::::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;;17067:30:::1;::::0;;::::1;::::0;;;:11:::1;:30:::0;;;;;;;:37;;;::::1;::::0;::::1;::::0;;17136:7:::1;:14:::0;17120:71;;::::1;::::0;17067:30;;17136:21:::1;::::0;:18:::1;:21::i;:::-;17120:71;17159:10;17120:71;;;;;;:::i;:::-;;;;;;;;16578:621:::0;;;:::o;14692:27::-;;;;;;;;;;24884:996;24971:20;;:::i;:::-;24994:15;25005:3;24994:10;:15::i;:::-;25020:21;25044:13;;;:8;:13;;;;;;;;25058:10;25044:25;;;;;;;25129:21;;25113:11;;24971:38;;-1:-1:-1;25044:25:0;;15157:4;;25113:38;;:11;:38;;:15;:38::i;:::-;:60;;;;;;25080:94;;25185:21;25209:49;:37;25230:4;:15;;;25209:16;:20;;:37;;;;:::i;:49::-;25185:73;;25309:85;15157:4;25337:33;25348:4;:21;;;25337:33;;:6;:10;;:33;;;;:::i;:::-;:55;;;;;25309:16;;25337:55;;25309:20;:85::i;:::-;25291:15;;;:103;25419:11;;:23;;25435:6;25419:15;:23::i;:::-;25405:37;;25480;:18;:5;:18;25499:2;25503:13;25480:18;:37::i;:::-;25530:19;25552:8;25561:3;25552:13;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25580:32:0;;25576:137;;25689:11;;25629:72;;;;;:23;;;;;;:72;;25653:3;;25658:10;;25670:2;;25674:13;;25689:11;25629:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25576:137;25725:37;25751:2;25755:6;25725:7;25733:3;25725:12;;;;;;;:37;25814:2;25780:37;;25801:3;25789:10;25780:37;;;25806:6;25780:37;;;;;;:::i;:::-;;;;;;;;25853:3;25841:10;25833:39;;;25858:13;25833:39;;;;;;:::i;:::-;;;;;;;;24884:996;;;;;;;;:::o;5569:554::-;5652:23;;5760:5;5749:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5749:24:0;-1:-1:-1;5737:36:0;-1:-1:-1;5806:5:0;5794:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5784:35;;5835:9;5830:286;5850:16;;;5830:286;;;5889:12;5903:19;5934:4;5953:5;;5959:1;5953:8;;;;;;;;;;;;;;;;;;:::i;:::-;5926:36;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5888:74;;;;5985:7;:24;;;;5997:12;5996:13;5985:24;6011:21;6025:6;6011:13;:21::i;:::-;5977:56;;;;;;;;;;;;;;:::i;:::-;;6063:7;6048:9;6058:1;6048:12;;;;;;;;;;;;;:22;;;;;;;;;;;6098:6;6085:7;6093:1;6085:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;5868:3:0;;5830:286;;;;5569:554;;;;;;:::o;7165:27::-;;;;;;:::o;470:137::-;528:9;548:6;;;:28;;-1:-1:-1;;563:5:0;;;575:1;570;563:5;570:1;558:13;;;;;:18;548:28;540:65;;;;;;;;;;;;:::i;:::-;470:137;;;;:::o;10561:218::-;10617:6;10647:5;;;10672:6;;;;;;:16;;;10687:1;10682;:6;;10672:16;10671:38;;;;10698:1;10694;:5;:14;;;;;10707:1;10703;:5;10694:14;10663:87;;;;;;;;;;;;:::i;:::-;10770:1;10561:218;-1:-1:-1;;;10561:218:0:o;342:122::-;425:5;;;420:16;;;;412:50;;;;;;;;;;;;:::i;3661:304::-;3746:12;3760:17;3789:5;3781:19;;3824:10;3836:2;3840:6;3801:46;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3781:67;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3745:103;;;;3867:7;:57;;;;-1:-1:-1;3879:11:0;;:16;;:44;;;3910:4;3899:24;;;;;;;;;;;;:::i;:::-;3859:98;;;;;;;;;;;;:::i;:::-;3661:304;;;;;:::o;11247:138::-;11299:7;11332:1;11327;:6;;11319:30;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11375:1:0;11247:138::o;211:125::-;294:5;;;289:16;;;;281:53;;;;;;;;;;;;:::i;613:161::-;662:9;692:16;;;;684:57;;;;;;;;;;;;:::i;1134:125::-;1217:5;;;1212:16;;;;;;;;;1204:53;;;;;;;;;;;;:::i;780:156::-;828:8;857:15;;;;849:55;;;;;;;;;;;;:::i;11024:215::-;11080:6;11110:5;;;11135:6;;;;;;:16;;;11150:1;11145;:6;;11135:16;11134:38;;;;11161:1;11157;:5;:14;;;;;11170:1;11166;:5;11157:14;11126:84;;;;;;;;;;;;:::i;3973:332::-;4076:12;4090:17;4119:5;4111:19;;4154:10;4166:4;4172:2;4176:6;4131:52;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4111:73;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4075:109;;;;4203:7;:57;;;;-1:-1:-1;4215:11:0;;:16;;:44;;;4246:4;4235:24;;;;;;;;;;;;:::i;:::-;4195:102;;;;;;;;;;;;:::i;:::-;3973:332;;;;;;:::o;4613:496::-;4685:13;4848:2;4827:11;:18;:23;4823:67;;;-1:-1:-1;4852:38:0;;;;;;;;;;;;;;;;;;;4823:67;4994:4;4981:11;4977:22;4962:37;;5038:11;5027:33;;;;;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;158:363::-;;;299:3;292:4;284:6;280:17;276:27;266:2;;-1:-1;;307:12;266:2;-1:-1;337:20;;377:18;366:30;;363:2;;;-1:-1;;399:12;363:2;443:4;435:6;431:17;419:29;;494:3;443:4;;478:6;474:17;435:6;460:32;;457:41;454:2;;;511:1;;501:12;454:2;259:262;;;;;:::o;2862:241::-;;2966:2;2954:9;2945:7;2941:23;2937:32;2934:2;;;-1:-1;;2972:12;2934:2;85:6;72:20;97:33;124:5;97:33;:::i;3110:479::-;;;;3242:2;3230:9;3221:7;3217:23;3213:32;3210:2;;;-1:-1;;3248:12;3210:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3300:63;-1:-1;3400:2;3436:22;;971:20;996:30;971:20;996:30;:::i;:::-;3408:60;-1:-1;3505:2;3541:22;;971:20;996:30;971:20;996:30;:::i;:::-;3513:60;;;;3204:385;;;;;:::o;3596:538::-;;;;3760:2;3748:9;3739:7;3735:23;3731:32;3728:2;;;-1:-1;;3766:12;3728:2;3824:17;3811:31;3862:18;3854:6;3851:30;3848:2;;;-1:-1;;3884:12;3848:2;3922:91;4005:7;3996:6;3985:9;3981:22;3922:91;:::i;:::-;3904:109;;-1:-1;3904:109;-1:-1;;4050:2;4086:22;;971:20;996:30;971:20;996:30;:::i;4141:397::-;;;4280:2;4268:9;4259:7;4255:23;4251:32;4248:2;;;-1:-1;;4286:12;4248:2;4344:17;4331:31;4382:18;4374:6;4371:30;4368:2;;;-1:-1;;4404:12;4368:2;4442:80;4514:7;4505:6;4494:9;4490:22;4442:80;:::i;:::-;4424:98;;;;-1:-1;4242:296;-1:-1;;;;4242:296::o;4545:257::-;;4657:2;4645:9;4636:7;4632:23;4628:32;4625:2;;;-1:-1;;4663:12;4625:2;1119:6;1113:13;1131:30;1155:5;1131:30;:::i;4809:291::-;;4938:2;4926:9;4917:7;4913:23;4909:32;4906:2;;;-1:-1;;4944:12;4906:2;1573:6;1567:13;1585:47;1626:5;1585:47;:::i;5107:1145::-;;;;;;;;;5342:3;5330:9;5321:7;5317:23;5313:33;5310:2;;;-1:-1;;5349:12;5310:2;1404:6;1391:20;1416:47;1457:5;1416:47;:::i;:::-;5401:77;-1:-1;5515:2;5554:22;;72:20;97:33;72:20;97:33;:::i;:::-;5523:63;-1:-1;5623:2;5662:22;;72:20;97:33;72:20;97:33;:::i;:::-;5631:63;-1:-1;5731:2;5770:22;;2518:20;;-1:-1;5839:3;5879:22;;2518:20;;-1:-1;5948:3;5986:22;;2794:20;41797:4;41786:16;;44885:33;;44875:2;;-1:-1;;44922:12;44875:2;5304:948;;;;-1:-1;5304:948;;;;;;5957:61;;-1:-1;;;6055:3;6095:22;;1240:20;;6164:3;6204:22;1240:20;;5304:948::o;6551:362::-;;6676:2;6664:9;6655:7;6651:23;6647:32;6644:2;;;-1:-1;;6682:12;6644:2;6733:17;6727:24;6771:18;;6763:6;6760:30;6757:2;;;-1:-1;;6793:12;6757:2;6880:6;6869:9;6865:22;;;2112:3;2105:4;2097:6;2093:17;2089:27;2079:2;;-1:-1;;2120:12;2079:2;2160:6;2154:13;6771:18;38433:6;38430:30;38427:2;;;-1:-1;;38463:12;38427:2;38096;38090:9;6676:2;38536:9;2105:4;38521:6;38517:17;38513:33;38126:6;38122:17;;38233:6;38221:10;38218:22;6771:18;38185:10;38182:34;38179:62;38176:2;;;-1:-1;;38244:12;38176:2;38096;38263:22;2253:21;;;2353:16;;;6676:2;2353:16;2350:25;-1:-1;2347:2;;;-1:-1;;2378:12;2347:2;2398:39;2430:6;6676:2;2329:5;2325:16;6676:2;2295:6;2291:17;2398:39;:::i;:::-;6813:84;6638:275;-1:-1;;;;;;6638:275::o;6920:241::-;;7024:2;7012:9;7003:7;6999:23;6995:32;6992:2;;;-1:-1;;7030:12;6992:2;-1:-1;2518:20;;6986:175;-1:-1;6986:175::o;7168:263::-;;7283:2;7271:9;7262:7;7258:23;7254:32;7251:2;;;-1:-1;;7289:12;7251:2;-1:-1;2666:13;;7245:186;-1:-1;7245:186::o;7438:366::-;;;7559:2;7547:9;7538:7;7534:23;7530:32;7527:2;;;-1:-1;;7565:12;7527:2;2531:6;2518:20;7617:63;;7717:2;7760:9;7756:22;72:20;97:33;124:5;97:33;:::i;:::-;7725:63;;;;7521:283;;;;;:::o;7811:555::-;;;;7981:2;7969:9;7960:7;7956:23;7952:32;7949:2;;;-1:-1;;7987:12;7949:2;2531:6;2518:20;8039:63;;8139:2;8196:9;8192:22;1391:20;1416:47;1457:5;1416:47;:::i;:::-;8147:77;-1:-1;8261:2;8318:22;;1910:20;1935:51;1910:20;1935:51;:::i;8373:491::-;;;;8511:2;8499:9;8490:7;8486:23;8482:32;8479:2;;;-1:-1;;8517:12;8479:2;2531:6;2518:20;8569:63;;8669:2;8712:9;8708:22;2518:20;8677:63;;8777:2;8820:9;8816:22;72:20;97:33;124:5;97:33;:::i;8871:647::-;;;;;9041:3;9029:9;9020:7;9016:23;9012:33;9009:2;;;-1:-1;;9048:12;9009:2;2531:6;2518:20;9100:63;;9200:2;9243:9;9239:22;2518:20;9208:63;;9308:2;9369:9;9365:22;1910:20;1935:51;1980:5;1935:51;:::i;:::-;9316:81;-1:-1;9434:2;9470:22;;971:20;996:30;971:20;996:30;:::i;:::-;9003:515;;;;-1:-1;9003:515;;-1:-1;;9003:515::o;12489:323::-;;12621:5;39048:12;39863:6;39858:3;39851:19;12704:52;12749:6;39900:4;39895:3;39891:14;39900:4;12730:5;12726:16;12704:52;:::i;:::-;43841:2;43821:14;43837:7;43817:28;12768:39;;;;39900:4;12768:39;;12569:243;-1:-1;;12569:243::o;21349:291::-;;43404:6;43399:3;43394;43381:30;43442:16;;43435:27;;;43442:16;21493:147;-1:-1;21493:147::o;21647:271::-;;12979:5;39048:12;13090:52;13135:6;13130:3;13123:4;13116:5;13112:16;13090:52;:::i;:::-;13154:16;;;;;21781:137;-1:-1;;21781:137::o;21925:222::-;41489:42;41478:54;;;;10113:37;;22052:2;22037:18;;22023:124::o;22154:444::-;41489:42;41478:54;;;10113:37;;41478:54;;;;22501:2;22486:18;;10113:37;22584:2;22569:18;;12099:37;;;;22337:2;22322:18;;22308:290::o;22605:884::-;41489:42;41478:54;;;10113:37;;41478:54;;;;23061:2;23046:18;;10113:37;23144:2;23129:18;;12099:37;;;;23227:2;23212:18;;12099:37;;;;41797:4;41786:16;23306:3;23291:19;;21302:35;23390:3;23375:19;;12099:37;23474:3;23459:19;;12099:37;;;;22896:3;22881:19;;22867:622::o;23496:333::-;41489:42;41478:54;;;;10113:37;;23815:2;23800:18;;12099:37;23651:2;23636:18;;23622:207::o;23836:653::-;24103:2;24117:47;;;39048:12;;24088:18;;;39851:19;;;23836:653;;39900:4;;39891:14;;;;38738;;;23836:653;10580:251;10605:6;10602:1;10599:13;10580:251;;;10666:13;;40765;40758:21;11871:34;;9667:14;;;;39585;;;;10627:1;10620:9;10580:251;;;10584:14;;;24328:9;24322:4;24318:20;39900:4;24302:9;24298:18;24291:48;24353:126;11108:5;39048:12;11127:95;11215:6;11210:3;11127:95;:::i;:::-;11120:102;;;;;39900:4;11279:6;11275:17;11270:3;11266:27;39900:4;11373:5;38738:14;-1:-1;11412:357;11437:6;11434:1;11431:13;11412:357;;;11499:9;11493:4;11489:20;11484:3;11477:33;9815:64;9875:3;11544:6;11538:13;9815:64;:::i;:::-;11748:14;;;;11558:90;-1:-1;39585:14;;;;10627:1;11452:9;11412:357;;;-1:-1;24345:134;;24074:415;-1:-1;;;;;;;;;24074:415::o;24496:210::-;40765:13;;40758:21;11871:34;;24617:2;24602:18;;24588:118::o;25508:310::-;;25655:2;25676:17;25669:47;25730:78;25655:2;25644:9;25640:18;25794:6;25730:78;:::i;25825:416::-;26025:2;26039:47;;;14534:2;26010:18;;;39851:19;14570:23;39891:14;;;14550:44;14613:12;;;25996:245::o;26248:416::-;26448:2;26462:47;;;14864:2;26433:18;;;39851:19;14900:13;39891:14;;;14880:34;14933:12;;;26419:245::o;26671:416::-;26871:2;26885:47;;;15184:2;26856:18;;;39851:19;15220:30;39891:14;;;15200:51;15270:12;;;26842:245::o;27094:416::-;27294:2;27308:47;;;15521:2;27279:18;;;39851:19;15557:34;39891:14;;;15537:55;15626:3;15612:12;;;15605:25;15649:12;;;27265:245::o;27517:416::-;27717:2;27731:47;;;15900:2;27702:18;;;39851:19;15936:23;39891:14;;;15916:44;15979:12;;;27688:245::o;27940:416::-;28140:2;28154:47;;;16230:2;28125:18;;;39851:19;16266:34;39891:14;;;16246:55;16335:11;16321:12;;;16314:33;16366:12;;;28111:245::o;28363:416::-;28563:2;28577:47;;;16617:2;28548:18;;;39851:19;16653:30;39891:14;;;16633:51;16703:12;;;28534:245::o;28786:416::-;28986:2;29000:47;;;16954:2;28971:18;;;39851:19;16990:26;39891:14;;;16970:47;17036:12;;;28957:245::o;29209:416::-;29409:2;29423:47;;;29394:18;;;39851:19;17323:34;39891:14;;;17303:55;17377:12;;;29380:245::o;29632:416::-;29832:2;29846:47;;;29817:18;;;39851:19;17664:34;39891:14;;;17644:55;17718:12;;;29803:245::o;30055:416::-;30255:2;30269:47;;;17969:2;30240:18;;;39851:19;18005:21;39891:14;;;17985:42;18046:12;;;30226:245::o;30478:416::-;30678:2;30692:47;;;18297:2;30663:18;;;39851:19;18333:29;39891:14;;;18313:50;18382:12;;;30649:245::o;30901:416::-;31101:2;31115:47;;;18633:2;31086:18;;;39851:19;18669:31;39891:14;;;18649:52;18720:12;;;31072:245::o;31324:416::-;31524:2;31538:47;;;18971:2;31509:18;;;39851:19;19007:34;39891:14;;;18987:55;19076:6;19062:12;;;19055:28;19102:12;;;31495:245::o;31747:416::-;31947:2;31961:47;;;31932:18;;;39851:19;19389:34;39891:14;;;19369:55;19443:12;;;31918:245::o;32170:416::-;32370:2;32384:47;;;19694:2;32355:18;;;39851:19;19730:26;39891:14;;;19710:47;19776:12;;;32341:245::o;32593:326::-;20088:23;;41369:34;41358:46;20589:37;;20269:4;20258:16;;;20252:23;41695:18;41684:30;;;20327:14;;;21070:36;;;;20427:4;20416:16;;;20410:23;41684:30;20485:14;;;21070:36;;;;32772:2;32757:18;;32743:176::o;32926:436::-;41369:34;41358:46;;;;20589:37;;41695:18;41684:30;;;33267:2;33252:18;;21070:36;41684:30;33348:2;33333:18;;21070:36;33105:2;33090:18;;33076:286::o;33369:222::-;12099:37;;;33496:2;33481:18;;33467:124::o;33598:716::-;12099:37;;;41489:42;41478:54;;;34034:2;34019:18;;9972:58;41478:54;;;;34117:2;34102:18;;10113:37;34208:2;34193:18;;13885:58;;;;34299:3;34284:19;;13885:58;33861:3;33846:19;;33832:482::o;36410:321::-;12099:37;;;40765:13;40758:21;36717:2;36702:18;;11871:34;36559:2;36544:18;;36530:201::o;36738:329::-;12099:37;;;37053:2;37038:18;;12099:37;36891:2;36876:18;;36862:205::o;37074:440::-;41695:18;41684:30;;;;21070:36;;37417:2;37402:18;;12099:37;;;;41369:34;41358:46;37500:2;37485:18;;20829:50;37255:2;37240:18;;37226:288::o;37521:506::-;;;37656:11;37643:25;37707:48;37731:8;37715:14;37711:29;37707:48;37687:18;37683:73;37673:2;;-1:-1;;37760:12;37673:2;37787:33;;37841:18;;;-1:-1;37879:18;37868:30;;37865:2;;;-1:-1;;37901:12;37865:2;37746:4;37929:13;;-1:-1;37715:14;37961:38;;;37951:49;;37948:2;;;38013:1;;38003:12;43477:268;43542:1;43549:101;43563:6;43560:1;43557:13;43549:101;;;43630:11;;;43624:18;43611:11;;;43604:39;43585:2;43578:10;43549:101;;;43665:6;43662:1;43659:13;43656:2;;;-1:-1;;43542:1;43712:16;;43705:27;43526:219::o;43858:117::-;41489:42;43945:5;41478:54;43920:5;43917:35;43907:2;;43966:1;;43956:12;43907:2;43901:74;:::o;43982:111::-;44063:5;40765:13;40758:21;44041:5;44038:32;44028:2;;44084:1;;44074:12
Swarm Source
ipfs://8a14da58cb08cd849a28844ebd777fb9e053479d71202a84420b1323e84ac523
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.