Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Loading...
Loading
Contract Name:
Pickle_ZapOut_V1
Compiler Version
v0.5.17+commit.d19bba13
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-04-21 */ // ███████╗░█████╗░██████╗░██████╗░███████╗██████╗░░░░███████╗██╗ // ╚════██║██╔══██╗██╔══██╗██╔══██╗██╔════╝██╔══██╗░░░██╔════╝██║ // ░░███╔═╝███████║██████╔╝██████╔╝█████╗░░██████╔╝░░░█████╗░░██║ // ██╔══╝░░██╔══██║██╔═══╝░██╔═══╝░██╔══╝░░██╔══██╗░░░██╔══╝░░██║ // ███████╗██║░░██║██║░░░░░██║░░░░░███████╗██║░░██║██╗██║░░░░░██║ // ╚══════╝╚═╝░░╚═╝╚═╝░░░░░╚═╝░░░░░╚══════╝╚═╝░░╚═╝╚═╝╚═╝░░░░░╚═╝ // Copyright (C) 2021 zapper // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by // the Free Software Foundation, either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // ///@author Zapper ///@notice This contract removes liquidity from Pickle Jars to ETH or ERC20 Tokens. // SPDX-License-Identifier: GPLv2 // File: oz/GSN/Context.sol pragma solidity ^0.5.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ contract Context { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. constructor() internal {} // solhint-disable-previous-line no-empty-blocks function _msgSender() internal view returns (address payable) { return msg.sender; } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } // File: oz/ownership/Ownable.sol pragma solidity ^0.5.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(isOwner(), "Ownable: caller is not the owner"); _; } /** * @dev Returns true if the caller is the current owner. */ function isOwner() public view returns (bool) { return _msgSender() == _owner; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). */ function _transferOwnership(address newOwner) internal { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // File: oz/token/ERC20/IERC20.sol pragma solidity ^0.5.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. Does not include * the optional functions; to access them see {ERC20Detailed}. */ interface IERC20 { function decimals() external view returns (uint8); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); } // File: oz/math/SafeMath.sol pragma solidity ^0.5.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. * * _Available since v2.4.0._ */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. * * _Available since v2.4.0._ */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } // File: oz/utils/Address.sol pragma solidity ^0.5.5; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Converts an `address` into `address payable`. Note that this is * simply a type cast: the actual underlying value is not changed. * * _Available since v2.4.0._ */ function toPayable(address account) internal pure returns (address payable) { return address(uint160(account)); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. * * _Available since v2.4.0._ */ function sendValue(address payable recipient, uint256 amount) internal { require( address(this).balance >= amount, "Address: insufficient balance" ); // solhint-disable-next-line avoid-call-value (bool success, ) = recipient.call.value(amount)(""); require( success, "Address: unable to send value, recipient may have reverted" ); } } // File: oz/token/ERC20/SafeERC20.sol pragma solidity ^0.5.0; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using SafeMath for uint256; using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { callOptionalReturn( token, abi.encodeWithSelector(token.transfer.selector, to, value) ); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { callOptionalReturn( token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value) ); } function safeApprove( IERC20 token, address spender, uint256 value ) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' // solhint-disable-next-line max-line-length require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); callOptionalReturn( token, abi.encodeWithSelector(token.approve.selector, spender, value) ); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender).add(value); callOptionalReturn( token, abi.encodeWithSelector( token.approve.selector, spender, newAllowance ) ); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender).sub( value, "SafeERC20: decreased allowance below zero" ); callOptionalReturn( token, abi.encodeWithSelector( token.approve.selector, spender, newAllowance ) ); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. // A Solidity high level call has three parts: // 1. The target address is checked to verify it contains contract code // 2. The call itself is made, and success asserted // 3. The return value is decoded, which in turn checks the size of the returned data. // solhint-disable-next-line max-line-length require(address(token).isContract(), "SafeERC20: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = address(token).call(data); require(success, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional // solhint-disable-next-line max-line-length require( abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed" ); } } } // File: contracts/_base/ZapBaseV1.sol pragma solidity ^0.5.7; contract ZapBaseV1 is Ownable { using SafeMath for uint256; using SafeERC20 for IERC20; bool public stopped = false; // if true, goodwill is not deducted mapping(address => bool) public feeWhitelist; uint256 public goodwill; // % share of goodwill (0-100 %) uint256 affiliateSplit; // restrict affiliates mapping(address => bool) public affiliates; // affiliate => token => amount mapping(address => mapping(address => uint256)) public affiliateBalance; // token => amount mapping(address => uint256) public totalAffiliateBalance; address internal constant ETHAddress = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; constructor(uint256 _goodwill, uint256 _affiliateSplit) public { goodwill = _goodwill; affiliateSplit = _affiliateSplit; } // circuit breaker modifiers modifier stopInEmergency { if (stopped) { revert("Temporarily Paused"); } else { _; } } function _getBalance(address token) internal view returns (uint256 balance) { if (token == address(0)) { balance = address(this).balance; } else { balance = IERC20(token).balanceOf(address(this)); } } function _approveToken(address token, address spender) internal { IERC20 _token = IERC20(token); if (_token.allowance(address(this), spender) > 0) return; else { _token.safeApprove(spender, uint256(-1)); } } function _approveToken( address token, address spender, uint256 amount ) internal { IERC20 _token = IERC20(token); _token.safeApprove(spender, 0); _token.safeApprove(spender, amount); } // - to Pause the contract function toggleContractActive() public onlyOwner { stopped = !stopped; } function set_feeWhitelist(address zapAddress, bool status) external onlyOwner { feeWhitelist[zapAddress] = status; } function set_new_goodwill(uint256 _new_goodwill) public onlyOwner { require( _new_goodwill >= 0 && _new_goodwill <= 100, "GoodWill Value not allowed" ); goodwill = _new_goodwill; } function set_new_affiliateSplit(uint256 _new_affiliateSplit) external onlyOwner { require( _new_affiliateSplit <= 100, "Affiliate Split Value not allowed" ); affiliateSplit = _new_affiliateSplit; } function set_affiliate(address _affiliate, bool _status) external onlyOwner { affiliates[_affiliate] = _status; } ///@notice Withdraw goodwill share, retaining affilliate share function withdrawTokens(address[] calldata tokens) external onlyOwner { for (uint256 i = 0; i < tokens.length; i++) { uint256 qty; if (tokens[i] == ETHAddress) { qty = address(this).balance.sub( totalAffiliateBalance[tokens[i]] ); Address.sendValue(Address.toPayable(owner()), qty); } else { qty = IERC20(tokens[i]).balanceOf(address(this)).sub( totalAffiliateBalance[tokens[i]] ); IERC20(tokens[i]).safeTransfer(owner(), qty); } } } ///@notice Withdraw affilliate share, retaining goodwill share function affilliateWithdraw(address[] calldata tokens) external { uint256 tokenBal; for (uint256 i = 0; i < tokens.length; i++) { tokenBal = affiliateBalance[msg.sender][tokens[i]]; affiliateBalance[msg.sender][tokens[i]] = 0; totalAffiliateBalance[tokens[i]] = totalAffiliateBalance[tokens[i]] .sub(tokenBal); if (tokens[i] == ETHAddress) { Address.sendValue(msg.sender, tokenBal); } else { IERC20(tokens[i]).safeTransfer(msg.sender, tokenBal); } } } function() external payable { require(msg.sender != tx.origin, "Do not send ETH directly"); } } // File: contracts/_base/ZapOutBaseV1.sol pragma solidity ^0.5.7; contract ZapOutBaseV1 is ZapBaseV1 { function _subtractGoodwill( address token, uint256 amount, address affiliate, bool enableGoodwill ) internal returns (uint256 totalGoodwillPortion) { bool whitelisted = feeWhitelist[msg.sender]; if (enableGoodwill && !whitelisted && goodwill > 0) { totalGoodwillPortion = SafeMath.div( SafeMath.mul(amount, goodwill), 10000 ); if (affiliates[affiliate]) { if (token == address(0)) { token = ETHAddress; } uint256 affiliatePortion = totalGoodwillPortion.mul(affiliateSplit).div(100); affiliateBalance[affiliate][token] = affiliateBalance[ affiliate ][token] .add(affiliatePortion); totalAffiliateBalance[token] = totalAffiliateBalance[token].add( affiliatePortion ); } } } } // File: contracts/Pickle/Pickle_ZapOut_V1.sol pragma solidity ^0.5.7; interface IPickleJar { function token() external view returns (address); function withdraw(uint256 _shares) external; function getRatio() external view returns (uint256); } contract Pickle_ZapOut_V1 is ZapOutBaseV1 { // calldata only accepted for approved zap contracts mapping(address => bool) public approvedTargets; event Zapout( address _toWhomToIssue, address _fromPJarAddress, address _toTokenAddress, uint256 _tokensRecieved ); constructor(uint256 _goodwill, uint256 _affiliateSplit) public ZapBaseV1(_goodwill, _affiliateSplit) {} /** @notice Zap out in to a single token or ETH @param fromJar Pickle Jar from which to remove liquidity @param amountIn Quantity of Jar tokens to remove @param toToken Address of desired token @param minToTokens Minimum quantity of tokens to receive, reverts otherwise @param swapTarget Execution targets for swap or Zap @param swapData DEX or Zap data @param affiliate Affiliate address @return Quantity of tokens or ETH received */ function ZapOut( address fromJar, uint256 amountIn, address toToken, uint256 minToTokens, address swapTarget, bytes memory swapData, address affiliate ) public stopInEmergency returns (uint256 tokensReceived) { require( approvedTargets[swapTarget] || swapTarget == address(0), "Target not Authorized" ); IERC20(fromJar).safeTransferFrom(msg.sender, address(this), amountIn); // withdraw underlying token from jar address underlyingToken = IPickleJar(fromJar).token(); uint256 underlyingTokenReceived = _jarWithdraw(fromJar, amountIn, underlyingToken); // swap to toToken uint256 toTokenAmt = _fillQuote( underlyingToken, toToken, underlyingTokenReceived, swapTarget, swapData ); require(toTokenAmt >= minToTokens, "Err: High Slippage"); uint256 totalGoodwillPortion = _subtractGoodwill(toToken, toTokenAmt, affiliate, true); tokensReceived = toTokenAmt.sub(totalGoodwillPortion); // send toTokens if (toToken == address(0)) { Address.sendValue(msg.sender, tokensReceived); } else { IERC20(toToken).safeTransfer(msg.sender, tokensReceived); } } function _jarWithdraw( address fromJar, uint256 amount, address underlyingToken ) internal returns (uint256 underlyingReceived) { uint256 iniUnderlyingBal = _getBalance(underlyingToken); IPickleJar(fromJar).withdraw(amount); underlyingReceived = _getBalance(underlyingToken).sub(iniUnderlyingBal); } function _fillQuote( address _fromTokenAddress, address toToken, uint256 _amount, address _swapTarget, bytes memory swapCallData ) internal returns (uint256 amtBought) { uint256 valueToSend; if (_fromTokenAddress == toToken) { return _amount; } if (_fromTokenAddress == address(0)) { valueToSend = _amount; } else { _approveToken(_fromTokenAddress, _swapTarget, _amount); } uint256 iniBal = _getBalance(toToken); (bool success, ) = _swapTarget.call.value(valueToSend)(swapCallData); require(success, "Error Swapping Tokens 1"); uint256 finalBal = _getBalance(toToken); require(finalBal > 0, "ERR: Swapped to wrong token"); amtBought = finalBal.sub(iniBal); } /** @notice Utility function to determine the quantity of underlying tokens removed from jar @param fromJar Pickle Jar from which to remove liquidity @param liquidity Quantity of Jar tokens to remove @return Quantity of underlying LP or token removed */ function removeLiquidityReturn(IPickleJar fromJar, uint256 liquidity) external view returns (uint256) { return (liquidity.mul(fromJar.getRatio())).div(1e18); } function setApprovedTargets( address[] calldata targets, bool[] calldata isApproved ) external onlyOwner { require(targets.length == isApproved.length, "Invalid Input length"); for (uint256 i = 0; i < targets.length; i++) { approvedTargets[targets[i]] = isApproved[i]; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint256","name":"_goodwill","type":"uint256"},{"internalType":"uint256","name":"_affiliateSplit","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_toWhomToIssue","type":"address"},{"indexed":false,"internalType":"address","name":"_fromPJarAddress","type":"address"},{"indexed":false,"internalType":"address","name":"_toTokenAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"_tokensRecieved","type":"uint256"}],"name":"Zapout","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":false,"inputs":[{"internalType":"address","name":"fromJar","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"toToken","type":"address"},{"internalType":"uint256","name":"minToTokens","type":"uint256"},{"internalType":"address","name":"swapTarget","type":"address"},{"internalType":"bytes","name":"swapData","type":"bytes"},{"internalType":"address","name":"affiliate","type":"address"}],"name":"ZapOut","outputs":[{"internalType":"uint256","name":"tokensReceived","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"affiliateBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"affiliates","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"name":"affilliateWithdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"approvedTargets","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"feeWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"goodwill","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"contract IPickleJar","name":"fromJar","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"removeLiquidityReturn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"bool[]","name":"isApproved","type":"bool[]"}],"name":"setApprovedTargets","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_affiliate","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"set_affiliate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"zapAddress","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"set_feeWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_new_affiliateSplit","type":"uint256"}],"name":"set_new_affiliateSplit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_new_goodwill","type":"uint256"}],"name":"set_new_goodwill","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stopped","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"toggleContractActive","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalAffiliateBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"name":"withdrawTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526000805460ff60a01b1916905534801561001d57600080fd5b506040516120e43803806120e48339818101604052604081101561004057600080fd5b5080516020909101518181600061005e6001600160e01b036100b916565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600291909155600355506100bd9050565b3390565b612018806100cc6000396000f3fe60806040526004361061012a5760003560e01c80635ecb16cd116100ab5780638f32d59b1161006f5780638f32d59b146105745780639735a634146105895780639779d1a614610654578063d408f65714610687578063f2fde38b146106ba578063fbec27bf146106ed5761012a565b80635ecb16cd14610465578063715018a6146104e057806375f12b21146104f55780637ee992831461050a5780638da5cb5b146105435761012a565b80633ff428c7116100f25780633ff428c7146102bb57806346d4b548146102f65780634f51e294146103df578063550bfa56146104265780635de0398e146104505761012a565b806301e980d4146101815780630dc9de85146101ab5780631385d24c146102265780631781261f1461023b57806318b135e314610288575b3332141561017f576040805162461bcd60e51b815260206004820152601860248201527f446f206e6f742073656e6420455448206469726563746c790000000000000000604482015290519081900360640190fd5b005b34801561018d57600080fd5b5061017f600480360360208110156101a457600080fd5b5035610728565b3480156101b757600080fd5b5061017f600480360360208110156101ce57600080fd5b810190602081018135600160201b8111156101e857600080fd5b8201836020820111156101fa57600080fd5b803590602001918460208302840111600160201b8311171561021b57600080fd5b5090925090506107b4565b34801561023257600080fd5b5061017f610994565b34801561024757600080fd5b506102766004803603604081101561025e57600080fd5b506001600160a01b03813581169160200135166109fc565b60408051918252519081900360200190f35b34801561029457600080fd5b50610276600480360360208110156102ab57600080fd5b50356001600160a01b0316610a19565b3480156102c757600080fd5b5061017f600480360360408110156102de57600080fd5b506001600160a01b0381351690602001351515610a2b565b34801561030257600080fd5b50610276600480360360e081101561031957600080fd5b6001600160a01b038235811692602081013592604082013583169260608301359260808101359091169181019060c0810160a0820135600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460018302840111600160201b8311171561039357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505090356001600160a01b03169150610a9d9050565b3480156103eb57600080fd5b506104126004803603602081101561040257600080fd5b50356001600160a01b0316610cc0565b604080519115158252519081900360200190f35b34801561043257600080fd5b5061017f6004803603602081101561044957600080fd5b5035610cd5565b34801561045c57600080fd5b50610276610d77565b34801561047157600080fd5b5061017f6004803603602081101561048857600080fd5b810190602081018135600160201b8111156104a257600080fd5b8201836020820111156104b457600080fd5b803590602001918460208302840111600160201b831117156104d557600080fd5b509092509050610d7d565b3480156104ec57600080fd5b5061017f610f80565b34801561050157600080fd5b50610412611011565b34801561051657600080fd5b506102766004803603604081101561052d57600080fd5b506001600160a01b038135169060200135611021565b34801561054f57600080fd5b506105586110b9565b604080516001600160a01b039092168252519081900360200190f35b34801561058057600080fd5b506104126110c8565b34801561059557600080fd5b5061017f600480360360408110156105ac57600080fd5b810190602081018135600160201b8111156105c657600080fd5b8201836020820111156105d857600080fd5b803590602001918460208302840111600160201b831117156105f957600080fd5b919390929091602081019035600160201b81111561061657600080fd5b82018360208201111561062857600080fd5b803590602001918460208302840111600160201b8311171561064957600080fd5b5090925090506110ec565b34801561066057600080fd5b506104126004803603602081101561067757600080fd5b50356001600160a01b03166111ee565b34801561069357600080fd5b50610412600480360360208110156106aa57600080fd5b50356001600160a01b0316611203565b3480156106c657600080fd5b5061017f600480360360208110156106dd57600080fd5b50356001600160a01b0316611218565b3480156106f957600080fd5b5061017f6004803603604081101561071057600080fd5b506001600160a01b038135169060200135151561126b565b6107306110c8565b61076f576040805162461bcd60e51b81526020600482018190526024820152600080516020611f64833981519152604482015290519081900360640190fd5b60648111156107af5760405162461bcd60e51b8152600401808060200182810382526021815260200180611f436021913960400191505060405180910390fd5b600355565b6000805b8281101561098e57336000908152600560205260408120908585848181106107dc57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020549150600060056000336001600160a01b03166001600160a01b03168152602001908152602001600020600086868581811061084457fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020819055506108cb826006600087878681811061088c57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546112dd90919063ffffffff16565b600660008686858181106108db57fe5b602090810292909201356001600160a01b03168352508101919091526040016000205573eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee84848381811061091f57fe5b905060200201356001600160a01b03166001600160a01b0316141561094d57610948338361131f565b610986565b610986338386868581811061095e57fe5b905060200201356001600160a01b03166001600160a01b03166114049092919063ffffffff16565b6001016107b8565b50505050565b61099c6110c8565b6109db576040805162461bcd60e51b81526020600482018190526024820152600080516020611f64833981519152604482015290519081900360640190fd5b6000805460ff60a01b198116600160a01b9182900460ff1615909102179055565b600560209081526000928352604080842090915290825290205481565b60066020526000908152604090205481565b610a336110c8565b610a72576040805162461bcd60e51b81526020600482018190526024820152600080516020611f64833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b60008054600160a01b900460ff1615610af2576040805162461bcd60e51b815260206004820152601260248201527115195b5c1bdc985c9a5b1e4814185d5cd95960721b604482015290519081900360640190fd5b6001600160a01b03841660009081526007602052604090205460ff1680610b2057506001600160a01b038416155b610b69576040805162461bcd60e51b815260206004820152601560248201527415185c99d95d081b9bdd08105d5d1a1bdc9a5e9959605a1b604482015290519081900360640190fd5b610b846001600160a01b03891633308a63ffffffff61145616565b6000886001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015610bbf57600080fd5b505afa158015610bd3573d6000803e3d6000fd5b505050506040513d6020811015610be957600080fd5b505190506000610bfa8a8a846114b0565b90506000610c0b838a848a8a61153e565b905087811015610c57576040805162461bcd60e51b81526020600482015260126024820152714572723a204869676820536c69707061676560701b604482015290519081900360640190fd5b6000610c668a8388600161170b565b9050610c78828263ffffffff6112dd16565b94506001600160a01b038a16610c9757610c92338661131f565b610cb1565b610cb16001600160a01b038b16338763ffffffff61140416565b50505050979650505050505050565b60046020526000908152604090205460ff1681565b610cdd6110c8565b610d1c576040805162461bcd60e51b81526020600482018190526024820152600080516020611f64833981519152604482015290519081900360640190fd5b6064811115610d72576040805162461bcd60e51b815260206004820152601a60248201527f476f6f6457696c6c2056616c7565206e6f7420616c6c6f776564000000000000604482015290519081900360640190fd5b600255565b60025481565b610d856110c8565b610dc4576040805162461bcd60e51b81526020600482018190526024820152600080516020611f64833981519152604482015290519081900360640190fd5b60005b81811015610f7b57600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee848484818110610df257fe5b905060200201356001600160a01b03166001600160a01b03161415610e8457610e6460066000868686818110610e2457fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002054476112dd90919063ffffffff16565b9050610e7f610e79610e746110b9565b611859565b8261131f565b610f72565b610f5860066000868686818110610e9757fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002054858585818110610ed457fe5b604080516370a0823160e01b81523060048201529051602092830294909401356001600160a01b0316936370a08231935060248083019392829003018186803b158015610f2057600080fd5b505afa158015610f34573d6000803e3d6000fd5b505050506040513d6020811015610f4a57600080fd5b50519063ffffffff6112dd16565b9050610f72610f656110b9565b8286868681811061095e57fe5b50600101610dc7565b505050565b610f886110c8565b610fc7576040805162461bcd60e51b81526020600482018190526024820152600080516020611f64833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600054600160a01b900460ff1681565b60006110b0670de0b6b3a76400006110a4856001600160a01b031663ec1ebd7a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561106b57600080fd5b505afa15801561107f573d6000803e3d6000fd5b505050506040513d602081101561109557600080fd5b5051859063ffffffff61186016565b9063ffffffff6118b916565b90505b92915050565b6000546001600160a01b031690565b600080546001600160a01b03166110dd6118fb565b6001600160a01b031614905090565b6110f46110c8565b611133576040805162461bcd60e51b81526020600482018190526024820152600080516020611f64833981519152604482015290519081900360640190fd5b82811461117e576040805162461bcd60e51b8152602060048201526014602482015273092dcecc2d8d2c84092dce0eae840d8cadccee8d60631b604482015290519081900360640190fd5b60005b838110156111e75782828281811061119557fe5b905060200201351515600760008787858181106111ae57fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff1916911515919091179055600101611181565b5050505050565b60076020526000908152604090205460ff1681565b60016020526000908152604090205460ff1681565b6112206110c8565b61125f576040805162461bcd60e51b81526020600482018190526024820152600080516020611f64833981519152604482015290519081900360640190fd5b611268816118ff565b50565b6112736110c8565b6112b2576040805162461bcd60e51b81526020600482018190526024820152600080516020611f64833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600160205260409020805460ff1916911515919091179055565b60006110b083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061199f565b80471015611374576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d80600081146113bf576040519150601f19603f3d011682016040523d82523d6000602084013e6113c4565b606091505b5050905080610f7b5760405162461bcd60e51b815260040180806020018281038252603a815260200180611ee8603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610f7b908490611a36565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261098e908590611a36565b6000806114bc83611bee565b9050846001600160a01b0316632e1a7d4d856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561150457600080fd5b505af1158015611518573d6000803e3d6000fd5b505050506115358161152985611bee565b9063ffffffff6112dd16565b95945050505050565b600080856001600160a01b0316876001600160a01b031614156115645784915050611535565b6001600160a01b038716611579575083611584565b611584878587611c7d565b600061158f87611bee565b90506000856001600160a01b031683866040518082805190602001908083835b602083106115ce5780518252601f1990920191602091820191016115af565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611630576040519150601f19603f3d011682016040523d82523d6000602084013e611635565b606091505b505090508061168b576040805162461bcd60e51b815260206004820152601760248201527f4572726f72205377617070696e6720546f6b656e732031000000000000000000604482015290519081900360640190fd5b600061169689611bee565b9050600081116116ed576040805162461bcd60e51b815260206004820152601b60248201527f4552523a205377617070656420746f2077726f6e6720746f6b656e0000000000604482015290519081900360640190fd5b6116fd818463ffffffff6112dd16565b9a9950505050505050505050565b3360009081526001602052604081205460ff16828015611729575080155b801561173757506000600254115b156118505761175361174b86600254611860565b6127106118b9565b6001600160a01b03851660009081526004602052604090205490925060ff1615611850576001600160a01b03861661179d5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee95505b60006117b960646110a46003548661186090919063ffffffff16565b6001600160a01b038087166000908152600560209081526040808320938c16835292905220549091506117f2908263ffffffff611cb316565b6001600160a01b038087166000908152600560209081526040808320938c168352928152828220939093556006909252902054611835908263ffffffff611cb316565b6001600160a01b038816600090815260066020526040902055505b50949350505050565b805b919050565b60008261186f575060006110b3565b8282028284828161187c57fe5b04146110b05760405162461bcd60e51b8152600401808060200182810382526021815260200180611f226021913960400191505060405180910390fd5b60006110b083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d0d565b3390565b6001600160a01b0381166119445760405162461bcd60e51b8152600401808060200182810382526026815260200180611ec26026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008184841115611a2e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156119f35781810151838201526020016119db565b50505050905090810190601f168015611a205780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b611a48826001600160a01b0316611d72565b611a99576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611ad75780518252601f199092019160209182019101611ab8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611b39576040519150601f19603f3d011682016040523d82523d6000602084013e611b3e565b606091505b509150915081611b95576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561098e57808060200190516020811015611bb157600080fd5b505161098e5760405162461bcd60e51b815260040180806020018281038252602a815260200180611f84602a913960400191505060405180910390fd5b60006001600160a01b038216611c0557504761185b565b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b158015611c4b57600080fd5b505afa158015611c5f573d6000803e3d6000fd5b505050506040513d6020811015611c7557600080fd5b505192915050565b82611c996001600160a01b03821684600063ffffffff611dae16565b61098e6001600160a01b038216848463ffffffff611dae16565b6000828201838110156110b0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008183611d5c5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156119f35781810151838201526020016119db565b506000838581611d6857fe5b0495945050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590611da657508115155b949350505050565b801580611e34575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b158015611e0657600080fd5b505afa158015611e1a573d6000803e3d6000fd5b505050506040513d6020811015611e3057600080fd5b5051155b611e6f5760405162461bcd60e51b8152600401808060200182810382526036815260200180611fae6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052610f7b908490611a3656fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77416666696c696174652053706c69742056616c7565206e6f7420616c6c6f7765644f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a72315820d56ac4cd6a08672db631241c46a014044bf8103152d6e58e061857c8680a68af64736f6c6343000511003200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x60806040526004361061012a5760003560e01c80635ecb16cd116100ab5780638f32d59b1161006f5780638f32d59b146105745780639735a634146105895780639779d1a614610654578063d408f65714610687578063f2fde38b146106ba578063fbec27bf146106ed5761012a565b80635ecb16cd14610465578063715018a6146104e057806375f12b21146104f55780637ee992831461050a5780638da5cb5b146105435761012a565b80633ff428c7116100f25780633ff428c7146102bb57806346d4b548146102f65780634f51e294146103df578063550bfa56146104265780635de0398e146104505761012a565b806301e980d4146101815780630dc9de85146101ab5780631385d24c146102265780631781261f1461023b57806318b135e314610288575b3332141561017f576040805162461bcd60e51b815260206004820152601860248201527f446f206e6f742073656e6420455448206469726563746c790000000000000000604482015290519081900360640190fd5b005b34801561018d57600080fd5b5061017f600480360360208110156101a457600080fd5b5035610728565b3480156101b757600080fd5b5061017f600480360360208110156101ce57600080fd5b810190602081018135600160201b8111156101e857600080fd5b8201836020820111156101fa57600080fd5b803590602001918460208302840111600160201b8311171561021b57600080fd5b5090925090506107b4565b34801561023257600080fd5b5061017f610994565b34801561024757600080fd5b506102766004803603604081101561025e57600080fd5b506001600160a01b03813581169160200135166109fc565b60408051918252519081900360200190f35b34801561029457600080fd5b50610276600480360360208110156102ab57600080fd5b50356001600160a01b0316610a19565b3480156102c757600080fd5b5061017f600480360360408110156102de57600080fd5b506001600160a01b0381351690602001351515610a2b565b34801561030257600080fd5b50610276600480360360e081101561031957600080fd5b6001600160a01b038235811692602081013592604082013583169260608301359260808101359091169181019060c0810160a0820135600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460018302840111600160201b8311171561039357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505090356001600160a01b03169150610a9d9050565b3480156103eb57600080fd5b506104126004803603602081101561040257600080fd5b50356001600160a01b0316610cc0565b604080519115158252519081900360200190f35b34801561043257600080fd5b5061017f6004803603602081101561044957600080fd5b5035610cd5565b34801561045c57600080fd5b50610276610d77565b34801561047157600080fd5b5061017f6004803603602081101561048857600080fd5b810190602081018135600160201b8111156104a257600080fd5b8201836020820111156104b457600080fd5b803590602001918460208302840111600160201b831117156104d557600080fd5b509092509050610d7d565b3480156104ec57600080fd5b5061017f610f80565b34801561050157600080fd5b50610412611011565b34801561051657600080fd5b506102766004803603604081101561052d57600080fd5b506001600160a01b038135169060200135611021565b34801561054f57600080fd5b506105586110b9565b604080516001600160a01b039092168252519081900360200190f35b34801561058057600080fd5b506104126110c8565b34801561059557600080fd5b5061017f600480360360408110156105ac57600080fd5b810190602081018135600160201b8111156105c657600080fd5b8201836020820111156105d857600080fd5b803590602001918460208302840111600160201b831117156105f957600080fd5b919390929091602081019035600160201b81111561061657600080fd5b82018360208201111561062857600080fd5b803590602001918460208302840111600160201b8311171561064957600080fd5b5090925090506110ec565b34801561066057600080fd5b506104126004803603602081101561067757600080fd5b50356001600160a01b03166111ee565b34801561069357600080fd5b50610412600480360360208110156106aa57600080fd5b50356001600160a01b0316611203565b3480156106c657600080fd5b5061017f600480360360208110156106dd57600080fd5b50356001600160a01b0316611218565b3480156106f957600080fd5b5061017f6004803603604081101561071057600080fd5b506001600160a01b038135169060200135151561126b565b6107306110c8565b61076f576040805162461bcd60e51b81526020600482018190526024820152600080516020611f64833981519152604482015290519081900360640190fd5b60648111156107af5760405162461bcd60e51b8152600401808060200182810382526021815260200180611f436021913960400191505060405180910390fd5b600355565b6000805b8281101561098e57336000908152600560205260408120908585848181106107dc57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020549150600060056000336001600160a01b03166001600160a01b03168152602001908152602001600020600086868581811061084457fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020819055506108cb826006600087878681811061088c57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546112dd90919063ffffffff16565b600660008686858181106108db57fe5b602090810292909201356001600160a01b03168352508101919091526040016000205573eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee84848381811061091f57fe5b905060200201356001600160a01b03166001600160a01b0316141561094d57610948338361131f565b610986565b610986338386868581811061095e57fe5b905060200201356001600160a01b03166001600160a01b03166114049092919063ffffffff16565b6001016107b8565b50505050565b61099c6110c8565b6109db576040805162461bcd60e51b81526020600482018190526024820152600080516020611f64833981519152604482015290519081900360640190fd5b6000805460ff60a01b198116600160a01b9182900460ff1615909102179055565b600560209081526000928352604080842090915290825290205481565b60066020526000908152604090205481565b610a336110c8565b610a72576040805162461bcd60e51b81526020600482018190526024820152600080516020611f64833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b60008054600160a01b900460ff1615610af2576040805162461bcd60e51b815260206004820152601260248201527115195b5c1bdc985c9a5b1e4814185d5cd95960721b604482015290519081900360640190fd5b6001600160a01b03841660009081526007602052604090205460ff1680610b2057506001600160a01b038416155b610b69576040805162461bcd60e51b815260206004820152601560248201527415185c99d95d081b9bdd08105d5d1a1bdc9a5e9959605a1b604482015290519081900360640190fd5b610b846001600160a01b03891633308a63ffffffff61145616565b6000886001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015610bbf57600080fd5b505afa158015610bd3573d6000803e3d6000fd5b505050506040513d6020811015610be957600080fd5b505190506000610bfa8a8a846114b0565b90506000610c0b838a848a8a61153e565b905087811015610c57576040805162461bcd60e51b81526020600482015260126024820152714572723a204869676820536c69707061676560701b604482015290519081900360640190fd5b6000610c668a8388600161170b565b9050610c78828263ffffffff6112dd16565b94506001600160a01b038a16610c9757610c92338661131f565b610cb1565b610cb16001600160a01b038b16338763ffffffff61140416565b50505050979650505050505050565b60046020526000908152604090205460ff1681565b610cdd6110c8565b610d1c576040805162461bcd60e51b81526020600482018190526024820152600080516020611f64833981519152604482015290519081900360640190fd5b6064811115610d72576040805162461bcd60e51b815260206004820152601a60248201527f476f6f6457696c6c2056616c7565206e6f7420616c6c6f776564000000000000604482015290519081900360640190fd5b600255565b60025481565b610d856110c8565b610dc4576040805162461bcd60e51b81526020600482018190526024820152600080516020611f64833981519152604482015290519081900360640190fd5b60005b81811015610f7b57600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee848484818110610df257fe5b905060200201356001600160a01b03166001600160a01b03161415610e8457610e6460066000868686818110610e2457fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002054476112dd90919063ffffffff16565b9050610e7f610e79610e746110b9565b611859565b8261131f565b610f72565b610f5860066000868686818110610e9757fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002054858585818110610ed457fe5b604080516370a0823160e01b81523060048201529051602092830294909401356001600160a01b0316936370a08231935060248083019392829003018186803b158015610f2057600080fd5b505afa158015610f34573d6000803e3d6000fd5b505050506040513d6020811015610f4a57600080fd5b50519063ffffffff6112dd16565b9050610f72610f656110b9565b8286868681811061095e57fe5b50600101610dc7565b505050565b610f886110c8565b610fc7576040805162461bcd60e51b81526020600482018190526024820152600080516020611f64833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600054600160a01b900460ff1681565b60006110b0670de0b6b3a76400006110a4856001600160a01b031663ec1ebd7a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561106b57600080fd5b505afa15801561107f573d6000803e3d6000fd5b505050506040513d602081101561109557600080fd5b5051859063ffffffff61186016565b9063ffffffff6118b916565b90505b92915050565b6000546001600160a01b031690565b600080546001600160a01b03166110dd6118fb565b6001600160a01b031614905090565b6110f46110c8565b611133576040805162461bcd60e51b81526020600482018190526024820152600080516020611f64833981519152604482015290519081900360640190fd5b82811461117e576040805162461bcd60e51b8152602060048201526014602482015273092dcecc2d8d2c84092dce0eae840d8cadccee8d60631b604482015290519081900360640190fd5b60005b838110156111e75782828281811061119557fe5b905060200201351515600760008787858181106111ae57fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff1916911515919091179055600101611181565b5050505050565b60076020526000908152604090205460ff1681565b60016020526000908152604090205460ff1681565b6112206110c8565b61125f576040805162461bcd60e51b81526020600482018190526024820152600080516020611f64833981519152604482015290519081900360640190fd5b611268816118ff565b50565b6112736110c8565b6112b2576040805162461bcd60e51b81526020600482018190526024820152600080516020611f64833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600160205260409020805460ff1916911515919091179055565b60006110b083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061199f565b80471015611374576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b6040516000906001600160a01b0384169083908381818185875af1925050503d80600081146113bf576040519150601f19603f3d011682016040523d82523d6000602084013e6113c4565b606091505b5050905080610f7b5760405162461bcd60e51b815260040180806020018281038252603a815260200180611ee8603a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610f7b908490611a36565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905261098e908590611a36565b6000806114bc83611bee565b9050846001600160a01b0316632e1a7d4d856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561150457600080fd5b505af1158015611518573d6000803e3d6000fd5b505050506115358161152985611bee565b9063ffffffff6112dd16565b95945050505050565b600080856001600160a01b0316876001600160a01b031614156115645784915050611535565b6001600160a01b038716611579575083611584565b611584878587611c7d565b600061158f87611bee565b90506000856001600160a01b031683866040518082805190602001908083835b602083106115ce5780518252601f1990920191602091820191016115af565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611630576040519150601f19603f3d011682016040523d82523d6000602084013e611635565b606091505b505090508061168b576040805162461bcd60e51b815260206004820152601760248201527f4572726f72205377617070696e6720546f6b656e732031000000000000000000604482015290519081900360640190fd5b600061169689611bee565b9050600081116116ed576040805162461bcd60e51b815260206004820152601b60248201527f4552523a205377617070656420746f2077726f6e6720746f6b656e0000000000604482015290519081900360640190fd5b6116fd818463ffffffff6112dd16565b9a9950505050505050505050565b3360009081526001602052604081205460ff16828015611729575080155b801561173757506000600254115b156118505761175361174b86600254611860565b6127106118b9565b6001600160a01b03851660009081526004602052604090205490925060ff1615611850576001600160a01b03861661179d5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee95505b60006117b960646110a46003548661186090919063ffffffff16565b6001600160a01b038087166000908152600560209081526040808320938c16835292905220549091506117f2908263ffffffff611cb316565b6001600160a01b038087166000908152600560209081526040808320938c168352928152828220939093556006909252902054611835908263ffffffff611cb316565b6001600160a01b038816600090815260066020526040902055505b50949350505050565b805b919050565b60008261186f575060006110b3565b8282028284828161187c57fe5b04146110b05760405162461bcd60e51b8152600401808060200182810382526021815260200180611f226021913960400191505060405180910390fd5b60006110b083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d0d565b3390565b6001600160a01b0381166119445760405162461bcd60e51b8152600401808060200182810382526026815260200180611ec26026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008184841115611a2e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156119f35781810151838201526020016119db565b50505050905090810190601f168015611a205780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b611a48826001600160a01b0316611d72565b611a99576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611ad75780518252601f199092019160209182019101611ab8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611b39576040519150601f19603f3d011682016040523d82523d6000602084013e611b3e565b606091505b509150915081611b95576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561098e57808060200190516020811015611bb157600080fd5b505161098e5760405162461bcd60e51b815260040180806020018281038252602a815260200180611f84602a913960400191505060405180910390fd5b60006001600160a01b038216611c0557504761185b565b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b158015611c4b57600080fd5b505afa158015611c5f573d6000803e3d6000fd5b505050506040513d6020811015611c7557600080fd5b505192915050565b82611c996001600160a01b03821684600063ffffffff611dae16565b61098e6001600160a01b038216848463ffffffff611dae16565b6000828201838110156110b0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008183611d5c5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156119f35781810151838201526020016119db565b506000838581611d6857fe5b0495945050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590611da657508115155b949350505050565b801580611e34575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b158015611e0657600080fd5b505afa158015611e1a573d6000803e3d6000fd5b505050506040513d6020811015611e3057600080fd5b5051155b611e6f5760405162461bcd60e51b8152600401808060200182810382526036815260200180611fae6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052610f7b908490611a3656fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77416666696c696174652053706c69742056616c7565206e6f7420616c6c6f7765644f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a72315820d56ac4cd6a08672db631241c46a014044bf8103152d6e58e061857c8680a68af64736f6c63430005110032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _goodwill (uint256): 0
Arg [1] : _affiliateSplit (uint256): 0
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
27740:4508:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26221:10;26235:9;26221:23;;26213:60;;;;;-1:-1:-1;;;26213:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;27740:4508;24310:278;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24310:278:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24310:278:0;;:::i;25552:614::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25552:614:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25552:614:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;25552:614:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;25552:614:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;25552:614:0;;-1:-1:-1;25552:614:0;-1:-1:-1;25552:614:0;:::i;23809:86::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23809:86:0;;;:::i;22347:71::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22347:71:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;22347:71:0;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;22449:56;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22449:56:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22449:56:0;-1:-1:-1;;;;;22449:56:0;;:::i;24596:150::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24596:150:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;24596:150:0;;;;;;;;;;:::i;28691:1450::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28691:1450:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;28691:1450:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;28691:1450:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;28691:1450:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;28691:1450:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;28691:1450:0;;-1:-1:-1;;;28691:1450:0;;-1:-1:-1;;;;;28691:1450:0;;-1:-1:-1;28691:1450:0;;-1:-1:-1;28691:1450:0:i;22261:42::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22261:42:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22261:42:0;-1:-1:-1;;;;;22261:42:0;;:::i;:::-;;;;;;;;;;;;;;;;;;24064:238;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24064:238:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24064:238:0;;:::i;22136:23::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22136:23:0;;;:::i;24822:654::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24822:654:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24822:654:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;24822:654:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;24822:654:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;24822:654:0;;-1:-1:-1;24822:654:0;-1:-1:-1;24822:654:0;:::i;4794:140::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4794:140:0;;;:::i;22005:27::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22005:27:0;;;:::i;31690:205::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31690:205:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;31690:205:0;;;;;;;;:::i;3983:79::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3983:79:0;;;:::i;:::-;;;;-1:-1:-1;;;;;3983:79:0;;;;;;;;;;;;;;4349:94;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4349:94:0;;;:::i;31903:342::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31903:342:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;31903:342:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;31903:342:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;31903:342:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;31903:342:0;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;31903:342:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;31903:342:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;31903:342:0;;-1:-1:-1;31903:342:0;-1:-1:-1;31903:342:0;:::i;27847:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27847:47:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;27847:47:0;-1:-1:-1;;;;;27847:47:0;;:::i;22083:44::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22083:44:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22083:44:0;-1:-1:-1;;;;;22083:44:0;;:::i;5089:109::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5089:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5089:109:0;-1:-1:-1;;;;;5089:109:0;;:::i;23903:153::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23903:153:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;23903:153:0;;;;;;;;;;:::i;24310:278::-;4195:9;:7;:9::i;:::-;4187:54;;;;;-1:-1:-1;;;4187:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4187:54:0;;;;;;;;;;;;;;;24469:3;24446:19;:26;;24424:109;;;;-1:-1:-1;;;24424:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24544:14;:36;24310:278::o;25552:614::-;25627:16;;25654:505;25674:17;;;25654:505;;;25741:10;25724:28;;;;:16;:28;;;;;;25753:6;;25760:1;25753:9;;;;;;;;;;;;;-1:-1:-1;;;;;25753:9:0;-1:-1:-1;;;;;25724:39:0;-1:-1:-1;;;;;25724:39:0;;;;;;;;;;;;;25713:50;;25820:1;25778:16;:28;25795:10;-1:-1:-1;;;;;25778:28:0;-1:-1:-1;;;;;25778:28:0;;;;;;;;;;;;:39;25807:6;;25814:1;25807:9;;;;;;;;;;;;;-1:-1:-1;;;;;25807:9:0;-1:-1:-1;;;;;25778:39:0;-1:-1:-1;;;;;25778:39:0;;;;;;;;;;;;:43;;;;25871:64;25926:8;25871:21;:32;25893:6;;25900:1;25893:9;;;;;;;;;;;;;-1:-1:-1;;;;;25893:9:0;-1:-1:-1;;;;;25871:32:0;-1:-1:-1;;;;;25871:32:0;;;;;;;;;;;;;:54;;:64;;;;:::i;:::-;25836:21;:32;25858:6;;25865:1;25858:9;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25858:9:0;25836:32;;-1:-1:-1;25836:32:0;;;;;;;;-1:-1:-1;25836:32:0;:99;22562:42;25956:6;;25963:1;25956:9;;;;;;;;;;;;;-1:-1:-1;;;;;25956:9:0;-1:-1:-1;;;;;25956:23:0;;25952:196;;;26000:39;26018:10;26030:8;26000:17;:39::i;:::-;25952:196;;;26080:52;26111:10;26123:8;26087:6;;26094:1;26087:9;;;;;;;;;;;;;-1:-1:-1;;;;;26087:9:0;-1:-1:-1;;;;;26080:30:0;;;:52;;;;;:::i;:::-;25693:3;;25654:505;;;;25552:614;;;:::o;23809:86::-;4195:9;:7;:9::i;:::-;4187:54;;;;;-1:-1:-1;;;4187:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4187:54:0;;;;;;;;;;;;;;;23880:7;;;-1:-1:-1;;;;23869:18:0;;-1:-1:-1;;;23880:7:0;;;;;;23879:8;23869:18;;;;;;23809:86::o;22347:71::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;22449:56::-;;;;;;;;;;;;;:::o;24596:150::-;4195:9;:7;:9::i;:::-;4187:54;;;;;-1:-1:-1;;;4187:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4187:54:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;24706:22:0;;;;;;;;:10;:22;;;;;:32;;-1:-1:-1;;24706:32:0;;;;;;;;;;24596:150::o;28691:1450::-;28944:22;22840:7;;-1:-1:-1;;;22840:7:0;;;;22836:102;;;22864:28;;;-1:-1:-1;;;22864:28:0;;;;;;;;;;;;-1:-1:-1;;;22864:28:0;;;;;;;;;;;;;;22836:102;-1:-1:-1;;;;;29001:27:0;;;;;;:15;:27;;;;;;;;;:55;;-1:-1:-1;;;;;;29032:24:0;;;29001:55;28979:126;;;;;-1:-1:-1;;;28979:126:0;;;;;;;;;;;;-1:-1:-1;;;28979:126:0;;;;;;;;;;;;;;;29118:69;-1:-1:-1;;;;;29118:32:0;;29151:10;29171:4;29178:8;29118:69;:32;:69;:::i;:::-;29247:23;29284:7;-1:-1:-1;;;;;29273:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29273:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29273:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29273:27:0;;-1:-1:-1;29311:31:0;29358:48;29371:7;29380:8;29273:27;29358:12;:48::i;:::-;29311:95;;29447:18;29481:183;29510:15;29544:7;29570:23;29612:10;29641:8;29481:10;:183::i;:::-;29447:217;;29697:11;29683:10;:25;;29675:56;;;;;-1:-1:-1;;;29675:56:0;;;;;;;;;;;;-1:-1:-1;;;29675:56:0;;;;;;;;;;;;;;;29744:28;29788:55;29806:7;29815:10;29827:9;29838:4;29788:17;:55::i;:::-;29744:99;-1:-1:-1;29871:36:0;:10;29744:99;29871:36;:14;:36;:::i;:::-;29854:53;-1:-1:-1;;;;;;29950:21:0;;29946:188;;29988:45;30006:10;30018:14;29988:17;:45::i;:::-;29946:188;;;30066:56;-1:-1:-1;;;;;30066:28:0;;30095:10;30107:14;30066:56;:28;:56;:::i;:::-;22925:1;;;;28691:1450;;;;;;;;;:::o;22261:42::-;;;;;;;;;;;;;;;:::o;24064:238::-;4195:9;:7;:9::i;:::-;4187:54;;;;;-1:-1:-1;;;4187:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4187:54:0;;;;;;;;;;;;;;;24202:3;24185:13;:20;;24141:118;;;;;-1:-1:-1;;;24141:118:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;24270:8;:24;24064:238::o;22136:23::-;;;;:::o;24822:654::-;4195:9;:7;:9::i;:::-;4187:54;;;;;-1:-1:-1;;;4187:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4187:54:0;;;;;;;;;;;;;;;24908:9;24903:566;24923:17;;;24903:566;;;24962:11;22562:42;24994:6;;25001:1;24994:9;;;;;;;;;;;;;-1:-1:-1;;;;;24994:9:0;-1:-1:-1;;;;;24994:23:0;;24990:468;;;25044:99;25092:21;:32;25114:6;;25121:1;25114:9;;;;;;;;;;;;;-1:-1:-1;;;;;25114:9:0;-1:-1:-1;;;;;25092:32:0;-1:-1:-1;;;;;25092:32:0;;;;;;;;;;;;;25044:21;:25;;:99;;;;:::i;:::-;25038:105;;25162:50;25180:26;25198:7;:5;:7::i;:::-;25180:17;:26::i;:::-;25208:3;25162:17;:50::i;:::-;24990:468;;;25259:120;25328:21;:32;25350:6;;25357:1;25350:9;;;;;;;;;;;;;-1:-1:-1;;;;;25350:9:0;-1:-1:-1;;;;;25328:32:0;-1:-1:-1;;;;;25328:32:0;;;;;;;;;;;;;25266:6;;25273:1;25266:9;;;;;;;25259:42;;;-1:-1:-1;;;25259:42:0;;25295:4;25259:42;;;;;;25266:9;;;;;;;;;-1:-1:-1;;;;;25266:9:0;;25259:27;;-1:-1:-1;25259:42:0;;;;;25266:9;25259:42;;;;;25266:9;25259:42;;;5:2:-1;;;;30:1;27;20:12;5:2;25259:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25259:42:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25259:42:0;;:120;:46;:120;:::i;:::-;25253:126;;25398:44;25429:7;:5;:7::i;:::-;25438:3;25405:6;;25412:1;25405:9;;;;;;25398:44;-1:-1:-1;24942:3:0;;24903:566;;;;24822:654;;:::o;4794:140::-;4195:9;:7;:9::i;:::-;4187:54;;;;;-1:-1:-1;;;4187:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4187:54:0;;;;;;;;;;;;;;;4893:1;4877:6;;4856:40;;-1:-1:-1;;;;;4877:6:0;;;;4856:40;;4893:1;;4856:40;4924:1;4907:19;;-1:-1:-1;;;;;;4907:19:0;;;4794:140::o;22005:27::-;;;-1:-1:-1;;;22005:27:0;;;;;:::o;31690:205::-;31810:7;31842:45;31882:4;31843:33;31857:7;-1:-1:-1;;;;;31857:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31857:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;31857:18:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;31857:18:0;31843:9;;:33;:13;:33;:::i;:::-;31842:39;:45;:39;:45;:::i;:::-;31835:52;;31690:205;;;;;:::o;3983:79::-;4021:7;4048:6;-1:-1:-1;;;;;4048:6:0;3983:79;:::o;4349:94::-;4389:4;4429:6;;-1:-1:-1;;;;;4429:6:0;4413:12;:10;:12::i;:::-;-1:-1:-1;;;;;4413:22:0;;4406:29;;4349:94;:::o;31903:342::-;4195:9;:7;:9::i;:::-;4187:54;;;;;-1:-1:-1;;;4187:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4187:54:0;;;;;;;;;;;;;;;32050:35;;;32042:68;;;;;-1:-1:-1;;;32042:68:0;;;;;;;;;;;;-1:-1:-1;;;32042:68:0;;;;;;;;;;;;;;;32128:9;32123:115;32143:18;;;32123:115;;;32213:10;;32224:1;32213:13;;;;;;;;;;;;;;;32183:15;:27;32199:7;;32207:1;32199:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;32199:10:0;32183:27;;-1:-1:-1;32183:27:0;;;;;;;;-1:-1:-1;32183:27:0;:43;;-1:-1:-1;;32183:43:0;;;;;;;;;;-1:-1:-1;32163:3:0;32123:115;;;;31903:342;;;;:::o;27847:47::-;;;;;;;;;;;;;;;:::o;22083:44::-;;;;;;;;;;;;;;;:::o;5089:109::-;4195:9;:7;:9::i;:::-;4187:54;;;;;-1:-1:-1;;;4187:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4187:54:0;;;;;;;;;;;;;;;5162:28;5181:8;5162:18;:28::i;:::-;5089:109;:::o;23903:153::-;4195:9;:7;:9::i;:::-;4187:54;;;;;-1:-1:-1;;;4187:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4187:54:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;24015:24:0;;;;;;;;:12;:24;;;;;:33;;-1:-1:-1;;24015:33:0;;;;;;;;;;23903:153::o;9955:136::-;10013:7;10040:43;10044:1;10047;10040:43;;;;;;;;;;;;;;;;;:3;:43::i;16948:445::-;17077:6;17052:21;:31;;17030:110;;;;;-1:-1:-1;;;17030:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;17227:32;;17209:12;;-1:-1:-1;;;;;17227:14:0;;;17248:6;;17209:12;17227:32;17209:12;17227:32;17248:6;17227:14;:32;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;17208:51:0;;;17292:7;17270:115;;;;-1:-1:-1;;;17270:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18026:247;18196:58;;;-1:-1:-1;;;;;18196:58:0;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;18196:58:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;18143:122:0;;18176:5;;18143:18;:122::i;18281:284::-;18478:68;;;-1:-1:-1;;;;;18478:68:0;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;18478:68:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;18425:132:0;;18458:5;;18425:18;:132::i;30149:367::-;30281:26;30320:24;30347:28;30359:15;30347:11;:28::i;:::-;30320:55;;30399:7;-1:-1:-1;;;;;30388:28:0;;30417:6;30388:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30388:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30388:36:0;;;;30458:50;30491:16;30458:28;30470:15;30458:11;:28::i;:::-;:32;:50;:32;:50;:::i;:::-;30437:71;30149:367;-1:-1:-1;;;;;30149:367:0:o;30524:874::-;30723:17;30753:19;30810:7;-1:-1:-1;;;;;30789:28:0;:17;-1:-1:-1;;;;;30789:28:0;;30785:75;;;30841:7;30834:14;;;;;30785:75;-1:-1:-1;;;;;30876:31:0;;30872:172;;-1:-1:-1;30938:7:0;30872:172;;;30978:54;30992:17;31011:11;31024:7;30978:13;:54::i;:::-;31056:14;31073:20;31085:7;31073:11;:20::i;:::-;31056:37;;31107:12;31125:11;-1:-1:-1;;;;;31125:16:0;31148:11;31161:12;31125:49;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;31125:49:0;;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;31106:68:0;;;31193:7;31185:43;;;;;-1:-1:-1;;;31185:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;31241:16;31260:20;31272:7;31260:11;:20::i;:::-;31241:39;;31312:1;31301:8;:12;31293:52;;;;;-1:-1:-1;;;31293:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;31370:20;:8;31383:6;31370:20;:12;:20;:::i;:::-;31358:32;30524:874;-1:-1:-1;;;;;;;;;;30524:874:0:o;26402:1058::-;26634:10;26561:28;26621:24;;;:12;:24;;;;;;;;26660:14;:30;;;;;26679:11;26678:12;26660:30;:46;;;;;26705:1;26694:8;;:12;26660:46;26656:797;;;26746:100;26777:30;26790:6;26798:8;;26777:12;:30::i;:::-;26826:5;26746:12;:100::i;:::-;-1:-1:-1;;;;;26867:21:0;;;;;;:10;:21;;;;;;26723:123;;-1:-1:-1;26867:21:0;;26863:579;;;-1:-1:-1;;;;;26913:19:0;;26909:86;;22562:42;26957:18;;26909:86;27015:24;27063:49;27108:3;27063:40;27088:14;;27063:20;:24;;:40;;;;:::i;:49::-;-1:-1:-1;;;;;27168:67:0;;;;;;;:16;:67;;;;;;;;:74;;;;;;;;;;27015:97;;-1:-1:-1;27168:118:0;;27015:97;27168:118;:100;:118;:::i;:::-;-1:-1:-1;;;;;27131:27:0;;;;;;;:16;:27;;;;;;;;:34;;;;;;;;;;;:155;;;;27336:21;:28;;;;;;:90;;27391:16;27336:90;:32;:90;:::i;:::-;-1:-1:-1;;;;;27305:28:0;;;;;;:21;:28;;;;;:121;-1:-1:-1;26863:579:0;26402:1058;;;;;;;:::o;15812:159::-;15954:7;15812:159;;;;:::o;10905:471::-;10963:7;11208:6;11204:47;;-1:-1:-1;11238:1:0;11231:8;;11204:47;11275:5;;;11279:1;11275;:5;:1;11299:5;;;;;:10;11291:56;;;;-1:-1:-1;;;11291:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11844:132;11902:7;11929:39;11933:1;11936;11929:39;;;;;;;;;;;;;;;;;:3;:39::i;2686:98::-;2766:10;2686:98;:::o;5304:266::-;-1:-1:-1;;;;;5392:22:0;;5370:110;;;;-1:-1:-1;;;5370:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5517:6;;;5496:38;;-1:-1:-1;;;;;5496:38:0;;;;5517:6;;;5496:38;;;5545:6;:17;;-1:-1:-1;;;;;;5545:17:0;-1:-1:-1;;;;;5545:17:0;;;;;;;;;;5304:266::o;10428:226::-;10548:7;10584:12;10576:6;;;;10568:29;;;;-1:-1:-1;;;10568:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;10568:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10620:5:0;;;10428:226::o;20650:1176::-;21254:27;21262:5;-1:-1:-1;;;;;21254:25:0;;:27::i;:::-;21246:71;;;;;-1:-1:-1;;;21246:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;21391:12;21405:23;21440:5;-1:-1:-1;;;;;21432:19:0;21452:4;21432:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;21432:25:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;21390:67:0;;;;21476:7;21468:52;;;;;-1:-1:-1;;;21468:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21537:17;;:21;21533:286;;21710:10;21699:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21699:30:0;21673:134;;;;-1:-1:-1;;;21673:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22953:290;23039:15;-1:-1:-1;;;;;23076:19:0;;23072:164;;-1:-1:-1;23122:21:0;23072:164;;;23186:38;;;-1:-1:-1;;;23186:38:0;;23218:4;23186:38;;;;;;-1:-1:-1;;;;;23186:23:0;;;;;:38;;;;;;;;;;;;;;:23;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;23186:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23186:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23186:38:0;;22953:290;-1:-1:-1;;22953:290:0:o;23520:249::-;23668:5;23685:30;-1:-1:-1;;;;;23685:18:0;;23704:7;23645:13;23685:30;:18;:30;:::i;:::-;23726:35;-1:-1:-1;;;;;23726:18:0;;23745:7;23754:6;23726:35;:18;:35;:::i;9499:181::-;9557:7;9589:5;;;9613:6;;;;9605:46;;;;;-1:-1:-1;;;9605:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;12506:379;12626:7;12728:12;12721:5;12713:28;;;;-1:-1:-1;;;12713:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;12713:28:0;;12752:9;12768:1;12764;:5;;;;;;;12506:379;-1:-1:-1;;;;;12506:379:0:o;14939:656::-;14999:4;15495:20;;15325:66;15544:23;;;;;;:42;;-1:-1:-1;15571:15:0;;;15544:42;15536:51;14939:656;-1:-1:-1;;;;14939:656:0:o;18573:706::-;18991:10;;;18990:62;;-1:-1:-1;19007:39:0;;;-1:-1:-1;;;19007:39:0;;19031:4;19007:39;;;;-1:-1:-1;;;;;19007:39:0;;;;;;;;;:15;;;;;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;19007:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19007:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19007:39:0;:44;18990:62;18968:166;;;;-1:-1:-1;;;18968:166:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19198:62;;;-1:-1:-1;;;;;19198:62:0;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;19198:62:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;19145:126:0;;19178:5;;19145:18;:126::i
Swarm Source
bzzr://d56ac4cd6a08672db631241c46a014044bf8103152d6e58e061857c8680a68af
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 25 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.