Polygon Sponsored slots available. Book your slot here!
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
OVERVIEW
The MiniApeV2 contract represents the main yield farm contract which is in charge of distributing BANANA to yield farmers staking on the Polygon ApeSwap protocol.
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:
MiniApeV2
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2021-06-16 */ // Sources flattened with hardhat v2.3.0 https://hardhat.org // File @boringcrypto/boring-solidity/contracts/libraries/[email protected] // 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 onBananaReward(uint256 pid, address user, address recipient, uint256 bananaAmount, uint256 newLpAmount) external; function pendingTokens(uint256 pid, address user, uint256 bananaAmount) external view returns (IERC20[] memory, uint256[] memory); } // File contracts/interfaces/IMasterApeV2.sol pragma solidity 0.6.12; interface IMasterApeV2 { 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. BANANA to distribute per block. uint256 lastRewardBlock; // Last block number that BANANA distribution occurs. uint256 accBananaPerShare; // Accumulated BANANA per share, times 1e12. See below. } function poolInfo(uint256 pid) external view returns (IMasterApeV2.PoolInfo memory); function totalAllocPoint() external view returns (uint256); function deposit(uint256 _pid, uint256 _amount) external; } // File contracts/MiniApeV2.sol pragma solidity 0.6.12; /// @notice The (older) MasterApe contract gives out a constant number of BANANA tokens per block. /// It is the only address with minting rights for BANANA. /// The idea for this MasterApe V2 (MCV2) contract is therefore to be the owner of a dummy token /// that is deposited into the MasterApe V1 (MCV1) contract. /// The allocation point for this pool on MCV1 is the total allocation point for all pools that receive double incentives. contract MiniApeV2 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 BANANA 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 BANANA to distribute per block. struct PoolInfo { uint128 accBananaPerShare; uint64 lastRewardTime; uint64 allocPoint; } /// @notice Address of BANANA contract. IERC20 public immutable BANANA; /// @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 Total allocation points. Must be the sum of all allocation points in all pools. uint256 public totalAllocPoint; uint256 public bananaPerSecond; uint256 private constant ACC_BANANA_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 accBananaPerShare); event LogBananaPerSecond(uint256 bananaPerSecond); /// @param _banana The BANANA token contract address. constructor(IERC20 _banana) public { BANANA = _banana; } /// @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 { totalAllocPoint = totalAllocPoint.add(allocPoint); lpToken.push(_lpToken); rewarder.push(_rewarder); poolInfo.push(PoolInfo({ allocPoint: allocPoint.to64(), lastRewardTime: block.timestamp.to64(), accBananaPerShare: 0 })); emit LogPoolAddition(lpToken.length.sub(1), allocPoint, _lpToken, _rewarder); } /// @notice Update the given pool's BANANA 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 banana per second to be distributed. Can only be called by the owner. /// @param _bananaPerSecond The amount of Banana to be distributed per second. function setBananaPerSecond(uint256 _bananaPerSecond) public onlyOwner { bananaPerSecond = _bananaPerSecond; emit LogBananaPerSecond(_bananaPerSecond); } /// @notice View function to see pending BANANA on frontend. /// @param _pid The index of the pool. See `poolInfo`. /// @param _user Address of user. /// @return pending BANANA reward for a given user. function pendingBanana(uint256 _pid, address _user) external view returns (uint256 pending) { PoolInfo memory pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][_user]; uint256 accBananaPerShare = pool.accBananaPerShare; uint256 lpSupply = lpToken[_pid].balanceOf(address(this)); if (block.timestamp > pool.lastRewardTime && lpSupply != 0) { uint256 time = block.timestamp.sub(pool.lastRewardTime); uint256 bananaReward = time.mul(bananaPerSecond).mul(pool.allocPoint) / totalAllocPoint; accBananaPerShare = accBananaPerShare.add(bananaReward.mul(ACC_BANANA_PRECISION) / lpSupply); } pending = int256(user.amount.mul(accBananaPerShare) / ACC_BANANA_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 bananaReward = time.mul(bananaPerSecond).mul(pool.allocPoint) / totalAllocPoint; pool.accBananaPerShare = pool.accBananaPerShare.add((bananaReward.mul(ACC_BANANA_PRECISION) / lpSupply).to128()); } pool.lastRewardTime = block.timestamp.to64(); poolInfo[pid] = pool; emit LogUpdatePool(pid, pool.lastRewardTime, lpSupply, pool.accBananaPerShare); } } /// @notice Deposit LP tokens to MCV2 for BANANA 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.accBananaPerShare) / ACC_BANANA_PRECISION)); // Interactions IRewarder _rewarder = rewarder[pid]; if (address(_rewarder) != address(0)) { _rewarder.onBananaReward(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.accBananaPerShare) / ACC_BANANA_PRECISION)); user.amount = user.amount.sub(amount); // Interactions IRewarder _rewarder = rewarder[pid]; if (address(_rewarder) != address(0)) { _rewarder.onBananaReward(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 BANANA rewards. function harvest(uint256 pid, address to) public { PoolInfo memory pool = updatePool(pid); UserInfo storage user = userInfo[pid][msg.sender]; int256 accumulatedBanana = int256(user.amount.mul(pool.accBananaPerShare) / ACC_BANANA_PRECISION); uint256 _pendingBanana = accumulatedBanana.sub(user.rewardDebt).toUInt256(); // Effects user.rewardDebt = accumulatedBanana; // Interactions if (_pendingBanana != 0) { BANANA.safeTransfer(to, _pendingBanana); } IRewarder _rewarder = rewarder[pid]; if (address(_rewarder) != address(0)) { _rewarder.onBananaReward( pid, msg.sender, to, _pendingBanana, user.amount); } emit Harvest(msg.sender, pid, _pendingBanana); } /// @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 BANANA rewards. function withdrawAndHarvest(uint256 pid, uint256 amount, address to) public { PoolInfo memory pool = updatePool(pid); UserInfo storage user = userInfo[pid][msg.sender]; int256 accumulatedBanana = int256(user.amount.mul(pool.accBananaPerShare) / ACC_BANANA_PRECISION); uint256 _pendingBanana = accumulatedBanana.sub(user.rewardDebt).toUInt256(); // Effects user.rewardDebt = accumulatedBanana.sub(int256(amount.mul(pool.accBananaPerShare) / ACC_BANANA_PRECISION)); user.amount = user.amount.sub(amount); // Interactions BANANA.safeTransfer(to, _pendingBanana); IRewarder _rewarder = rewarder[pid]; if (address(_rewarder) != address(0)) { _rewarder.onBananaReward(pid, msg.sender, to, _pendingBanana, user.amount); } lpToken[pid].safeTransfer(to, amount); emit Withdraw(msg.sender, pid, amount, to); emit Harvest(msg.sender, pid, _pendingBanana); } /// @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.onBananaReward(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
[{"inputs":[{"internalType":"contract IERC20","name":"_banana","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":false,"internalType":"uint256","name":"bananaPerSecond","type":"uint256"}],"name":"LogBananaPerSecond","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":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":"accBananaPerShare","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":"BANANA","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":[],"name":"bananaPerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"pendingBanana","outputs":[{"internalType":"uint256","name":"pending","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"accBananaPerShare","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":"uint256","name":"_bananaPerSecond","type":"uint256"}],"name":"setBananaPerSecond","outputs":[],"stateMutability":"nonpayable","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":"accBananaPerShare","type":"uint128"},{"internalType":"uint64","name":"lastRewardTime","type":"uint64"},{"internalType":"uint64","name":"allocPoint","type":"uint64"}],"internalType":"struct MiniApeV2.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
60a06040523480156200001157600080fd5b50604051620027cb380380620027cb833981016040819052620000349162000089565b600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360601b6001600160601b031916608052620000b9565b6000602082840312156200009b578081fd5b81516001600160a01b0381168114620000b2578182fd5b9392505050565b60805160601c6126ea620000e1600039806107ef528061150e52806115fe52506126ea6000f3fe6080604052600436106101665760003560e01c8063889b8307116100d1578063ab7de0981161008a578063d1abb90711610064578063d1abb90714610418578063d2423b5114610438578063d4f8123d14610459578063e30c39781461047957610166565b8063ab7de098146103c3578063c346253d146103e3578063c8b35c7a1461040357610166565b8063889b83071461030b57806388bba42f146103205780638da5cb5b146103405780638dbdbe6d1461035557806393f1a40b14610375578063aa8f6ca1146103a357610166565b80632f940c70116101235780632f940c701461023c5780634e71e0c81461025c57806351eb05a61461027157806357a5b58c1461029e57806378ed5d1f146102be5780637c516e94146102eb57610166565b8063078dfbe71461016b578063081e3eda1461018d5780630ad58d2f146101b85780631526fe27146101d857806317caf6f11461020757806318fccc761461021c575b600080fd5b34801561017757600080fd5b5061018b610186366004611dd0565b61048e565b005b34801561019957600080fd5b506101a261057d565b6040516101af919061259e565b60405180910390f35b3480156101c457600080fd5b5061018b6101d3366004612074565b610583565b3480156101e457600080fd5b506101f86101f3366004611fdf565b610713565b6040516101af93929190612574565b34801561021357600080fd5b506101a2610755565b34801561022857600080fd5b5061018b61023736600461200f565b61075b565b34801561024857600080fd5b5061018b61025736600461200f565b6108f5565b34801561026857600080fd5b5061018b610a16565b34801561027d57600080fd5b5061029161028c366004611fdf565b610aa3565b6040516101af919061253b565b3480156102aa57600080fd5b5061018b6102b9366004611e63565b610d2d565b3480156102ca57600080fd5b506102de6102d9366004611fdf565b610d63565b6040516101af9190612142565b3480156102f757600080fd5b5061018b610306366004611ebe565b610d8a565b34801561031757600080fd5b506101a2610dfe565b34801561032c57600080fd5b5061018b61033b3660046120a1565b610e04565b34801561034c57600080fd5b506102de610f71565b34801561036157600080fd5b5061018b610370366004612074565b610f80565b34801561038157600080fd5b5061039561039036600461200f565b61110b565b6040516101af9291906125e6565b3480156103af57600080fd5b506101a26103be36600461200f565b61112f565b3480156103cf57600080fd5b5061018b6103de36600461203e565b611329565b3480156103ef57600080fd5b506102de6103fe366004611fdf565b6114ff565b34801561040f57600080fd5b506102de61150c565b34801561042457600080fd5b5061018b610433366004612074565b611530565b61044b610446366004611e1a565b611763565b6040516101af9291906121d4565b34801561046557600080fd5b5061018b610474366004611fdf565b6118f3565b34801561048557600080fd5b506102de61195d565b6000546001600160a01b031633146104c15760405162461bcd60e51b81526004016104b8906123ea565b60405180910390fd5b811561055c576001600160a01b0383161515806104db5750805b6104f75760405162461bcd60e51b81526004016104b89061234d565b600080546040516001600160a01b03808716939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0385166001600160a01b031991821617909155600180549091169055610578565b600180546001600160a01b0319166001600160a01b0385161790555b505050565b60025490565b61058b611d68565b61059484610aa3565b600085815260056020908152604080832033845290915290208151919250906105e69064e8d4a51000906105d29087906001600160801b031661196c565b816105d957fe5b60018401549190046119a9565b600182015580546105f790856119f6565b815560048054600091908790811061060b57fe5b6000918252602090912001546001600160a01b031690508015610691578154604051632e0d1cd160e01b81526001600160a01b03831691632e0d1cd19161065e918a9133918a91600091906004016125a7565b600060405180830381600087803b15801561067857600080fd5b505af115801561068c573d6000803e3d6000fd5b505050505b6106bf8486600389815481106106a357fe5b6000918252602090912001546001600160a01b03169190611a19565b836001600160a01b031686336001600160a01b03167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec213288604051610703919061259e565b60405180910390a4505050505050565b6002818154811061072057fe5b6000918252602090912001546001600160801b03811691506001600160401b03600160801b8204811691600160c01b90041683565b60065481565b610763611d68565b61076c83610aa3565b6000848152600560209081526040808320338452909152812082518154939450909264e8d4a51000916107a891906001600160801b031661196c565b816107af57fe5b04905060006107d36107ce8460010154846119a990919063ffffffff16565b611b07565b6001840183905590508015610816576108166001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168683611a19565b60006004878154811061082557fe5b6000918252602090912001546001600160a01b0316905080156108aa578354604051632e0d1cd160e01b81526001600160a01b03831691632e0d1cd191610877918b9133918c918991906004016125a7565b600060405180830381600087803b15801561089157600080fd5b505af11580156108a5573d6000803e3d6000fd5b505050505b86336001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae0660924954846040516108e4919061259e565b60405180910390a350505050505050565b6000828152600560209081526040808320338452909152812080548282556001820183905560048054929391928690811061092c57fe5b6000918252602090912001546001600160a01b0316905080156109b157604051632e0d1cd160e01b81526001600160a01b03821690632e0d1cd19061097e9088903390899060009081906004016125a7565b600060405180830381600087803b15801561099857600080fd5b505af11580156109ac573d6000803e3d6000fd5b505050505b6109c38483600388815481106106a357fe5b836001600160a01b031685336001600160a01b03167f2cac5e20e1541d836381527a43f651851e302817b71dc8e810284e69210c1c6b85604051610a07919061259e565b60405180910390a45050505050565b6001546001600160a01b0316338114610a415760405162461bcd60e51b81526004016104b89061241f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b610aab611d68565b60028281548110610ab857fe5b60009182526020918290206040805160608101825292909101546001600160801b03811683526001600160401b03600160801b82048116948401859052600160c01b90910416908201529150421115610d2857600060038381548110610b1a57fe5b6000918252602090912001546040516370a0823160e01b81526001600160a01b03909116906370a0823190610b53903090600401612142565b60206040518083038186803b158015610b6b57600080fd5b505afa158015610b7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba39190611ff7565b90508015610c4c576000610bcd83602001516001600160401b0316426119f690919063ffffffff16565b90506000600654610c0085604001516001600160401b0316610bfa6007548661196c90919063ffffffff16565b9061196c565b81610c0757fe5b049050610c3e610c2d84610c208464e8d4a5100061196c565b81610c2757fe5b04611b2d565b85516001600160801b031690611b56565b6001600160801b0316845250505b610c5542611b85565b6001600160401b031660208301526002805483919085908110610c7457fe5b6000918252602091829020835191018054848401516040958601516001600160801b03199092166001600160801b039094169390931767ffffffffffffffff60801b1916600160801b6001600160401b0394851602176001600160c01b0316600160c01b93909116929092029190911790558301518351915185927f0fc9545022a542541ad085d091fb09a2ab36fee366a4576ab63714ea907ad35392610d1e92909186916125f4565b60405180910390a2505b919050565b8060005b81811015610d5d57610d54848483818110610d4857fe5b90506020020135610aa3565b50600101610d31565b50505050565b60038181548110610d7057fe5b6000918252602090912001546001600160a01b0316905081565b60405163d505accf60e01b81526001600160a01b0389169063d505accf90610dc2908a908a908a908a908a908a908a9060040161217a565b600060405180830381600087803b158015610ddc57600080fd5b505af1158015610df0573d6000803e3d6000fd5b505050505050505050505050565b60075481565b6000546001600160a01b03163314610e2e5760405162461bcd60e51b81526004016104b8906123ea565b610e6d83610e6760028781548110610e4257fe5b60009182526020909120015460065490600160c01b90046001600160401b03166119f6565b90611bae565b600655610e7983611b85565b60028581548110610e8657fe5b9060005260206000200160000160186101000a8154816001600160401b0302191690836001600160401b031602179055508015610efa578160048581548110610ecb57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b80610f265760048481548110610f0c57fe5b6000918252602090912001546001600160a01b0316610f28565b815b6001600160a01b0316847f95895a6ab1df54420d241b55243258a33e61b2194db66c1179ec521aae8e18658584604051610f639291906125d6565b60405180910390a350505050565b6000546001600160a01b031681565b610f88611d68565b610f9184610aa3565b60008581526005602090815260408083206001600160a01b03871684529091529020805491925090610fc39085611bae565b81558151610ffa9064e8d4a5100090610fe69087906001600160801b031661196c565b81610fed57fe5b6001840154919004611bd1565b816001018190555060006004868154811061101157fe5b6000918252602090912001546001600160a01b031690508015611097578154604051632e0d1cd160e01b81526001600160a01b03831691632e0d1cd191611064918a9189918291600091906004016125a7565b600060405180830381600087803b15801561107e57600080fd5b505af1158015611092573d6000803e3d6000fd5b505050505b6110c733308760038a815481106110aa57fe5b6000918252602090912001546001600160a01b0316929190611c17565b836001600160a01b031686336001600160a01b03167f02d7e648dd130fc184d383e55bb126ac4c9c60e8f94bf05acdf557ba2d540b4788604051610703919061259e565b60056020908152600092835260408084209091529082529020805460019091015482565b6000611139611d68565b6002848154811061114657fe5b600091825260208083206040805160608101825291909301546001600160801b0380821683526001600160401b03600160801b8304811684860152600160c01b90920490911682850152888552600583528385206001600160a01b03891686529092529183208251600380549496509194921692889081106111c457fe5b6000918252602090912001546040516370a0823160e01b81526001600160a01b03909116906370a08231906111fd903090600401612142565b60206040518083038186803b15801561121557600080fd5b505afa158015611229573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124d9190611ff7565b905083602001516001600160401b03164211801561126a57508015155b156112f057600061129185602001516001600160401b0316426119f690919063ffffffff16565b905060006006546112be87604001516001600160401b0316610bfa6007548661196c90919063ffffffff16565b816112c557fe5b0490506112eb836112db8364e8d4a5100061196c565b816112e257fe5b86919004611bae565b935050505b6001830154835461131e916107ce9164e8d4a5100090611310908761196c565b8161131757fe5b04906119a9565b979650505050505050565b6000546001600160a01b031633146113535760405162461bcd60e51b81526004016104b8906123ea565b6006546113609084611bae565b6006556003805460018181019092557fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b038086166001600160a01b03199283161790925560048054938401815560009081527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90930180549285169290911691909117905560408051606081019091529081526002906020810161140d42611b85565b6001600160401b0316815260200161142486611b85565b6001600160401b039081169091528254600181810185556000948552602094859020845192018054958501516040909501518416600160c01b026001600160c01b0395909416600160801b0267ffffffffffffffff60801b196001600160801b039094166001600160801b0319909716969096179290921694909417929092161790556003546001600160a01b0380841692908516916114c3916119f6565b7f81ee0f8c5c46e2cb41984886f77a84181724abb86c32a5f6de539b07509d45e5866040516114f2919061259e565b60405180910390a4505050565b60048181548110610d7057fe5b7f000000000000000000000000000000000000000000000000000000000000000081565b611538611d68565b61154184610aa3565b6000858152600560209081526040808320338452909152812082518154939450909264e8d4a510009161157d91906001600160801b031661196c565b8161158457fe5b04905060006115a36107ce8460010154846119a990919063ffffffff16565b90506115de64e8d4a510006115ce86600001516001600160801b03168961196c90919063ffffffff16565b816115d557fe5b849190046119a9565b600184015582546115ef90876119f6565b83556116256001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168683611a19565b60006004888154811061163457fe5b6000918252602090912001546001600160a01b0316905080156116b9578354604051632e0d1cd160e01b81526001600160a01b03831691632e0d1cd191611686918c9133918c918991906004016125a7565b600060405180830381600087803b1580156116a057600080fd5b505af11580156116b4573d6000803e3d6000fd5b505050505b6116cb868860038b815481106106a357fe5b856001600160a01b031688336001600160a01b03167f8166bf25f8a2b7ed3c85049207da4358d16edbed977d23fa2ee6f0dde3ec21328a60405161170f919061259e565b60405180910390a487336001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae066092495484604051611751919061259e565b60405180910390a35050505050505050565b606080836001600160401b038111801561177c57600080fd5b506040519080825280602002602001820160405280156117a6578160200160208202803683370190505b509150836001600160401b03811180156117bf57600080fd5b506040519080825280602002602001820160405280156117f357816020015b60608152602001906001900390816117de5790505b50905060005b848110156118ea57600060603088888581811061181257fe5b9050602002810190611824919061261e565b604051611832929190612116565b600060405180830381855af49150503d806000811461186d576040519150601f19603f3d011682016040523d82523d6000602084013e611872565b606091505b50915091508180611881575085155b61188a82611d08565b906118a85760405162461bcd60e51b81526004016104b8919061226e565b50818584815181106118b657fe5b602002602001019015159081151581525050808484815181106118d557fe5b602090810291909101015250506001016117f9565b50935093915050565b6000546001600160a01b0316331461191d5760405162461bcd60e51b81526004016104b8906123ea565b60078190556040517f0b806a9fc22813933aa676fe7f2bbeb9297edfd7cfc6fdbbb4405e2b8afaaf0f9061195290839061259e565b60405180910390a150565b6001546001600160a01b031681565b60008115806119875750508082028282828161198457fe5b04145b6119a35760405162461bcd60e51b81526004016104b890612504565b92915050565b60008183038183128015906119be5750838113155b806119d357506000831280156119d357508381135b6119ef5760405162461bcd60e51b81526004016104b89061248b565b9392505050565b808203828111156119a35760405162461bcd60e51b81526004016104b890612281565b60006060846001600160a01b031663a9059cbb8585604051602401611a3f9291906121bb565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051611a789190612126565b6000604051808303816000865af19150503d8060008114611ab5576040519150601f19603f3d011682016040523d82523d6000602084013e611aba565b606091505b5091509150818015611ae4575080511580611ae4575080806020019051810190611ae49190611ea2565b611b005760405162461bcd60e51b81526004016104b8906122d5565b5050505050565b600080821215611b295760405162461bcd60e51b81526004016104b8906122b0565b5090565b60006001600160801b03821115611b295760405162461bcd60e51b81526004016104b89061237c565b8181016001600160801b0380831690821610156119a35760405162461bcd60e51b81526004016104b8906123b3565b60006001600160401b03821115611b295760405162461bcd60e51b81526004016104b890612454565b818101818110156119a35760405162461bcd60e51b81526004016104b8906123b3565b6000828201818312801590611be65750838112155b80611bfb5750600083128015611bfb57508381125b6119ef5760405162461bcd60e51b81526004016104b89061230c565b60006060856001600160a01b03166323b872dd868686604051602401611c3f93929190612156565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051611c789190612126565b6000604051808303816000865af19150503d8060008114611cb5576040519150601f19603f3d011682016040523d82523d6000602084013e611cba565b606091505b5091509150818015611ce4575080511580611ce4575080806020019051810190611ce49190611ea2565b611d005760405162461bcd60e51b81526004016104b8906124cf565b505050505050565b6060604482511015611d4e575060408051808201909152601d81527f5472616e73616374696f6e2072657665727465642073696c656e746c790000006020820152610d28565b600482019150818060200190518101906119a39190611f45565b604080516060810182526000808252602082018190529181019190915290565b60008083601f840112611d99578182fd5b5081356001600160401b03811115611daf578182fd5b6020830191508360208083028501011115611dc957600080fd5b9250929050565b600080600060608486031215611de4578283fd5b8335611def8161268e565b92506020840135611dff816126a6565b91506040840135611e0f816126a6565b809150509250925092565b600080600060408486031215611e2e578283fd5b83356001600160401b03811115611e43578384fd5b611e4f86828701611d88565b9094509250506020840135611e0f816126a6565b60008060208385031215611e75578182fd5b82356001600160401b03811115611e8a578283fd5b611e9685828601611d88565b90969095509350505050565b600060208284031215611eb3578081fd5b81516119ef816126a6565b600080600080600080600080610100898b031215611eda578384fd5b8835611ee58161268e565b97506020890135611ef58161268e565b96506040890135611f058161268e565b9550606089013594506080890135935060a089013560ff81168114611f28578384fd5b979a969950949793969295929450505060c08201359160e0013590565b600060208284031215611f56578081fd5b81516001600160401b0380821115611f6c578283fd5b818401915084601f830112611f7f578283fd5b815181811115611f8d578384fd5b604051601f8201601f191681016020018381118282101715611fad578586fd5b604052818152838201602001871015611fc4578485fd5b611fd5826020830160208701612662565b9695505050505050565b600060208284031215611ff0578081fd5b5035919050565b600060208284031215612008578081fd5b5051919050565b60008060408385031215612021578182fd5b8235915060208301356120338161268e565b809150509250929050565b600080600060608486031215612052578283fd5b8335925060208401356120648161268e565b91506040840135611e0f8161268e565b600080600060608486031215612088578283fd5b83359250602084013591506040840135611e0f8161268e565b600080600080608085870312156120b6578182fd5b843593506020850135925060408501356120cf8161268e565b915060608501356120df816126a6565b939692955090935050565b60008151808452612102816020860160208601612662565b601f01601f19169290920160200192915050565b6000828483379101908152919050565b60008251612138818460208701612662565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b604080825283519082018190526000906020906060840190828701845b8281101561220f5781511515845292840192908401906001016121f1565b50505083810382850152808551612226818461259e565b91508192508381028201848801865b8381101561225f57858303855261224d8383516120ea565b94870194925090860190600101612235565b50909998505050505050505050565b6000602082526119ef60208301846120ea565b602080825260159082015274426f72696e674d6174683a20556e646572666c6f7760581b604082015260600190565b6020808252600b908201526a0496e7465676572203c20360ac1b604082015260600190565b6020808252601c908201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604082015260600190565b60208082526021908201527f5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601590820152744f776e61626c653a207a65726f206164647265737360581b604082015260600190565b6020808252601c908201527f426f72696e674d6174683a2075696e74313238204f766572666c6f7700000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604082015260600190565b6020808252601b908201527f426f72696e674d6174683a2075696e743634204f766572666c6f770000000000604082015260600190565b60208082526024908201527f5369676e6564536166654d6174683a207375627472616374696f6e206f766572604082015263666c6f7760e01b606082015260800190565b6020808252818101527f426f72696e6745524332303a205472616e7366657246726f6d206661696c6564604082015260600190565b60208082526018908201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604082015260600190565b81516001600160801b031681526020808301516001600160401b0390811691830191909152604092830151169181019190915260600190565b6001600160801b039390931683526001600160401b03918216602084015216604082015260600190565b90815260200190565b9485526001600160a01b0393841660208601529190921660408401526060830191909152608082015260a00190565b9182521515602082015260400190565b918252602082015260400190565b6001600160401b0393909316835260208301919091526001600160801b0316604082015260600190565b6000808335601e19843603018112612634578283fd5b8301803591506001600160401b0382111561264d578283fd5b602001915036819003821315611dc957600080fd5b60005b8381101561267d578181015183820152602001612665565b83811115610d5d5750506000910152565b6001600160a01b03811681146126a357600080fd5b50565b80151581146126a357600080fdfea26469706673582212205e81058284d6ea4292b34864e1f71e62b003acf7b73b187efa25aeb498b6678464736f6c634300060c00330000000000000000000000005d47baba0d66083c52009271faf3f50dcc01023c
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000005d47baba0d66083c52009271faf3f50dcc01023c
-----Decoded View---------------
Arg [0] : _banana (address): 0x5d47baba0d66083c52009271faf3f50dcc01023c
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000005d47baba0d66083c52009271faf3f50dcc01023c
Deployed ByteCode Sourcemap
13400:11858:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7689:472;;;;;;;;;;-1:-1:-1;7689:472:0;;;;;:::i;:::-;;:::i;:::-;;15857:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21500:690;;;;;;;;;;-1:-1:-1;21500:690:0;;;;;:::i;:::-;;:::i;14295:26::-;;;;;;;;;;-1:-1:-1;14295:26:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;14743:30::-;;;;;;;;;;;;;:::i;22370:820::-;;;;;;;;;;-1:-1:-1;22370:820:0;;;;;:::i;:::-;;:::i;24679:576::-;;;;;;;;;;-1:-1:-1;24679:576:0;;;;;:::i;:::-;;:::i;8210:348::-;;;;;;;;;;;;;:::i;19560:792::-;;;;;;;;;;-1:-1:-1;19560:792:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;19183:193::-;;;;;;;;;;-1:-1:-1;19183:193:0;;;;;:::i;:::-;;:::i;14389:23::-;;;;;;;;;;-1:-1:-1;14389:23:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6617:246::-;;;;;;;;;;-1:-1:-1;6617:246:0;;;;;:::i;:::-;;:::i;14782:30::-;;;;;;;;;;;;;:::i;17183:411::-;;;;;;;;;;-1:-1:-1;17183:411:0;;;;;:::i;:::-;;:::i;7265:20::-;;;;;;;;;;;;;:::i;20597:691::-;;;;;;;;;;-1:-1:-1;20597:691:0;;;;;:::i;:::-;;:::i;14576:66::-;;;;;;;;;;-1:-1:-1;14576:66:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;18188:813::-;;;;;;;;;;-1:-1:-1;18188:813:0;;;;;:::i;:::-;;:::i;16296:492::-;;;;;;;;;;-1:-1:-1;16296:492:0;;;;;:::i;:::-;;:::i;14482:27::-;;;;;;;;;;-1:-1:-1;14482:27:0;;;;;:::i;:::-;;:::i;14215:30::-;;;;;;;;;;;;;:::i;23477:1017::-;;;;;;;;;;-1:-1:-1;23477:1017:0;;;;;:::i;:::-;;:::i;5716:554::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;17782:176::-;;;;;;;;;;-1:-1:-1;17782:176:0;;;;;:::i;:::-;;:::i;7312:27::-;;;;;;;;;;;;;:::i;7689:472::-;8661:5;;-1:-1:-1;;;;;8661:5:0;8647:10;:19;8639:64;;;;-1:-1:-1;;;8639:64:0;;;;;;;:::i;:::-;;;;;;;;;7794:6:::1;7790:364;;;-1:-1:-1::0;;;;;7848:22:0;::::1;::::0;::::1;::::0;:34:::1;;;7874:8;7848:34;7840:68;;;;-1:-1:-1::0;;;7840:68:0::1;;;;;;;:::i;:::-;7975:5;::::0;;7954:37:::1;::::0;-1:-1:-1;;;;;7954:37:0;;::::1;::::0;7975:5;::::1;::::0;7954:37:::1;::::0;::::1;8006:5;:16:::0;;-1:-1:-1;;;;;8006:16:0;::::1;-1:-1:-1::0;;;;;;8006:16:0;;::::1;;::::0;;;;8037:25;;;;::::1;::::0;;7790:364:::1;;;8119:12;:23:::0;;-1:-1:-1;;;;;;8119:23:0::1;-1:-1:-1::0;;;;;8119:23:0;::::1;;::::0;;7790:364:::1;7689:472:::0;;;:::o;15857:100::-;15934:8;:15;;15857:100::o;21500:690::-;21577:20;;:::i;:::-;21600:15;21611:3;21600:10;:15::i;:::-;21626:21;21650:13;;;:8;:13;;;;;;;;21664:10;21650:25;;;;;;;21764:22;;21577:38;;-1:-1:-1;21650:25:0;21726:86;;14867:4;;21753:34;;:6;;-1:-1:-1;;;;;21753:34:0;:10;:34::i;:::-;:57;;;;;21726:15;;;;;21753:57;;21726:19;:86::i;:::-;21708:15;;;:104;21837:11;;:23;;21853:6;21837:15;:23::i;:::-;21823:37;;21920:8;:13;;21823:11;;21920:8;21929:3;;21920:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21920:13:0;;-1:-1:-1;21948:32:0;;21944:126;;22046:11;;21997:61;;-1:-1:-1;;;21997:61:0;;-1:-1:-1;;;;;21997:24:0;;;;;:61;;22022:3;;22027:10;;22039:2;;22043:1;;22046:11;21997:61;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21944:126;22090:37;22116:2;22120:6;22090:7;22098:3;22090:12;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22090:12:0;;:37;:25;:37::i;:::-;22179:2;-1:-1:-1;;;;;22145:37:0;22166:3;22154:10;-1:-1:-1;;;;;22145:37:0;;22171:6;22145:37;;;;;;:::i;:::-;;;;;;;;21500:690;;;;;;:::o;14295:26::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14295:26:0;;;-1:-1:-1;;;;;;;;;14295:26:0;;;;;-1:-1:-1;;;14295:26:0;;;;:::o;14743:30::-;;;;:::o;22370:820::-;22430:20;;:::i;:::-;22453:15;22464:3;22453:10;:15::i;:::-;22479:21;22503:13;;;:8;:13;;;;;;;;22517:10;22503:25;;;;;;;22589:22;;22573:11;;22430:38;;-1:-1:-1;22503:25:0;;14867:4;;22573:39;;:11;-1:-1:-1;;;;;22573:39:0;:15;:39::i;:::-;:62;;;;;;22539:97;;22647:22;22672:50;:38;22694:4;:15;;;22672:17;:21;;:38;;;;:::i;:::-;:48;:50::i;:::-;22755:15;;;:35;;;22647:75;-1:-1:-1;22832:19:0;;22828:91;;22868:39;-1:-1:-1;;;;;22868:6:0;:19;22888:2;22892:14;22868:19;:39::i;:::-;22939:19;22961:8;22970:3;22961:13;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22961:13:0;;-1:-1:-1;22989:32:0;;22985:140;;23101:11;;23038:75;;-1:-1:-1;;;23038:75:0;;-1:-1:-1;;;;;23038:24:0;;;;;:75;;23064:3;;23069:10;;23081:2;;23085:14;;23101:11;23038:75;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22985:140;23162:3;23150:10;-1:-1:-1;;;;;23142:40:0;;23167:14;23142:40;;;;;;:::i;:::-;;;;;;;;22370:820;;;;;;;:::o;24679:576::-;24749:21;24773:13;;;:8;:13;;;;;;;;24787:10;24773:25;;;;;;;24826:11;;24848:15;;;-1:-1:-1;24874:15:0;;:19;;;24928:8;:13;;24773:25;;24826:11;;24782:3;;24928:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24928:13:0;;-1:-1:-1;24956:32:0;;24952:116;;25005:51;;-1:-1:-1;;;25005:51:0;;-1:-1:-1;;;;;25005:24:0;;;;;:51;;25030:3;;25035:10;;25047:2;;25051:1;;;;25005:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24952:116;25148:37;25174:2;25178:6;25148:7;25156:3;25148:12;;;;;;;:37;25244:2;-1:-1:-1;;;;;25201:46:0;25231:3;25219:10;-1:-1:-1;;;;;25201:46:0;;25236:6;25201:46;;;;;;:::i;:::-;;;;;;;;24679:576;;;;;:::o;8210:348::-;8278:12;;-1:-1:-1;;;;;8278:12:0;8338:10;:27;;8330:72;;;;-1:-1:-1;;;8330:72:0;;;;;;;:::i;:::-;8461:5;;;8440:42;;-1:-1:-1;;;;;8440:42:0;;;;8461:5;;;8440:42;;;8493:5;:21;;-1:-1:-1;;;;;8493:21:0;;;-1:-1:-1;;;;;;8493:21:0;;;;;;;8525:25;;;;;;;8210:348::o;19560:792::-;19609:20;;:::i;:::-;19649:8;19658:3;19649:13;;;;;;;;;;;;;;;;;19642:20;;;;;;;;19649:13;;;;19642:20;-1:-1:-1;;;;;19642:20:0;;;;-1:-1:-1;;;;;;;;19642:20:0;;;;;;;;;;-1:-1:-1;;;19642:20:0;;;;;;;;;-1:-1:-1;19677:15:0;:37;19673:672;;;19731:16;19750:7;19758:3;19750:12;;;;;;;;;;;;;;;;;;:37;;-1:-1:-1;;;19750:37:0;;-1:-1:-1;;;;;19750:12:0;;;;:22;;:37;;19781:4;;19750:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19731:56;-1:-1:-1;19806:12:0;;19802:345;;19839:12;19854:40;19874:4;:19;;;-1:-1:-1;;;;;19854:40:0;:15;:19;;:40;;;;:::i;:::-;19839:55;;19913:20;19985:15;;19936:46;19966:4;:15;;;-1:-1:-1;;;;;19936:46:0;:25;19945:15;;19936:4;:8;;:25;;;;:::i;:::-;:29;;:46::i;:::-;:64;;;;;;;-1:-1:-1;20044:87:0;20071:59;20113:8;20072:38;19936:64;14867:4;20072:16;:38::i;:::-;:49;;;;;;20071:57;:59::i;:::-;20044:22;;-1:-1:-1;;;;;20044:26:0;;;:87::i;:::-;-1:-1:-1;;;;;20019:112:0;;;-1:-1:-1;;19802:345:0;20183:22;:15;:20;:22::i;:::-;-1:-1:-1;;;;;20161:44:0;:19;;;:44;20220:8;:13;;20161:4;;20220:8;20229:3;;20220:13;;;;;;;;;;;;;;;:20;;:13;;:20;;;;;;;;;;;-1:-1:-1;;;;;;20220:20:0;;;-1:-1:-1;;;;;20220:20:0;;;;;;;-1:-1:-1;;;;20220:20:0;-1:-1:-1;;;;;;;;20220:20:0;;;;;-1:-1:-1;;;;;20220:20:0;-1:-1:-1;;;20220:20:0;;;;;;;;;;;;;;20279:19;;;20310:22;;20260:73;;20274:3;;20260:73;;;;20279:19;;20300:8;;20260:73;:::i;:::-;;;;;;;;19673:672;;19560:792;;;:::o;19183:193::-;19267:4;19253:11;19289:80;19313:3;19309:1;:7;19289:80;;;19338:19;19349:4;;19354:1;19349:7;;;;;;;;;;;;;19338:10;:19::i;:::-;-1:-1:-1;19318:3:0;;19289:80;;;;19183:193;;;:::o;14389:23::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14389:23:0;;-1:-1:-1;14389:23:0;:::o;6617:246::-;6806:49;;-1:-1:-1;;;6806:49:0;;-1:-1:-1;;;;;6806:12:0;;;;;:49;;6819:4;;6825:2;;6829:6;;6837:8;;6847:1;;6850;;6853;;6806:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6617:246;;;;;;;;:::o;14782:30::-;;;;:::o;17183:411::-;8661:5;;-1:-1:-1;;;;;8661:5:0;8647:10;:19;8639:64;;;;-1:-1:-1;;;8639:64:0;;;;;;;:::i;:::-;17314:63:::1;17365:11;17314:46;17334:8;17343:4;17334:14;;;;;;;;;::::0;;;::::1;::::0;;;::::1;:25:::0;17314:15:::1;::::0;;-1:-1:-1;;;17334:25:0;::::1;-1:-1:-1::0;;;;;17334:25:0::1;17314:19;:46::i;:::-;:50:::0;::::1;:63::i;:::-;17296:15;:81:::0;17416:18:::1;:11:::0;:16:::1;:18::i;:::-;17388:8;17397:4;17388:14;;;;;;;;;;;;;;;:25;;;:46;;;;;-1:-1:-1::0;;;;;17388:46:0::1;;;;;-1:-1:-1::0;;;;;17388:46:0::1;;;;;;17449:9;17445:46;;;17479:9;17462:8;17471:4;17462:14;;;;;;;;;;;;;;;;:26;;;;;-1:-1:-1::0;;;;;17462:26:0::1;;;;;-1:-1:-1::0;;;;;17462:26:0::1;;;;;;17445:46;17536:9;:38;;17560:8;17569:4;17560:14;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;17560:14:0::1;17536:38;;;17548:9;17536:38;-1:-1:-1::0;;;;;17506:80:0::1;17517:4;17506:80;17523:11;17576:9;17506:80;;;;;;;:::i;:::-;;;;;;;;17183:411:::0;;;;:::o;7265:20::-;;;-1:-1:-1;;;;;7265:20:0;;:::o;20597:691::-;20673:20;;:::i;:::-;20696:15;20707:3;20696:10;:15::i;:::-;20722:21;20746:13;;;:8;:13;;;;;;;;-1:-1:-1;;;;;20746:17:0;;;;;;;;;20810:11;;20673:38;;-1:-1:-1;20746:17:0;20810:23;;20826:6;20810:15;:23::i;:::-;20796:37;;20900:22;;20862:86;;14867:4;;20889:34;;:6;;-1:-1:-1;;;;;20889:34:0;:10;:34::i;:::-;:57;;;;;20862:15;;;;;20889:57;;20862:19;:86::i;:::-;20844:4;:15;;:104;;;;20986:19;21008:8;21017:3;21008:13;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21008:13:0;;-1:-1:-1;21036:32:0;;21032:118;;21126:11;;21085:53;;-1:-1:-1;;;21085:53:0;;-1:-1:-1;;;;;21085:24:0;;;;;:53;;21110:3;;21115:2;;;;21123:1;;21126:11;21085:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21032:118;21162:64;21192:10;21212:4;21219:6;21162:7;21170:3;21162:12;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21162:12:0;;:64;;:29;:64::i;:::-;21277:2;-1:-1:-1;;;;;21244:36:0;21264:3;21252:10;-1:-1:-1;;;;;21244:36:0;;21269:6;21244:36;;;;;;:::i;14576:66::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;18188:813::-;18263:15;18291:20;;:::i;:::-;18314:8;18323:4;18314:14;;;;;;;;;;;;;;;;18291:37;;;;;;;;18314:14;;;;18291:37;-1:-1:-1;;;;;18291:37:0;;;;;-1:-1:-1;;;;;;;;18291:37:0;;;;;;;;-1:-1:-1;;;18291:37:0;;;;;;;;;;18363:14;;;:8;:14;;;;;-1:-1:-1;;;;;18363:21:0;;;;;;;;;;18423:22;;18475:7;:13;;18291:37;;-1:-1:-1;18363:21:0;;18395:50;;;18372:4;;18475:13;;;;;;;;;;;;;;;;:38;;-1:-1:-1;;;18475:38:0;;-1:-1:-1;;;;;18475:13:0;;;;:23;;:38;;18507:4;;18475:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18456:57;;18546:4;:19;;;-1:-1:-1;;;;;18528:37:0;:15;:37;:54;;;;-1:-1:-1;18569:13:0;;;18528:54;18524:351;;;18599:12;18614:40;18634:4;:19;;;-1:-1:-1;;;;;18614:40:0;:15;:19;;:40;;;;:::i;:::-;18599:55;;18669:20;18741:15;;18692:46;18722:4;:15;;;-1:-1:-1;;;;;18692:46:0;:25;18701:15;;18692:4;:8;;:25;;;;:::i;:46::-;:64;;;;;;;-1:-1:-1;18791:72:0;18854:8;18813:38;18692:64;14867:4;18813:16;:38::i;:::-;:49;;;;;18791:17;;18813:49;;18791:21;:72::i;:::-;18771:92;;18524:351;;;18965:15;;;;18902:11;;18895:98;;:86;;14867:4;;18902:34;;18918:17;18902:15;:34::i;:::-;:57;;;;;;;18895:69;:86::i;:98::-;18885:108;18188:813;-1:-1:-1;;;;;;;18188:813:0:o;16296:492::-;8661:5;;-1:-1:-1;;;;;8661:5:0;8647:10;:19;8639:64;;;;-1:-1:-1;;;8639:64:0;;;;;;;:::i;:::-;16413:15:::1;::::0;:31:::1;::::0;16433:10;16413:19:::1;:31::i;:::-;16395:15;:49:::0;16455:7:::1;:22:::0;;::::1;::::0;;::::1;::::0;;;;::::1;::::0;;-1:-1:-1;;;;;16455:22:0;;::::1;-1:-1:-1::0;;;;;;16455:22:0;;::::1;;::::0;;;16488:8:::1;:24:::0;;;;::::1;::::0;;-1:-1:-1;16488:24:0;;;;;;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;16539:153:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;16525:8:::1;::::0;16455:22:::1;16539:153:::0;::::1;16623:22;:15;:20;:22::i;:::-;-1:-1:-1::0;;;;;16539:153:0::1;;;;;16575:17;:10;:15;:17::i;:::-;-1:-1:-1::0;;;;;16539:153:0;;::::1;::::0;;;16525:168;;::::1;::::0;;::::1;::::0;;-1:-1:-1;16525:168:0;;;::::1;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;16525:168:0::1;-1:-1:-1::0;;;;;16525:168:0;;;::::1;-1:-1:-1::0;;;16525:168:0::1;-1:-1:-1::0;;;;;;;;;16525:168:0;;::::1;-1:-1:-1::0;;;;;;16525:168:0;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;;::::0;;16725:7:::1;:14:::0;-1:-1:-1;;;;;16709:71:0;;::::1;::::0;;;::::1;::::0;16725:21:::1;::::0;:18:::1;:21::i;:::-;16709:71;16748:10;16709:71;;;;;;:::i;:::-;;;;;;;;16296:492:::0;;;:::o;14482:27::-;;;;;;;;;;14215:30;;;:::o;23477:1017::-;23564:20;;:::i;:::-;23587:15;23598:3;23587:10;:15::i;:::-;23613:21;23637:13;;;:8;:13;;;;;;;;23651:10;23637:25;;;;;;;23723:22;;23707:11;;23564:38;;-1:-1:-1;23637:25:0;;14867:4;;23707:39;;:11;-1:-1:-1;;;;;23707:39:0;:15;:39::i;:::-;:62;;;;;;23673:97;;23781:22;23806:50;:38;23828:4;:15;;;23806:17;:21;;:38;;;;:::i;:50::-;23781:75;;23907:88;14867:4;23936:34;23947:4;:22;;;-1:-1:-1;;;;;23936:34:0;:6;:10;;:34;;;;:::i;:::-;:57;;;;;23907:17;;23936:57;;23907:21;:88::i;:::-;23889:15;;;:106;24020:11;;:23;;24036:6;24020:15;:23::i;:::-;24006:37;;24089:39;-1:-1:-1;;;;;24089:6:0;:19;24109:2;24113:14;24089:19;:39::i;:::-;24141:19;24163:8;24172:3;24163:13;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24163:13:0;;-1:-1:-1;24191:32:0;;24187:139;;24302:11;;24240:74;;-1:-1:-1;;;24240:74:0;;-1:-1:-1;;;;;24240:24:0;;;;;:74;;24265:3;;24270:10;;24282:2;;24286:14;;24302:11;24240:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24187:139;24338:37;24364:2;24368:6;24338:7;24346:3;24338:12;;;;;;;:37;24427:2;-1:-1:-1;;;;;24393:37:0;24414:3;24402:10;-1:-1:-1;;;;;24393:37:0;;24419:6;24393:37;;;;;;:::i;:::-;;;;;;;;24466:3;24454:10;-1:-1:-1;;;;;24446:40:0;;24471:14;24446:40;;;;;;:::i;:::-;;;;;;;;23477:1017;;;;;;;;:::o;5716:554::-;5799:23;;5907:5;-1:-1:-1;;;;;5896:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5896:24:0;-1:-1:-1;5884:36:0;-1:-1:-1;5953:5:0;-1:-1:-1;;;;;5941:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5931:35;;5982:9;5977:286;5997:16;;;5977:286;;;6036:12;6050:19;6081:4;6100:5;;6106:1;6100:8;;;;;;;;;;;;;;;;;;:::i;:::-;6073:36;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6035:74;;;;6132:7;:24;;;;6144:12;6143:13;6132:24;6158:21;6172:6;6158:13;:21::i;:::-;6124:56;;;;;-1:-1:-1;;;6124:56:0;;;;;;;;:::i;:::-;;6210:7;6195:9;6205:1;6195:12;;;;;;;;;;;;;:22;;;;;;;;;;;6245:6;6232:7;6240:1;6232:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;6015:3:0;;5977:286;;;;5716:554;;;;;;:::o;17782:176::-;8661:5;;-1:-1:-1;;;;;8661:5:0;8647:10;:19;8639:64;;;;-1:-1:-1;;;8639:64:0;;;;;;;:::i;:::-;17864:15:::1;:34:::0;;;17914:36:::1;::::0;::::1;::::0;::::1;::::0;17882:16;;17914:36:::1;:::i;:::-;;;;;;;;17782:176:::0;:::o;7312:27::-;;;-1:-1:-1;;;;;7312:27:0;;:::o;617:137::-;675:9;695:6;;;:28;;-1:-1:-1;;710:5:0;;;722:1;717;710:5;717:1;705:13;;;;;:18;695:28;687:65;;;;-1:-1:-1;;;687:65:0;;;;;;;:::i;:::-;617:137;;;;:::o;10708:218::-;10764:6;10794:5;;;10819:6;;;;;;:16;;;10834:1;10829;:6;;10819:16;10818:38;;;;10845:1;10841;:5;:14;;;;;10854:1;10850;:5;10841:14;10810:87;;;;-1:-1:-1;;;10810:87:0;;;;;;;:::i;:::-;10917:1;10708:218;-1:-1:-1;;;10708:218:0:o;489:122::-;572:5;;;567:16;;;;559:50;;;;-1:-1:-1;;;559:50:0;;;;;;;:::i;3808:304::-;3893:12;3907:17;3936:5;-1:-1:-1;;;;;3928:19:0;3971:10;3983:2;3987:6;3948:46;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3948:46:0;;;;;;;;;;;3928:67;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3892:103;;;;4014:7;:57;;;;-1:-1:-1;4026:11:0;;:16;;:44;;;4057:4;4046:24;;;;;;;;;;;;:::i;:::-;4006:98;;;;-1:-1:-1;;;4006:98:0;;;;;;;:::i;:::-;3808:304;;;;;:::o;11394:138::-;11446:7;11479:1;11474;:6;;11466:30;;;;-1:-1:-1;;;11466:30:0;;;;;;;:::i;:::-;-1:-1:-1;11522:1:0;11394:138::o;760:161::-;809:9;-1:-1:-1;;;;;839:16:0;;;831:57;;;;-1:-1:-1;;;831:57:0;;;;;;;:::i;1281:125::-;1364:5;;;-1:-1:-1;;;;;1359:16:0;;;;;;;;1351:53;;;;-1:-1:-1;;;1351:53:0;;;;;;;:::i;927:156::-;975:8;-1:-1:-1;;;;;1004:15:0;;;996:55;;;;-1:-1:-1;;;996:55:0;;;;;;;:::i;358:125::-;441:5;;;436:16;;;;428:53;;;;-1:-1:-1;;;428:53:0;;;;;;;:::i;11171:215::-;11227:6;11257:5;;;11282:6;;;;;;:16;;;11297:1;11292;:6;;11282:16;11281:38;;;;11308:1;11304;:5;:14;;;;;11317:1;11313;:5;11304:14;11273:84;;;;-1:-1:-1;;;11273:84:0;;;;;;;:::i;4120:332::-;4223:12;4237:17;4266:5;-1:-1:-1;;;;;4258:19:0;4301:10;4313:4;4319:2;4323:6;4278:52;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4278:52:0;;;;;;;;;;;4258:73;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4222:109;;;;4350:7;:57;;;;-1:-1:-1;4362:11:0;;:16;;:44;;;4393:4;4382:24;;;;;;;;;;;;:::i;:::-;4342:102;;;;-1:-1:-1;;;4342:102:0;;;;;;;:::i;:::-;4120:332;;;;;;:::o;4760:496::-;4832:13;4995:2;4974:11;:18;:23;4970:67;;;-1:-1:-1;4999:38:0;;;;;;;;;;;;;;;;;;;4970:67;5141:4;5128:11;5124:22;5109:37;;5185:11;5174: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;;-1:-1;;;;;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;2512:479::-;;;;2644:2;2632:9;2623:7;2619:23;2615:32;2612:2;;;-1:-1;;2650:12;2612:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;2702:63;-1:-1;2802:2;2838:22;;971:20;996:30;971:20;996:30;:::i;:::-;2810:60;-1:-1;2907:2;2943:22;;971:20;996:30;971:20;996:30;:::i;:::-;2915:60;;;;2606:385;;;;;:::o;2998:538::-;;;;3162:2;3150:9;3141:7;3137:23;3133:32;3130:2;;;-1:-1;;3168:12;3130:2;3226:17;3213:31;-1:-1;;;;;3256:6;3253:30;3250:2;;;-1:-1;;3286:12;3250:2;3324:91;3407:7;3398:6;3387:9;3383:22;3324:91;:::i;:::-;3306:109;;-1:-1;3306:109;-1:-1;;3452:2;3488:22;;971:20;996:30;971:20;996:30;:::i;3543:397::-;;;3682:2;3670:9;3661:7;3657:23;3653:32;3650:2;;;-1:-1;;3688:12;3650:2;3746:17;3733:31;-1:-1;;;;;3776:6;3773:30;3770:2;;;-1:-1;;3806:12;3770:2;3844:80;3916:7;3907:6;3896:9;3892:22;3844:80;:::i;:::-;3826:98;;;;-1:-1;3644:296;-1:-1;;;;3644:296::o;3947:257::-;;4059:2;4047:9;4038:7;4034:23;4030:32;4027:2;;;-1:-1;;4065:12;4027:2;1119:6;1113:13;1131:30;1155:5;1131:30;:::i;4211:1145::-;;;;;;;;;4446:3;4434:9;4425:7;4421:23;4417:33;4414:2;;;-1:-1;;4453:12;4414:2;1404:6;1391:20;1416:47;1457:5;1416:47;:::i;:::-;4505:77;-1:-1;4619:2;4658:22;;72:20;97:33;72:20;97:33;:::i;:::-;4627:63;-1:-1;4727:2;4766:22;;72:20;97:33;72:20;97:33;:::i;:::-;4735:63;-1:-1;4835:2;4874:22;;2168:20;;-1:-1;4943:3;4983:22;;2168:20;;-1:-1;5052:3;5090:22;;2444:20;37499:4;37488:16;;40110:33;;40100:2;;-1:-1;;40147:12;40100:2;4408:948;;;;-1:-1;4408:948;;;;;;5061:61;;-1:-1;;;5159:3;5199:22;;1240:20;;5268:3;5308:22;1240:20;;4408:948::o;5363:362::-;;5488:2;5476:9;5467:7;5463:23;5459:32;5456:2;;;-1:-1;;5494:12;5456:2;5545:17;5539:24;-1:-1;;;;;5583:18;5575:6;5572:30;5569:2;;;-1:-1;;5605:12;5569:2;5692:6;5681:9;5677:22;;;1762:3;1755:4;1747:6;1743:17;1739:27;1729:2;;-1:-1;;1770:12;1729:2;1810:6;1804:13;5583:18;34255:6;34252:30;34249:2;;;-1:-1;;34285:12;34249:2;33918;33912:9;34358;34339:17;;-1:-1;;34335:33;33944:17;;5488:2;33944:17;34004:34;;;34040:22;;;34001:62;33998:2;;;-1:-1;;34066:12;33998:2;33918;34085:22;1903:21;;;2003:16;;;5488:2;2003:16;2000:25;-1:-1;1997:2;;;-1:-1;;2028:12;1997:2;2048:39;2080:6;5488:2;1979:5;1975:16;5488:2;1945:6;1941:17;2048:39;:::i;:::-;5625:84;5450:275;-1:-1;;;;;;5450:275::o;5732:241::-;;5836:2;5824:9;5815:7;5811:23;5807:32;5804:2;;;-1:-1;;5842:12;5804:2;-1:-1;2168:20;;5798:175;-1:-1;5798:175::o;5980:263::-;;6095:2;6083:9;6074:7;6070:23;6066:32;6063:2;;;-1:-1;;6101:12;6063:2;-1:-1;2316:13;;6057:186;-1:-1;6057:186::o;6250:366::-;;;6371:2;6359:9;6350:7;6346:23;6342:32;6339:2;;;-1:-1;;6377:12;6339:2;2181:6;2168:20;6429:63;;6529:2;6572:9;6568:22;72:20;97:33;124:5;97:33;:::i;:::-;6537:63;;;;6333:283;;;;;:::o;6623:555::-;;;;6793:2;6781:9;6772:7;6768:23;6764:32;6761:2;;;-1:-1;;6799:12;6761:2;2181:6;2168:20;6851:63;;6951:2;7008:9;7004:22;1391:20;1416:47;1457:5;1416:47;:::i;:::-;6959:77;-1:-1;7073:2;7130:22;;1560:20;1585:51;1560:20;1585:51;:::i;7185:491::-;;;;7323:2;7311:9;7302:7;7298:23;7294:32;7291:2;;;-1:-1;;7329:12;7291:2;2181:6;2168:20;7381:63;;7481:2;7524:9;7520:22;2168:20;7489:63;;7589:2;7632:9;7628:22;72:20;97:33;124:5;97:33;:::i;7683:647::-;;;;;7853:3;7841:9;7832:7;7828:23;7824:33;7821:2;;;-1:-1;;7860:12;7821:2;2181:6;2168:20;7912:63;;8012:2;8055:9;8051:22;2168:20;8020:63;;8120:2;8181:9;8177:22;1560:20;1585:51;1630:5;1585:51;:::i;:::-;8128:81;-1:-1;8246:2;8282:22;;971:20;996:30;971:20;996:30;:::i;:::-;7815:515;;;;-1:-1;7815:515;;-1:-1;;7815:515::o;11301:323::-;;11433:5;34870:12;35685:6;35680:3;35673:19;11516:52;11561:6;35722:4;35717:3;35713:14;35722:4;11542:5;11538:16;11516:52;:::i;:::-;34358:9;39214:14;-1:-1;;39210:28;11580:39;;;;35722:4;11580:39;;11381:243;-1:-1;;11381:243::o;18930:291::-;;38797:6;38792:3;38787;38774:30;38835:16;;38828:27;;;38835:16;19074:147;-1:-1;19074:147::o;19228:271::-;;11791:5;34870:12;11902:52;11947:6;11942:3;11935:4;11928:5;11924:16;11902:52;:::i;:::-;11966:16;;;;;19362:137;-1:-1;;19362:137::o;19506:222::-;-1:-1;;;;;37180:54;;;;8925:37;;19633:2;19618:18;;19604:124::o;19735:444::-;-1:-1;;;;;37180:54;;;8925:37;;37180:54;;;;20082:2;20067:18;;8925:37;20165:2;20150:18;;10911:37;;;;19918:2;19903:18;;19889:290::o;20186:884::-;-1:-1;;;;;37180:54;;;8925:37;;37180:54;;;;20642:2;20627:18;;8925:37;20725:2;20710:18;;10911:37;;;;20808:2;20793:18;;10911:37;;;;37499:4;37488:16;20887:3;20872:19;;18883:35;37191:42;20956:19;;10911:37;21055:3;21040:19;;10911:37;;;;20477:3;20462:19;;20448:622::o;21077:333::-;-1:-1;;;;;37180:54;;;;8925:37;;21396:2;21381:18;;10911:37;21232:2;21217:18;;21203:207::o;21417:653::-;21684:2;21698:47;;;34870:12;;21669:18;;;35673:19;;;21417:653;;35722:4;;35713:14;;;;34560;;;21417:653;9392:251;9417:6;9414:1;9411:13;9392:251;;;9478:13;;36587;36580:21;10683:34;;8479:14;;;;35407;;;;9439:1;9432:9;9392:251;;;9396:14;;;21909:9;21903:4;21899:20;35722:4;21883:9;21879:18;21872:48;21934:126;9920:5;34870:12;9939:95;10027:6;10022:3;9939:95;:::i;:::-;9932:102;;;;;35722:4;10091:6;10087:17;10082:3;10078:27;35722:4;10185:5;34560:14;-1:-1;10224:357;10249:6;10246:1;10243:13;10224:357;;;10311:9;10305:4;10301:20;10296:3;10289:33;8627:64;8687:3;10356:6;10350:13;8627:64;:::i;:::-;10560:14;;;;10370:90;-1:-1;35407:14;;;;9439:1;10264:9;10224:357;;;-1:-1;21926:134;;21655:415;-1:-1;;;;;;;;;21655:415::o;22599:310::-;;22746:2;22767:17;22760:47;22821:78;22746:2;22735:9;22731:18;22885:6;22821:78;:::i;22916:416::-;23116:2;23130:47;;;13169:2;23101:18;;;35673:19;-1:-1;;;35713:14;;;13185:44;13248:12;;;23087:245::o;23339:416::-;23539:2;23553:47;;;13499:2;23524:18;;;35673:19;-1:-1;;;35713:14;;;13515:34;13568:12;;;23510:245::o;23762:416::-;23962:2;23976:47;;;13819:2;23947:18;;;35673:19;13855:30;35713:14;;;13835:51;13905:12;;;23933:245::o;24185:416::-;24385:2;24399:47;;;14156:2;24370:18;;;35673:19;14192:34;35713:14;;;14172:55;-1:-1;;;14247:12;;;14240:25;14284:12;;;24356:245::o;24608:416::-;24808:2;24822:47;;;14535:2;24793:18;;;35673:19;-1:-1;;;35713:14;;;14551:44;14614:12;;;24779:245::o;25031:416::-;25231:2;25245:47;;;14865:2;25216:18;;;35673:19;14901:30;35713:14;;;14881:51;14951:12;;;25202:245::o;25454:416::-;25654:2;25668:47;;;15202:2;25639:18;;;35673:19;15238:26;35713:14;;;15218:47;15284:12;;;25625:245::o;25877:416::-;26077:2;26091:47;;;26062:18;;;35673:19;15571:34;35713:14;;;15551:55;15625:12;;;26048:245::o;26300:416::-;26500:2;26514:47;;;26485:18;;;35673:19;15912:34;35713:14;;;15892:55;15966:12;;;26471:245::o;26723:416::-;26923:2;26937:47;;;16217:2;26908:18;;;35673:19;16253:29;35713:14;;;16233:50;16302:12;;;26894:245::o;27146:416::-;27346:2;27360:47;;;16553:2;27331:18;;;35673:19;16589:34;35713:14;;;16569:55;-1:-1;;;16644:12;;;16637:28;16684:12;;;27317:245::o;27569:416::-;27769:2;27783:47;;;27754:18;;;35673:19;16971:34;35713:14;;;16951:55;17025:12;;;27740:245::o;27992:416::-;28192:2;28206:47;;;17276:2;28177:18;;;35673:19;17312:26;35713:14;;;17292:47;17358:12;;;28163:245::o;28415:326::-;17669:23;;-1:-1;;;;;37060:46;18170:37;;17850:4;17839:16;;;17833:23;-1:-1;;;;;37386:30;;;17908:14;;;18651:36;;;;18008:4;17997:16;;;17991:23;37386:30;18066:14;;;18651:36;;;;28594:2;28579:18;;28565:176::o;28748:436::-;-1:-1;;;;;37060:46;;;;18170:37;;-1:-1;;;;;37386:30;;;29089:2;29074:18;;18651:36;37386:30;29170:2;29155:18;;18651:36;28927:2;28912:18;;28898:286::o;29191:222::-;10911:37;;;29318:2;29303:18;;29289:124::o;29420:716::-;10911:37;;;-1:-1;;;;;37180:54;;;29856:2;29841:18;;8784:58;37180:54;;;;29939:2;29924:18;;8925:37;30030:2;30015:18;;12520:58;;;;30121:3;30106:19;;12520:58;29683:3;29668:19;;29654:482::o;32232:321::-;10911:37;;;36587:13;36580:21;32539:2;32524:18;;10683:34;32381:2;32366:18;;32352:201::o;32560:329::-;10911:37;;;32875:2;32860:18;;10911:37;32713:2;32698:18;;32684:205::o;32896:440::-;-1:-1;;;;;37386:30;;;;18651:36;;33239:2;33224:18;;10911:37;;;;-1:-1;;;;;37060:46;33322:2;33307:18;;18410:50;33077:2;33062:18;;33048:288::o;33343:506::-;;;33478:11;33465:25;33529:48;;33553:8;33537:14;33533:29;33529:48;33509:18;33505:73;33495:2;;-1:-1;;33582:12;33495:2;33609:33;;33663:18;;;-1:-1;;;;;;33690:30;;33687:2;;;-1:-1;;33723:12;33687:2;33568:4;33751:13;;-1:-1;33537:14;33783:38;;;33773:49;;33770:2;;;33835:1;;33825:12;38870:268;38935:1;38942:101;38956:6;38953:1;38950:13;38942:101;;;39023:11;;;39017:18;39004:11;;;38997:39;38978:2;38971:10;38942:101;;;39058:6;39055:1;39052:13;39049:2;;;-1:-1;;38935:1;39105:16;;39098:27;38919:219::o;39251:117::-;-1:-1;;;;;37180:54;;39310:35;;39300:2;;39359:1;;39349:12;39300:2;39294:74;:::o;39375:111::-;39456:5;36587:13;36580:21;39434:5;39431:32;39421:2;;39477:1;;39467:12
Swarm Source
ipfs://5e81058284d6ea4292b34864e1f71e62b003acf7b73b187efa25aeb498b66784
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.