Feature Tip: Add private address tag to any address under My Name Tag !
Overview
Max Total Supply
0
Holders
0
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Payout
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-12-10 */ // File: contracts/Payout.sol pragma solidity ^0.8.7; contract Payout { address private owner; address[] private spenders; modifier isOwner(){ require(msg.sender == owner, "For Owner only"); _; } modifier isOwnerOrSpender(){ require(msg.sender == owner || isSpender(msg.sender), "For Owner or Spender only"); _; } function isSpender(address item) internal view returns (bool) { for (uint i=0; i<spenders.length; i++) { if (spenders[i]==item){ return true; } } return false; } constructor() { owner = msg.sender; } function setOwner(address newOwner) external isOwner { owner = newOwner; } function setSpenders(address[] calldata newSpenders) external isOwner { spenders = newSpenders; } function getOwner() external view returns (address) { return owner; } function getSpenders() external view returns (address[] memory) { return spenders; } function payoutERC20Batch(IERC20[] calldata tokens, address[] calldata recipients, uint[] calldata amounts) external isOwnerOrSpender { require(tokens.length == amounts.length && amounts.length == recipients.length, "Different arguments length"); for (uint i=0; i<tokens.length; i++) { SafeERC20.safeTransfer(tokens[i], recipients[i], amounts[i]); } } function payoutETHBatch(address payable[] calldata recipients, uint[] calldata amounts) external isOwnerOrSpender { require(recipients.length == amounts.length, "Different arguments length"); for (uint i=0; i<recipients.length; i++) { Address.sendValue(recipients[i], amounts[i]); } } receive() external payable { } } // File: @openzeppelin/contracts/utils/Address.sol pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File: @openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol pragma solidity ^0.8.0; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove( IERC20 token, address spender, uint256 value ) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' 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) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSpenders","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"payoutERC20Batch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"payoutETHBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"newSpenders","type":"address[]"}],"name":"setSpenders","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561001057600080fd5b50600080546001600160a01b03191633179055610ca3806100326000396000f3fe6080604052600436106100595760003560e01c806313af4035146100655780632228f3a41461008757806334323af8146100a75780633a27cb88146100d2578063893d20e8146100f2578063d407be851461011a57600080fd5b3661006057005b600080fd5b34801561007157600080fd5b5061008561008036600461098f565b61013a565b005b34801561009357600080fd5b506100856100a23660046109f8565b6101ac565b3480156100b357600080fd5b506100bc610300565b6040516100c99190610a92565b60405180910390f35b3480156100de57600080fd5b506100856100ed366004610adf565b610362565b3480156100fe57600080fd5b506000546040516001600160a01b0390911681526020016100c9565b34801561012657600080fd5b50610085610135366004610b21565b6103be565b6000546001600160a01b0316331461018a5760405162461bcd60e51b815260206004820152600e60248201526d466f72204f776e6572206f6e6c7960901b60448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314806101c957506101c9336104de565b6102115760405162461bcd60e51b8152602060048201526019602482015278466f72204f776e6572206f72205370656e646572206f6e6c7960381b6044820152606401610181565b848114801561021f57508083145b61026b5760405162461bcd60e51b815260206004820152601a60248201527f446966666572656e7420617267756d656e7473206c656e6774680000000000006044820152606401610181565b60005b858110156102f7576102e587878381811061028b5761028b610b8d565b90506020020160208101906102a0919061098f565b8686848181106102b2576102b2610b8d565b90506020020160208101906102c7919061098f565b8585858181106102d9576102d9610b8d565b90506020020135610548565b806102ef81610ba3565b91505061026e565b50505050505050565b6060600180548060200260200160405190810160405280929190818152602001828054801561035857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161033a575b5050505050905090565b6000546001600160a01b031633146103ad5760405162461bcd60e51b815260206004820152600e60248201526d466f72204f776e6572206f6e6c7960901b6044820152606401610181565b6103b9600183836108ff565b505050565b6000546001600160a01b03163314806103db57506103db336104de565b6104235760405162461bcd60e51b8152602060048201526019602482015278466f72204f776e6572206f72205370656e646572206f6e6c7960381b6044820152606401610181565b8281146104725760405162461bcd60e51b815260206004820152601a60248201527f446966666572656e7420617267756d656e7473206c656e6774680000000000006044820152606401610181565b60005b838110156104d7576104c585858381811061049257610492610b8d565b90506020020160208101906104a7919061098f565b8484848181106104b9576104b9610b8d565b9050602002013561059a565b806104cf81610ba3565b915050610475565b5050505050565b6000805b60015481101561053f57826001600160a01b03166001828154811061050957610509610b8d565b6000918252602090912001546001600160a01b0316141561052d5750600192915050565b8061053781610ba3565b9150506104e2565b50600092915050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526103b99084906106b3565b804710156105ea5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610181565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610637576040519150601f19603f3d011682016040523d82523d6000602084013e61063c565b606091505b50509050806103b95760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610181565b6000610708826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166107859092919063ffffffff16565b8051909150156103b957808060200190518101906107269190610bcc565b6103b95760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610181565b6060610794848460008561079e565b90505b9392505050565b6060824710156107ff5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610181565b843b61084d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610181565b600080866001600160a01b031685876040516108699190610c1e565b60006040518083038185875af1925050503d80600081146108a6576040519150601f19603f3d011682016040523d82523d6000602084013e6108ab565b606091505b50915091506108bb8282866108c6565b979650505050505050565b606083156108d5575081610797565b8251156108e55782518084602001fd5b8160405162461bcd60e51b81526004016101819190610c3a565b828054828255906000526020600020908101928215610952579160200282015b828111156109525781546001600160a01b0319166001600160a01b0384351617825560209092019160019091019061091f565b5061095e929150610962565b5090565b5b8082111561095e5760008155600101610963565b6001600160a01b038116811461098c57600080fd5b50565b6000602082840312156109a157600080fd5b813561079781610977565b60008083601f8401126109be57600080fd5b50813567ffffffffffffffff8111156109d657600080fd5b6020830191508360208260051b85010111156109f157600080fd5b9250929050565b60008060008060008060608789031215610a1157600080fd5b863567ffffffffffffffff80821115610a2957600080fd5b610a358a838b016109ac565b90985096506020890135915080821115610a4e57600080fd5b610a5a8a838b016109ac565b90965094506040890135915080821115610a7357600080fd5b50610a8089828a016109ac565b979a9699509497509295939492505050565b6020808252825182820181905260009190848201906040850190845b81811015610ad35783516001600160a01b031683529284019291840191600101610aae565b50909695505050505050565b60008060208385031215610af257600080fd5b823567ffffffffffffffff811115610b0957600080fd5b610b15858286016109ac565b90969095509350505050565b60008060008060408587031215610b3757600080fd5b843567ffffffffffffffff80821115610b4f57600080fd5b610b5b888389016109ac565b90965094506020870135915080821115610b7457600080fd5b50610b81878288016109ac565b95989497509550505050565b634e487b7160e01b600052603260045260246000fd5b6000600019821415610bc557634e487b7160e01b600052601160045260246000fd5b5060010190565b600060208284031215610bde57600080fd5b8151801515811461079757600080fd5b60005b83811015610c09578181015183820152602001610bf1565b83811115610c18576000848401525b50505050565b60008251610c30818460208701610bee565b9190910192915050565b6020815260008251806020840152610c59816040850160208701610bee565b601f01601f1916919091016040019291505056fea2646970667358221220819136adfca0753f09101d77e092d8e4004ba63a21547db841079d9bd447642964736f6c634300080a0033
Deployed Bytecode
0x6080604052600436106100595760003560e01c806313af4035146100655780632228f3a41461008757806334323af8146100a75780633a27cb88146100d2578063893d20e8146100f2578063d407be851461011a57600080fd5b3661006057005b600080fd5b34801561007157600080fd5b5061008561008036600461098f565b61013a565b005b34801561009357600080fd5b506100856100a23660046109f8565b6101ac565b3480156100b357600080fd5b506100bc610300565b6040516100c99190610a92565b60405180910390f35b3480156100de57600080fd5b506100856100ed366004610adf565b610362565b3480156100fe57600080fd5b506000546040516001600160a01b0390911681526020016100c9565b34801561012657600080fd5b50610085610135366004610b21565b6103be565b6000546001600160a01b0316331461018a5760405162461bcd60e51b815260206004820152600e60248201526d466f72204f776e6572206f6e6c7960901b60448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314806101c957506101c9336104de565b6102115760405162461bcd60e51b8152602060048201526019602482015278466f72204f776e6572206f72205370656e646572206f6e6c7960381b6044820152606401610181565b848114801561021f57508083145b61026b5760405162461bcd60e51b815260206004820152601a60248201527f446966666572656e7420617267756d656e7473206c656e6774680000000000006044820152606401610181565b60005b858110156102f7576102e587878381811061028b5761028b610b8d565b90506020020160208101906102a0919061098f565b8686848181106102b2576102b2610b8d565b90506020020160208101906102c7919061098f565b8585858181106102d9576102d9610b8d565b90506020020135610548565b806102ef81610ba3565b91505061026e565b50505050505050565b6060600180548060200260200160405190810160405280929190818152602001828054801561035857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161033a575b5050505050905090565b6000546001600160a01b031633146103ad5760405162461bcd60e51b815260206004820152600e60248201526d466f72204f776e6572206f6e6c7960901b6044820152606401610181565b6103b9600183836108ff565b505050565b6000546001600160a01b03163314806103db57506103db336104de565b6104235760405162461bcd60e51b8152602060048201526019602482015278466f72204f776e6572206f72205370656e646572206f6e6c7960381b6044820152606401610181565b8281146104725760405162461bcd60e51b815260206004820152601a60248201527f446966666572656e7420617267756d656e7473206c656e6774680000000000006044820152606401610181565b60005b838110156104d7576104c585858381811061049257610492610b8d565b90506020020160208101906104a7919061098f565b8484848181106104b9576104b9610b8d565b9050602002013561059a565b806104cf81610ba3565b915050610475565b5050505050565b6000805b60015481101561053f57826001600160a01b03166001828154811061050957610509610b8d565b6000918252602090912001546001600160a01b0316141561052d5750600192915050565b8061053781610ba3565b9150506104e2565b50600092915050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526103b99084906106b3565b804710156105ea5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610181565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610637576040519150601f19603f3d011682016040523d82523d6000602084013e61063c565b606091505b50509050806103b95760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610181565b6000610708826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166107859092919063ffffffff16565b8051909150156103b957808060200190518101906107269190610bcc565b6103b95760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610181565b6060610794848460008561079e565b90505b9392505050565b6060824710156107ff5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610181565b843b61084d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610181565b600080866001600160a01b031685876040516108699190610c1e565b60006040518083038185875af1925050503d80600081146108a6576040519150601f19603f3d011682016040523d82523d6000602084013e6108ab565b606091505b50915091506108bb8282866108c6565b979650505050505050565b606083156108d5575081610797565b8251156108e55782518084602001fd5b8160405162461bcd60e51b81526004016101819190610c3a565b828054828255906000526020600020908101928215610952579160200282015b828111156109525781546001600160a01b0319166001600160a01b0384351617825560209092019160019091019061091f565b5061095e929150610962565b5090565b5b8082111561095e5760008155600101610963565b6001600160a01b038116811461098c57600080fd5b50565b6000602082840312156109a157600080fd5b813561079781610977565b60008083601f8401126109be57600080fd5b50813567ffffffffffffffff8111156109d657600080fd5b6020830191508360208260051b85010111156109f157600080fd5b9250929050565b60008060008060008060608789031215610a1157600080fd5b863567ffffffffffffffff80821115610a2957600080fd5b610a358a838b016109ac565b90985096506020890135915080821115610a4e57600080fd5b610a5a8a838b016109ac565b90965094506040890135915080821115610a7357600080fd5b50610a8089828a016109ac565b979a9699509497509295939492505050565b6020808252825182820181905260009190848201906040850190845b81811015610ad35783516001600160a01b031683529284019291840191600101610aae565b50909695505050505050565b60008060208385031215610af257600080fd5b823567ffffffffffffffff811115610b0957600080fd5b610b15858286016109ac565b90969095509350505050565b60008060008060408587031215610b3757600080fd5b843567ffffffffffffffff80821115610b4f57600080fd5b610b5b888389016109ac565b90965094506020870135915080821115610b7457600080fd5b50610b81878288016109ac565b95989497509550505050565b634e487b7160e01b600052603260045260246000fd5b6000600019821415610bc557634e487b7160e01b600052601160045260246000fd5b5060010190565b600060208284031215610bde57600080fd5b8151801515811461079757600080fd5b60005b83811015610c09578181015183820152602001610bf1565b83811115610c18576000848401525b50505050565b60008251610c30818460208701610bee565b9190910192915050565b6020815260008251806020840152610c59816040850160208701610bee565b601f01601f1916919091016040019291505056fea2646970667358221220819136adfca0753f09101d77e092d8e4004ba63a21547db841079d9bd447642964736f6c634300080a0033
Deployed Bytecode Sourcemap
64:1841:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;708:88;;;;;;;;;;-1:-1:-1;708:88:0;;;;;:::i;:::-;;:::i;:::-;;1120:396;;;;;;;;;;-1:-1:-1;1120:396:0;;;;;:::i;:::-;;:::i;1014:98::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;804:111;;;;;;;;;;-1:-1:-1;804:111:0;;;;;:::i;:::-;;:::i;923:83::-;;;;;;;;;;-1:-1:-1;966:7:0;993:5;923:83;;-1:-1:-1;;;;;993:5:0;;;3172:51:1;;3160:2;3145:18;923:83:0;3026:203:1;1524:329:0;;;;;;;;;;-1:-1:-1;1524:329:0;;;;;:::i;:::-;;:::i;708:88::-;201:5;;-1:-1:-1;;;;;201:5:0;187:10;:19;179:46;;;;-1:-1:-1;;;179:46:0;;4238:2:1;179:46:0;;;4220:21:1;4277:2;4257:18;;;4250:30;-1:-1:-1;;;4296:18:1;;;4289:44;4350:18;;179:46:0;;;;;;;;;772:5:::1;:16:::0;;-1:-1:-1;;;;;;772:16:0::1;-1:-1:-1::0;;;;;772:16:0;;;::::1;::::0;;;::::1;::::0;;708:88::o;1120:396::-;313:5;;-1:-1:-1;;;;;313:5:0;299:10;:19;;:44;;;322:21;332:10;322:9;:21::i;:::-;291:82;;;;-1:-1:-1;;;291:82:0;;4581:2:1;291:82:0;;;4563:21:1;4620:2;4600:18;;;4593:30;-1:-1:-1;;;4639:18:1;;;4632:55;4704:18;;291:82:0;4379:349:1;291:82:0;1273:31;;::::1;:70:::0;::::1;;;-1:-1:-1::0;1308:35:0;;::::1;1273:70;1265:109;;;::::0;-1:-1:-1;;;1265:109:0;;4935:2:1;1265:109:0::1;::::0;::::1;4917:21:1::0;4974:2;4954:18;;;4947:30;5013:28;4993:18;;;4986:56;5059:18;;1265:109:0::1;4733:350:1::0;1265:109:0::1;1390:6;1385:124;1400:15:::0;;::::1;1385:124;;;1437:60;1460:6;;1467:1;1460:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;1471:10;;1482:1;1471:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;1486:7;;1494:1;1486:10;;;;;;;:::i;:::-;;;;;;;1437:22;:60::i;:::-;1417:3:::0;::::1;::::0;::::1;:::i;:::-;;;;1385:124;;;;1120:396:::0;;;;;;:::o;1014:98::-;1060:16;1096:8;1089:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1089:15:0;;;;;;;;;;;;;;;;;;;;;;;1014:98;:::o;804:111::-;201:5;;-1:-1:-1;;;;;201:5:0;187:10;:19;179:46;;;;-1:-1:-1;;;179:46:0;;4238:2:1;179:46:0;;;4220:21:1;4277:2;4257:18;;;4250:30;-1:-1:-1;;;4296:18:1;;;4289:44;4350:18;;179:46:0;4036:338:1;179:46:0;885:22:::1;:8;896:11:::0;;885:22:::1;:::i;:::-;;804:111:::0;;:::o;1524:329::-;313:5;;-1:-1:-1;;;;;313:5:0;299:10;:19;;:44;;;322:21;332:10;322:9;:21::i;:::-;291:82;;;;-1:-1:-1;;;291:82:0;;4581:2:1;291:82:0;;;4563:21:1;4620:2;4600:18;;;4593:30;-1:-1:-1;;;4639:18:1;;;4632:55;4704:18;;291:82:0;4379:349:1;291:82:0;1657:35;;::::1;1649:74;;;::::0;-1:-1:-1;;;1649:74:0;;4935:2:1;1649:74:0::1;::::0;::::1;4917:21:1::0;4974:2;4954:18;;;4947:30;5013:28;4993:18;;;4986:56;5059:18;;1649:74:0::1;4733:350:1::0;1649:74:0::1;1739:6;1734:112;1749:19:::0;;::::1;1734:112;;;1790:44;1808:10;;1819:1;1808:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;1823:7;;1831:1;1823:10;;;;;;;:::i;:::-;;;;;;;1790:17;:44::i;:::-;1770:3:::0;::::1;::::0;::::1;:::i;:::-;;;;1734:112;;;;1524:329:::0;;;;:::o;405:236::-;461:4;;478:133;495:8;:15;493:17;;478:133;;;549:4;-1:-1:-1;;;;;536:17:0;:8;545:1;536:11;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;536:11:0;:17;532:68;;;-1:-1:-1;580:4:0;;405:236;-1:-1:-1;;405:236:0:o;532:68::-;512:3;;;;:::i;:::-;;;;478:133;;;-1:-1:-1;628:5:0;;405:236;-1:-1:-1;;405:236:0:o;13472:211::-;13616:58;;;-1:-1:-1;;;;;6175:32:1;;13616:58:0;;;6157:51:1;6224:18;;;;6217:34;;;13616:58:0;;;;;;;;;;6130:18:1;;;;13616:58:0;;;;;;;;-1:-1:-1;;;;;13616:58:0;-1:-1:-1;;;13616:58:0;;;13589:86;;13609:5;;13589:19;:86::i;3997:317::-;4112:6;4087:21;:31;;4079:73;;;;-1:-1:-1;;;4079:73:0;;6464:2:1;4079:73:0;;;6446:21:1;6503:2;6483:18;;;6476:30;6542:31;6522:18;;;6515:59;6591:18;;4079:73:0;6262:353:1;4079:73:0;4166:12;4184:9;-1:-1:-1;;;;;4184:14:0;4206:6;4184:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4165:52;;;4236:7;4228:78;;;;-1:-1:-1;;;4228:78:0;;7032:2:1;4228:78:0;;;7014:21:1;7071:2;7051:18;;;7044:30;7110:34;7090:18;;;7083:62;7181:28;7161:18;;;7154:56;7227:19;;4228:78:0;6830:422:1;16045:716:0;16469:23;16495:69;16523:4;16495:69;;;;;;;;;;;;;;;;;16503:5;-1:-1:-1;;;;;16495:27:0;;;:69;;;;;:::i;:::-;16579:17;;16469:95;;-1:-1:-1;16579:21:0;16575:179;;16676:10;16665:30;;;;;;;;;;;;:::i;:::-;16657:85;;;;-1:-1:-1;;;16657:85:0;;7741:2:1;16657:85:0;;;7723:21:1;7780:2;7760:18;;;7753:30;7819:34;7799:18;;;7792:62;-1:-1:-1;;;7870:18:1;;;7863:40;7920:19;;16657:85:0;7539:406:1;5481:229:0;5618:12;5650:52;5672:6;5680:4;5686:1;5689:12;5650:21;:52::i;:::-;5643:59;;5481:229;;;;;;:::o;6601:510::-;6771:12;6829:5;6804:21;:30;;6796:81;;;;-1:-1:-1;;;6796:81:0;;8152:2:1;6796:81:0;;;8134:21:1;8191:2;8171:18;;;8164:30;8230:34;8210:18;;;8203:62;-1:-1:-1;;;8281:18:1;;;8274:36;8327:19;;6796:81:0;7950:402:1;6796:81:0;2998:20;;6888:60;;;;-1:-1:-1;;;6888:60:0;;8559:2:1;6888:60:0;;;8541:21:1;8598:2;8578:18;;;8571:30;8637:31;8617:18;;;8610:59;8686:18;;6888:60:0;8357:353:1;6888:60:0;6962:12;6976:23;7003:6;-1:-1:-1;;;;;7003:11:0;7022:5;7029:4;7003:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6961:73;;;;7052:51;7069:7;7078:10;7090:12;7052:16;:51::i;:::-;7045:58;6601:510;-1:-1:-1;;;;;;;6601:510:0:o;9287:712::-;9437:12;9466:7;9462:530;;;-1:-1:-1;9497:10:0;9490:17;;9462:530;9611:17;;:21;9607:374;;9809:10;9803:17;9870:15;9857:10;9853:2;9849:19;9842:44;9607:374;9952:12;9945:20;;-1:-1:-1;;;9945:20:0;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:131:1;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:247::-;209:6;262:2;250:9;241:7;237:23;233:32;230:52;;;278:1;275;268:12;230:52;317:9;304:23;336:31;361:5;336:31;:::i;402:375::-;473:8;483:6;537:3;530:4;522:6;518:17;514:27;504:55;;555:1;552;545:12;504:55;-1:-1:-1;578:20:1;;621:18;610:30;;607:50;;;653:1;650;643:12;607:50;690:4;682:6;678:17;666:29;;750:3;743:4;733:6;730:1;726:14;718:6;714:27;710:38;707:47;704:67;;;767:1;764;757:12;704:67;402:375;;;;;:::o;782:1126::-;954:6;962;970;978;986;994;1047:2;1035:9;1026:7;1022:23;1018:32;1015:52;;;1063:1;1060;1053:12;1015:52;1103:9;1090:23;1132:18;1173:2;1165:6;1162:14;1159:34;;;1189:1;1186;1179:12;1159:34;1228:78;1298:7;1289:6;1278:9;1274:22;1228:78;:::i;:::-;1325:8;;-1:-1:-1;1202:104:1;-1:-1:-1;1413:2:1;1398:18;;1385:32;;-1:-1:-1;1429:16:1;;;1426:36;;;1458:1;1455;1448:12;1426:36;1497:80;1569:7;1558:8;1547:9;1543:24;1497:80;:::i;:::-;1596:8;;-1:-1:-1;1471:106:1;-1:-1:-1;1684:2:1;1669:18;;1656:32;;-1:-1:-1;1700:16:1;;;1697:36;;;1729:1;1726;1719:12;1697:36;;1768:80;1840:7;1829:8;1818:9;1814:24;1768:80;:::i;:::-;782:1126;;;;-1:-1:-1;782:1126:1;;-1:-1:-1;782:1126:1;;1867:8;;782:1126;-1:-1:-1;;;782:1126:1:o;1913:658::-;2084:2;2136:21;;;2206:13;;2109:18;;;2228:22;;;2055:4;;2084:2;2307:15;;;;2281:2;2266:18;;;2055:4;2350:195;2364:6;2361:1;2358:13;2350:195;;;2429:13;;-1:-1:-1;;;;;2425:39:1;2413:52;;2520:15;;;;2485:12;;;;2461:1;2379:9;2350:195;;;-1:-1:-1;2562:3:1;;1913:658;-1:-1:-1;;;;;;1913:658:1:o;2576:445::-;2662:6;2670;2723:2;2711:9;2702:7;2698:23;2694:32;2691:52;;;2739:1;2736;2729:12;2691:52;2779:9;2766:23;2812:18;2804:6;2801:30;2798:50;;;2844:1;2841;2834:12;2798:50;2883:78;2953:7;2944:6;2933:9;2929:22;2883:78;:::i;:::-;2980:8;;2857:104;;-1:-1:-1;2576:445:1;-1:-1:-1;;;;2576:445:1:o;3234:797::-;3364:6;3372;3380;3388;3441:2;3429:9;3420:7;3416:23;3412:32;3409:52;;;3457:1;3454;3447:12;3409:52;3497:9;3484:23;3526:18;3567:2;3559:6;3556:14;3553:34;;;3583:1;3580;3573:12;3553:34;3622:78;3692:7;3683:6;3672:9;3668:22;3622:78;:::i;:::-;3719:8;;-1:-1:-1;3596:104:1;-1:-1:-1;3807:2:1;3792:18;;3779:32;;-1:-1:-1;3823:16:1;;;3820:36;;;3852:1;3849;3842:12;3820:36;;3891:80;3963:7;3952:8;3941:9;3937:24;3891:80;:::i;:::-;3234:797;;;;-1:-1:-1;3990:8:1;-1:-1:-1;;;;3234:797:1:o;5088:127::-;5149:10;5144:3;5140:20;5137:1;5130:31;5180:4;5177:1;5170:15;5204:4;5201:1;5194:15;5486:232;5525:3;-1:-1:-1;;5546:17:1;;5543:140;;;5605:10;5600:3;5596:20;5593:1;5586:31;5640:4;5637:1;5630:15;5668:4;5665:1;5658:15;5543:140;-1:-1:-1;5710:1:1;5699:13;;5486:232::o;7257:277::-;7324:6;7377:2;7365:9;7356:7;7352:23;7348:32;7345:52;;;7393:1;7390;7383:12;7345:52;7425:9;7419:16;7478:5;7471:13;7464:21;7457:5;7454:32;7444:60;;7500:1;7497;7490:12;8715:258;8787:1;8797:113;8811:6;8808:1;8805:13;8797:113;;;8887:11;;;8881:18;8868:11;;;8861:39;8833:2;8826:10;8797:113;;;8928:6;8925:1;8922:13;8919:48;;;8963:1;8954:6;8949:3;8945:16;8938:27;8919:48;;8715:258;;;:::o;8978:274::-;9107:3;9145:6;9139:13;9161:53;9207:6;9202:3;9195:4;9187:6;9183:17;9161:53;:::i;:::-;9230:16;;;;;8978:274;-1:-1:-1;;8978:274:1:o;9257:383::-;9406:2;9395:9;9388:21;9369:4;9438:6;9432:13;9481:6;9476:2;9465:9;9461:18;9454:34;9497:66;9556:6;9551:2;9540:9;9536:18;9531:2;9523:6;9519:15;9497:66;:::i;:::-;9624:2;9603:15;-1:-1:-1;;9599:29:1;9584:45;;;;9631:2;9580:54;;9257:383;-1:-1:-1;;9257:383:1:o
Swarm Source
ipfs://819136adfca0753f09101d77e092d8e4004ba63a21547db841079d9bd4476429
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.