Contract Overview
Balance:
3.6 MATIC
MATIC Value:
$4.13 (@ $1.15/MATIC)
My Name Tag:
Not Available, login to update
Txn Hash |
Method
|
Block
|
From
|
To
|
Value | [Txn Fee] | |||
---|---|---|---|---|---|---|---|---|---|
0xb09bab7f3b7ee4c73c35379f5f085be7b6518b068e935b327d7944b8d530f45f | Send1155To Addre... | 40493593 | 3 days 22 hrs ago | Mining Game: Deployer | IN | 0x662adc895573d4131f2c3c9c6d0e5cdd1a803e6c | 0 MATIC | 0.016016269636 | |
0xe82e17c81eb02e4f5ef5c8cffa4b3d000b03da97453bdd1dc9ae76ee166497a3 | Send1155To Addre... | 40237042 | 10 days 14 hrs ago | Mining Game: Deployer | IN | 0x662adc895573d4131f2c3c9c6d0e5cdd1a803e6c | 0 MATIC | 0.00840240952 | |
0xdbb194c1c8695d1a83b597f20aaccccddf9efed5a9a202fcc8b772a6592fcbe2 | Send1155To Addre... | 39995683 | 16 days 22 hrs ago | Mining Game: Deployer | IN | 0x662adc895573d4131f2c3c9c6d0e5cdd1a803e6c | 0 MATIC | 0.025101352608 | |
0x382905a5211cfe350d4073b5644d00552905893e9ccef813fb6f9d0621bf8996 | Multisend Token | 39365482 | 33 days 19 hrs ago | 0x6f973d88a48cf0ac6e06c356b15e3a295cf3b10b | IN | 0x662adc895573d4131f2c3c9c6d0e5cdd1a803e6c | 0 MATIC | 0.016686657026 | |
0x1a23b7818ce38d05d1ef4a09822c8b9b91d5f4d65d6bcd5105e38a4f39ef8a23 | Send1155To Addre... | 38122844 | 65 days 16 hrs ago | 0x44f66b9b7b0578c3ae94c50ff0e286ae551acfb3 | IN | 0x662adc895573d4131f2c3c9c6d0e5cdd1a803e6c | 0 MATIC | 0.003077778417 | |
0x0a3d4cda3f5bdda30e2ae4548b4000db154c4ad520c632e9cf1076d78827e73f | Send1155To Addre... | 38122817 | 65 days 17 hrs ago | 0x44f66b9b7b0578c3ae94c50ff0e286ae551acfb3 | IN | 0x662adc895573d4131f2c3c9c6d0e5cdd1a803e6c | 0 MATIC | 0.00218307164 | |
0x6afa05ca021d101d1326e38a7c4fa1453ef365346fb499c5c1d94d3187f4dab1 | Send1155To Addre... | 38122782 | 65 days 17 hrs ago | 0x44f66b9b7b0578c3ae94c50ff0e286ae551acfb3 | IN | 0x662adc895573d4131f2c3c9c6d0e5cdd1a803e6c | 0 MATIC | 0.001916484921 | |
0x44ad981973df65982c3f94e61b353264d031a756b29a3d0a9aeb8d0bc9d22bd0 | Send1155To Addre... | 38122732 | 65 days 17 hrs ago | 0x44f66b9b7b0578c3ae94c50ff0e286ae551acfb3 | IN | 0x662adc895573d4131f2c3c9c6d0e5cdd1a803e6c | 0 MATIC | 0.001921658438 | |
0x1055863d83da6d6831cb8fd4c4639a1696a84151d107256757e173d63b1a0589 | Send1155To Addre... | 38107124 | 66 days 2 hrs ago | 0x7246d77eb4bcc9d2f323abdb2acbb615968494c2 | IN | 0x662adc895573d4131f2c3c9c6d0e5cdd1a803e6c | 0 MATIC | 0.003951069979 | |
0xd9729cd8d5ae0771f2cd370059db3f2e0c558eb2534ef1c7e58c8c491d816438 | Send1155To Addre... | 37583757 | 78 days 23 hrs ago | Mining Game: Deployer | IN | 0x662adc895573d4131f2c3c9c6d0e5cdd1a803e6c | 0 MATIC | 0.006958456761 | |
0x8a666aadafc544782ed989d34d0b1e69ea8c19c3b75995d6551136e35fc16cc7 | Send1155To Addre... | 37582277 | 79 days 20 mins ago | Mining Game: Deployer | IN | 0x662adc895573d4131f2c3c9c6d0e5cdd1a803e6c | 0 MATIC | 0.020473362685 | |
0x3584709b6ad9ef64b323c6a6f588e171c1e38cc1780881e05fbffab89028510a | Send1155To Addre... | 37511008 | 80 days 18 hrs ago | 0xe3704f4bee5451c98d98caa250d9d6b709aea1e2 | IN | 0x662adc895573d4131f2c3c9c6d0e5cdd1a803e6c | 0 MATIC | 0.002409049963 | |
0x66805c3e6f01f8c40a076366afcce4a4cf4199b8eefb5cbe764295ac3544c658 | Send1155To Addre... | 37329119 | 85 days 7 hrs ago | 0x8324fa247756a9d2be9d16884f620e65a142e514 | IN | 0x662adc895573d4131f2c3c9c6d0e5cdd1a803e6c | 0 MATIC | 0.005129525542 | |
0xb4951e015bc7430e105c7ac585297628fa698c52efcf7370be6bd59a53833e3d | Send1155To Addre... | 37201511 | 88 days 10 hrs ago |
| IN | 0x662adc895573d4131f2c3c9c6d0e5cdd1a803e6c | 0 MATIC | 0.006138660376 | |
0x8be347f246a196e21e90935ceafafe163cba7fda147e1ec256b218df7725a44d | Send1155To Addre... | 37119761 | 90 days 11 hrs ago | Mining Game: Deployer | IN | 0x662adc895573d4131f2c3c9c6d0e5cdd1a803e6c | 0 MATIC | 0.006844401324 | |
0xfb9765b767ce7244f4e5789e9b8500e573b6e98b4b66468d0bb5fb7fe4c116d8 | Send1155To Addre... | 36737717 | 100 days 2 hrs ago | Mining Game: Deployer | IN | 0x662adc895573d4131f2c3c9c6d0e5cdd1a803e6c | 0 MATIC | 0.007407075818 | |
0x5cebcb3ed578e203a7c776a33124b4393d2b03245bd19c096fc3841bff650cc7 | Send1155To Addre... | 36711995 | 100 days 17 hrs ago | 0x71e0083a42196576e29b64a37ce91209b1911c9f | IN | 0x662adc895573d4131f2c3c9c6d0e5cdd1a803e6c | 0 MATIC | 0.001860250369 | |
0x27ee1f1b7c411efde63ea781ad472ef742eea7bda8aad3501ebb80d465449946 | Send1155To Addre... | 36262890 | 111 days 19 hrs ago | 0x1eb0b2fbf6fcdafaab68c463e3ae974dea72fc4b | IN | 0x662adc895573d4131f2c3c9c6d0e5cdd1a803e6c | 0 MATIC | 0.002700299813 | |
0x6f4b2a704b5ff42cba6d01b0fe2f14f6f3548b8b2eac64f0d23c1c9047656fdd | Send1155To Addre... | 36032064 | 117 days 10 hrs ago | Mining Game: Deployer | IN | 0x662adc895573d4131f2c3c9c6d0e5cdd1a803e6c | 0 MATIC | 0.003547659776 | |
0xf3a13d13a80036980ded7a3cc8bf73981606b8c147caa7da06aeae3680a02ed8 | Send1155To Addre... | 36021863 | 117 days 16 hrs ago | Mining Game: Deployer | IN | 0x662adc895573d4131f2c3c9c6d0e5cdd1a803e6c | 0 MATIC | 0.00209544 | |
0x186301f7b6014cbf511b0a2fe98f198c907fd909173e63c5574ab5d50b150288 | Send1155To Addre... | 36015729 | 117 days 20 hrs ago | Mining Game: Deployer | IN | 0x662adc895573d4131f2c3c9c6d0e5cdd1a803e6c | 0 MATIC | 0.013247123578 | |
0x52f94664c3987f6ed0ba48fa517b8eb614f900dade2db6138fdbdcaf3493758c | Send1155To Addre... | 35846524 | 121 days 22 hrs ago | Mining Game: Deployer | IN | 0x662adc895573d4131f2c3c9c6d0e5cdd1a803e6c | 0 MATIC | 0.002097030299 | |
0x2fa3c7abd49e8b4f3585823766d5b2ec60c6f3a69f4b82d28456152604aeb8d8 | Send1155To Addre... | 35840601 | 122 days 2 hrs ago | Mining Game: Deployer | IN | 0x662adc895573d4131f2c3c9c6d0e5cdd1a803e6c | 0 MATIC | 0.003077025034 | |
0x891d4c19a768bfd923cab8e78927f889d047da4412be65a1489e06e7142c9d31 | Send1155To Addre... | 35410082 | 132 days 16 hrs ago | Mining Game: Deployer | IN | 0x662adc895573d4131f2c3c9c6d0e5cdd1a803e6c | 0 MATIC | 0.015899506288 | |
0x66b3d073ea70bd622b43fed3f3a1fd27e896b65a7ab74e763e70534084aec18e | Multisend Token | 35372693 | 133 days 14 hrs ago | 0xa7351932fd870e9177afd8519a8900cf4ebf008e | IN | 0x662adc895573d4131f2c3c9c6d0e5cdd1a803e6c | 0 MATIC | 0.011843136372 |
[ Download CSV Export ]
Latest 1 internal transaction
Parent Txn Hash | Block | From | To | Value | |||
---|---|---|---|---|---|---|---|
0xec05b530fe91e82a4fac8d5d0c69ad617c801869531702e53295ac2917ac4345 | 28063808 | 318 days 5 hrs ago | 0x662adc895573d4131f2c3c9c6d0e5cdd1a803e6c | Mining Game: Deployer | 0.2 MATIC |
[ Download CSV Export ]
Contract Name:
TokenMultisender
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2022-05-08 */ // File: @openzeppelin/contracts/utils/Context.sol pragma solidity ^0.8.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 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. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol pragma solidity ^0.8.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. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * 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. */ abstract 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() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the 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 virtual onlyOwner { _setOwner(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 virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/security/ReentrancyGuard.sol pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } } // File: @openzeppelin/contracts/utils/math/SafeMath.sol pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // 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 (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @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) { return a + b; } /** * @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 a - b; } /** * @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) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting 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 a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting 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. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * 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, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } // 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/utils/introspection/IERC165.sol pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/token/ERC1155/IERC1155.sol pragma solidity ^0.8.0; /** * @dev Required interface of an ERC1155 compliant contract, as defined in the * https://eips.ethereum.org/EIPS/eip-1155[EIP]. * * _Available since v3.1._ */ interface IERC1155 is IERC165 { /** * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`. */ event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value); /** * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all * transfers. */ event TransferBatch( address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values ); /** * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to * `approved`. */ event ApprovalForAll(address indexed account, address indexed operator, bool approved); /** * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. * * If an {URI} event was emitted for `id`, the standard * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value * returned by {IERC1155MetadataURI-uri}. */ event URI(string value, uint256 indexed id); /** * @dev Returns the amount of tokens of token type `id` owned by `account`. * * Requirements: * * - `account` cannot be the zero address. */ function balanceOf(address account, uint256 id) external view returns (uint256); /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}. * * Requirements: * * - `accounts` and `ids` must have the same length. */ function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) external view returns (uint256[] memory); /** * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`, * * Emits an {ApprovalForAll} event. * * Requirements: * * - `operator` cannot be the caller. */ function setApprovalForAll(address operator, bool approved) external; /** * @dev Returns true if `operator` is approved to transfer ``account``'s tokens. * * See {setApprovalForAll}. */ function isApprovedForAll(address account, address operator) external view returns (bool); /** * @dev Transfers `amount` tokens of token type `id` from `from` to `to`. * * Emits a {TransferSingle} event. * * Requirements: * * - `to` cannot be the zero address. * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}. * - `from` must have a balance of tokens of type `id` of at least `amount`. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the * acceptance magic value. */ function safeTransferFrom( address from, address to, uint256 id, uint256 amount, bytes calldata data ) external; /** * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}. * * Emits a {TransferBatch} event. * * Requirements: * * - `ids` and `amounts` must have the same length. * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the * acceptance magic value. */ function safeBatchTransferFrom( address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data ) external; } // File: @openzeppelin/contracts/token/ERC721/IERC721.sol pragma solidity ^0.8.0; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol pragma solidity ^0.8.0; /** * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Enumerable is IERC721 { /** * @dev Returns the total amount of tokens stored by the contract. */ function totalSupply() external view returns (uint256); /** * @dev Returns a token ID owned by `owner` at a given `index` of its token list. * Use along with {balanceOf} to enumerate all of ``owner``'s tokens. */ function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); } // File: @openzeppelin/contracts/utils/introspection/ERC165.sol pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File: @openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol pragma solidity ^0.8.0; /** * @dev _Available since v3.1._ */ interface IERC1155Receiver is IERC165 { /** @dev Handles the receipt of a single ERC1155 token type. This function is called at the end of a `safeTransferFrom` after the balance has been updated. To accept the transfer, this must return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` (i.e. 0xf23a6e61, or its own function selector). @param operator The address which initiated the transfer (i.e. msg.sender) @param from The address which previously owned the token @param id The ID of the token being transferred @param value The amount of tokens being transferred @param data Additional data with no specified format @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed */ function onERC1155Received( address operator, address from, uint256 id, uint256 value, bytes calldata data ) external returns (bytes4); /** @dev Handles the receipt of a multiple ERC1155 token types. This function is called at the end of a `safeBatchTransferFrom` after the balances have been updated. To accept the transfer(s), this must return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` (i.e. 0xbc197c81, or its own function selector). @param operator The address which initiated the batch transfer (i.e. msg.sender) @param from The address which previously owned the token @param ids An array containing ids of each token being transferred (order and length must match values array) @param values An array containing amounts of each token being transferred (order and length must match ids array) @param data Additional data with no specified format @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed */ function onERC1155BatchReceived( address operator, address from, uint256[] calldata ids, uint256[] calldata values, bytes calldata data ) external returns (bytes4); } // File: @openzeppelin/contracts/token/ERC1155/utils/ERC1155Receiver.sol pragma solidity ^0.8.0; /** * @dev _Available since v3.1._ */ abstract contract ERC1155Receiver is ERC165, IERC1155Receiver { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC1155Receiver).interfaceId || super.supportsInterface(interfaceId); } } // File: @openzeppelin/contracts/token/ERC1155/utils/ERC1155Holder.sol pragma solidity ^0.8.0; /** * @dev _Available since v3.1._ */ contract ERC1155Holder is ERC1155Receiver { function onERC1155Received( address, address, uint256, uint256, bytes memory ) public virtual override returns (bytes4) { return this.onERC1155Received.selector; } function onERC1155BatchReceived( address, address, uint256[] memory, uint256[] memory, bytes memory ) public virtual override returns (bytes4) { return this.onERC1155BatchReceived.selector; } } // File: a.sol pragma solidity ^0.8.7; contract TokenMultisender is ERC1155Holder, ReentrancyGuard, Ownable { using SafeMath for uint256; address payable public feeReceiver; uint256 public ethFee; uint256 public array_limit; bytes emptyData = bytes(""); constructor() { ethFee = 0.05 ether; feeReceiver =payable(msg.sender); array_limit = 200; } function arrayLimit() public view returns(uint256) { return array_limit; } function currentFee(address _customer) public view returns(uint256) { if(_customer == address(0x0)){ return 0; } return ethFee; } // Internal function to send ERC721 or ERC20 tokens // Using transferFrom means we don't implement ERC721 Receiver function _send721Or20(address tokenAddress, address from, address to, uint256 amountOrId) internal { IERC721(tokenAddress).transferFrom(from, to, amountOrId); } // Direct senders // Normal multisend: sends a batch of ERC721 or ERC20 to a list of addresses function multisendToken( address tokenAddress, address[] calldata userAddresses, uint256[] calldata amountsOrIds ) external payable nonReentrant { require((userAddresses.length == amountsOrIds.length), "diff lengths"); for (uint256 i = 0; i < userAddresses.length; i++) { _send721Or20(tokenAddress, msg.sender, userAddresses[i], amountsOrIds[i]); } } // ERC721 targeted multisend: sends a batch of ERC721 or ERC20s to a list of ERC721 ID holders function send721Or20To721Ids( address[] calldata erc721Addresses, uint256[] calldata receiverIds, uint256[] calldata amountsOrIds, address tokenAddress) external payable nonReentrant { require((erc721Addresses.length == receiverIds.length), "diff lengths"); require((erc721Addresses.length == amountsOrIds.length), "diff lengths"); for (uint256 i = 0; i < receiverIds.length; i++) { IERC721Enumerable erc721 = IERC721Enumerable(erc721Addresses[i]); _send721Or20(tokenAddress, msg.sender, erc721.ownerOf(receiverIds[i]), amountsOrIds[i]); } } // Send ERC-1155 to a batch of addresses function send1155ToAddresses( address[] calldata userAddresses, uint256[] calldata tokenIds, uint256[] calldata amounts, address tokenAddress) external payable nonReentrant { require((userAddresses.length == amounts.length), "diff lengths"); require((userAddresses.length == tokenIds.length), "diff lengths"); for (uint256 i = 0; i < userAddresses.length; i++) { IERC1155(tokenAddress).safeTransferFrom(msg.sender, userAddresses[i], tokenIds[i], amounts[i], emptyData); } } // Send ERC-1155 to a list of ERC721 ID holders function send1155To721Ids( address[] calldata erc721Addresses, uint256[] calldata erc721Ids, uint256[] calldata tokenIds, uint256[] calldata amounts, address tokenAddress) external payable nonReentrant { require((erc721Addresses.length == erc721Ids.length), "diff lengths"); require((erc721Addresses.length == amounts.length), "diff lengths"); require((erc721Addresses.length == tokenIds.length), "diff lengths"); for (uint256 i = 0; i < erc721Addresses.length; i++) { IERC1155(tokenAddress).safeTransferFrom(msg.sender, IERC721(erc721Addresses[i]).ownerOf(erc721Ids[i]), tokenIds[i], amounts[i], emptyData); } } // OWNER FUNCTIONS function setFeeReceiver(address payable a) public onlyOwner { feeReceiver = a; } function setEthFee(uint256 f) public onlyOwner { ethFee = f; } function claimTokens(address _token) public onlyOwner { if (_token == address(0x0)) { feeReceiver.transfer(address(this).balance); return; } IERC20 erc20token = IERC20(_token); uint256 balance = erc20token.balanceOf(address(this)); erc20token.transfer(feeReceiver, balance); } function withdraw(address _recipient) public payable onlyOwner { payable(_recipient).transfer(address(this).balance); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"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"},{"inputs":[],"name":"arrayLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"array_limit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"claimTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_customer","type":"address"}],"name":"currentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ethFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address[]","name":"userAddresses","type":"address[]"},{"internalType":"uint256[]","name":"amountsOrIds","type":"uint256[]"}],"name":"multisendToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"erc721Addresses","type":"address[]"},{"internalType":"uint256[]","name":"erc721Ids","type":"uint256[]"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"send1155To721Ids","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"userAddresses","type":"address[]"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"send1155ToAddresses","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"erc721Addresses","type":"address[]"},{"internalType":"uint256[]","name":"receiverIds","type":"uint256[]"},{"internalType":"uint256[]","name":"amountsOrIds","type":"uint256[]"},{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"send721Or20To721Ids","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"f","type":"uint256"}],"name":"setEthFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"a","type":"address"}],"name":"setFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"}]
Contract Creation Code
608060405260405180602001604052806000815250600590805190602001906200002b9291906200018d565b503480156200003957600080fd5b5060016000819055506200006262000056620000bf60201b60201c565b620000c760201b60201c565b66b1a2bc2ec5000060038190555033600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060c8600481905550620002a2565b600033905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200019b906200026c565b90600052602060002090601f016020900481019282620001bf57600085556200020b565b82601f10620001da57805160ff19168380011785556200020b565b828001600101855582156200020b579182015b828111156200020a578251825591602001919060010190620001ed565b5b5090506200021a91906200021e565b5090565b5b80821115620002395760008160009055506001016200021f565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200028557607f821691505b602082108114156200029c576200029b6200023d565b5b50919050565b6123ed80620002b26000396000f3fe6080604052600436106101145760003560e01c806393703d9a116100a0578063df8de3e711610064578063df8de3e714610357578063ef63415714610380578063efdcd9741461039c578063f23a6e61146103c5578063f2fde38b1461040257610114565b806393703d9a1461027d578063b3f0067414610299578063b4ae641c146102c4578063bc197c81146102ef578063ce0f42f11461032c57610114565b80634cf1115d116100e75780634cf1115d146101b757806351cff8d9146101e2578063591552da146101fe578063715018a61461023b5780638da5cb5b1461025257610114565b806301ffc9a7146101195780630b66f3f51461015657806318dc0c8c146101725780633f6738a91461018e575b600080fd5b34801561012557600080fd5b50610140600480360381019061013b9190611549565b61042b565b60405161014d9190611591565b60405180910390f35b610170600480360381019061016b91906116c5565b6104a5565b005b61018c6004803603810190610187919061175a565b6105b8565b005b34801561019a57600080fd5b506101b560048036038101906101b09190611859565b6107bc565b005b3480156101c357600080fd5b506101cc610842565b6040516101d99190611895565b60405180910390f35b6101fc60048036038101906101f791906118b0565b610848565b005b34801561020a57600080fd5b50610225600480360381019061022091906118b0565b61090e565b6040516102329190611895565b60405180910390f35b34801561024757600080fd5b50610250610958565b005b34801561025e57600080fd5b506102676109e0565b60405161027491906118ec565b60405180910390f35b6102976004803603810190610292919061175a565b610a0a565b005b3480156102a557600080fd5b506102ae610be8565b6040516102bb9190611928565b60405180910390f35b3480156102d057600080fd5b506102d9610c0e565b6040516102e69190611895565b60405180910390f35b3480156102fb57600080fd5b5061031660048036038101906103119190611b47565b610c18565b6040516103239190611c25565b60405180910390f35b34801561033857600080fd5b50610341610c2d565b60405161034e9190611895565b60405180910390f35b34801561036357600080fd5b5061037e600480360381019061037991906118b0565b610c33565b005b61039a60048036038101906103959190611c40565b610e9a565b005b3480156103a857600080fd5b506103c360048036038101906103be9190611d68565b611163565b005b3480156103d157600080fd5b506103ec60048036038101906103e79190611d95565b611223565b6040516103f99190611c25565b60405180910390f35b34801561040e57600080fd5b50610429600480360381019061042491906118b0565b611238565b005b60007f4e2312e0000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061049e575061049d82611330565b5b9050919050565b600260005414156104eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e290611e89565b60405180910390fd5b600260008190555081819050848490501461053b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053290611ef5565b60405180910390fd5b60005b848490508110156105a857610595863387878581811061056157610560611f15565b5b905060200201602081019061057691906118b0565b86868681811061058957610588611f15565b5b9050602002013561139a565b80806105a090611f73565b91505061053e565b5060016000819055505050505050565b600260005414156105fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f590611e89565b60405180910390fd5b600260008190555084849050878790501461064e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064590611ef5565b60405180910390fd5b828290508787905014610696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068d90611ef5565b60405180910390fd5b60005b858590508110156107aa5760008888838181106106b9576106b8611f15565b5b90506020020160208101906106ce91906118b0565b905061079683338373ffffffffffffffffffffffffffffffffffffffff16636352211e8b8b8881811061070457610703611f15565b5b905060200201356040518263ffffffff1660e01b81526004016107279190611895565b60206040518083038186803b15801561073f57600080fd5b505afa158015610753573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107779190611fd1565b88888781811061078a57610789611f15565b5b9050602002013561139a565b5080806107a290611f73565b915050610699565b50600160008190555050505050505050565b6107c461140f565b73ffffffffffffffffffffffffffffffffffffffff166107e26109e0565b73ffffffffffffffffffffffffffffffffffffffff1614610838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082f9061204a565b60405180910390fd5b8060038190555050565b60035481565b61085061140f565b73ffffffffffffffffffffffffffffffffffffffff1661086e6109e0565b73ffffffffffffffffffffffffffffffffffffffff16146108c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bb9061204a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561090a573d6000803e3d6000fd5b5050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561094d5760009050610953565b60035490505b919050565b61096061140f565b73ffffffffffffffffffffffffffffffffffffffff1661097e6109e0565b73ffffffffffffffffffffffffffffffffffffffff16146109d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109cb9061204a565b60405180910390fd5b6109de6000611417565b565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60026000541415610a50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4790611e89565b60405180910390fd5b6002600081905550828290508787905014610aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9790611ef5565b60405180910390fd5b848490508787905014610ae8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610adf90611ef5565b60405180910390fd5b60005b87879050811015610bd6578173ffffffffffffffffffffffffffffffffffffffff1663f242432a338a8a85818110610b2657610b25611f15565b5b9050602002016020810190610b3b91906118b0565b898986818110610b4e57610b4d611f15565b5b90506020020135888887818110610b6857610b67611f15565b5b9050602002013560056040518663ffffffff1660e01b8152600401610b91959493929190612171565b600060405180830381600087803b158015610bab57600080fd5b505af1158015610bbf573d6000803e3d6000fd5b505050508080610bce90611f73565b915050610aeb565b50600160008190555050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600454905090565b600063bc197c8160e01b905095945050505050565b60045481565b610c3b61140f565b73ffffffffffffffffffffffffffffffffffffffff16610c596109e0565b73ffffffffffffffffffffffffffffffffffffffff1614610caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca69061204a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d5257600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610d4c573d6000803e3d6000fd5b50610e97565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d9291906118ec565b60206040518083038186803b158015610daa57600080fd5b505afa158015610dbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de291906121e0565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610e4192919061226c565b602060405180830381600087803b158015610e5b57600080fd5b505af1158015610e6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9391906122c1565b5050505b50565b60026000541415610ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed790611e89565b60405180910390fd5b6002600081905550868690508989905014610f30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2790611ef5565b60405180910390fd5b828290508989905014610f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6f90611ef5565b60405180910390fd5b848490508989905014610fc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb790611ef5565b60405180910390fd5b60005b8989905081101561114f578173ffffffffffffffffffffffffffffffffffffffff1663f242432a338c8c85818110610ffe57610ffd611f15565b5b905060200201602081019061101391906118b0565b73ffffffffffffffffffffffffffffffffffffffff16636352211e8c8c8781811061104157611040611f15565b5b905060200201356040518263ffffffff1660e01b81526004016110649190611895565b60206040518083038186803b15801561107c57600080fd5b505afa158015611090573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b49190611fd1565b8989868181106110c7576110c6611f15565b5b905060200201358888878181106110e1576110e0611f15565b5b9050602002013560056040518663ffffffff1660e01b815260040161110a959493929190612171565b600060405180830381600087803b15801561112457600080fd5b505af1158015611138573d6000803e3d6000fd5b50505050808061114790611f73565b915050610fc3565b506001600081905550505050505050505050565b61116b61140f565b73ffffffffffffffffffffffffffffffffffffffff166111896109e0565b73ffffffffffffffffffffffffffffffffffffffff16146111df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d69061204a565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600063f23a6e6160e01b905095945050505050565b61124061140f565b73ffffffffffffffffffffffffffffffffffffffff1661125e6109e0565b73ffffffffffffffffffffffffffffffffffffffff16146112b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ab9061204a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611324576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131b90612360565b60405180910390fd5b61132d81611417565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd8484846040518463ffffffff1660e01b81526004016113d793929190612380565b600060405180830381600087803b1580156113f157600080fd5b505af1158015611405573d6000803e3d6000fd5b5050505050505050565b600033905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611526816114f1565b811461153157600080fd5b50565b6000813590506115438161151d565b92915050565b60006020828403121561155f5761155e6114e7565b5b600061156d84828501611534565b91505092915050565b60008115159050919050565b61158b81611576565b82525050565b60006020820190506115a66000830184611582565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006115d7826115ac565b9050919050565b6115e7816115cc565b81146115f257600080fd5b50565b600081359050611604816115de565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261162f5761162e61160a565b5b8235905067ffffffffffffffff81111561164c5761164b61160f565b5b60208301915083602082028301111561166857611667611614565b5b9250929050565b60008083601f8401126116855761168461160a565b5b8235905067ffffffffffffffff8111156116a2576116a161160f565b5b6020830191508360208202830111156116be576116bd611614565b5b9250929050565b6000806000806000606086880312156116e1576116e06114e7565b5b60006116ef888289016115f5565b955050602086013567ffffffffffffffff8111156117105761170f6114ec565b5b61171c88828901611619565b9450945050604086013567ffffffffffffffff81111561173f5761173e6114ec565b5b61174b8882890161166f565b92509250509295509295909350565b60008060008060008060006080888a031215611779576117786114e7565b5b600088013567ffffffffffffffff811115611797576117966114ec565b5b6117a38a828b01611619565b9750975050602088013567ffffffffffffffff8111156117c6576117c56114ec565b5b6117d28a828b0161166f565b9550955050604088013567ffffffffffffffff8111156117f5576117f46114ec565b5b6118018a828b0161166f565b935093505060606118148a828b016115f5565b91505092959891949750929550565b6000819050919050565b61183681611823565b811461184157600080fd5b50565b6000813590506118538161182d565b92915050565b60006020828403121561186f5761186e6114e7565b5b600061187d84828501611844565b91505092915050565b61188f81611823565b82525050565b60006020820190506118aa6000830184611886565b92915050565b6000602082840312156118c6576118c56114e7565b5b60006118d4848285016115f5565b91505092915050565b6118e6816115cc565b82525050565b600060208201905061190160008301846118dd565b92915050565b6000611912826115ac565b9050919050565b61192281611907565b82525050565b600060208201905061193d6000830184611919565b92915050565b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61198c82611943565b810181811067ffffffffffffffff821117156119ab576119aa611954565b5b80604052505050565b60006119be6114dd565b90506119ca8282611983565b919050565b600067ffffffffffffffff8211156119ea576119e9611954565b5b602082029050602081019050919050565b6000611a0e611a09846119cf565b6119b4565b90508083825260208201905060208402830185811115611a3157611a30611614565b5b835b81811015611a5a5780611a468882611844565b845260208401935050602081019050611a33565b5050509392505050565b600082601f830112611a7957611a7861160a565b5b8135611a898482602086016119fb565b91505092915050565b600080fd5b600067ffffffffffffffff821115611ab257611ab1611954565b5b611abb82611943565b9050602081019050919050565b82818337600083830152505050565b6000611aea611ae584611a97565b6119b4565b905082815260208101848484011115611b0657611b05611a92565b5b611b11848285611ac8565b509392505050565b600082601f830112611b2e57611b2d61160a565b5b8135611b3e848260208601611ad7565b91505092915050565b600080600080600060a08688031215611b6357611b626114e7565b5b6000611b71888289016115f5565b9550506020611b82888289016115f5565b945050604086013567ffffffffffffffff811115611ba357611ba26114ec565b5b611baf88828901611a64565b935050606086013567ffffffffffffffff811115611bd057611bcf6114ec565b5b611bdc88828901611a64565b925050608086013567ffffffffffffffff811115611bfd57611bfc6114ec565b5b611c0988828901611b19565b9150509295509295909350565b611c1f816114f1565b82525050565b6000602082019050611c3a6000830184611c16565b92915050565b600080600080600080600080600060a08a8c031215611c6257611c616114e7565b5b60008a013567ffffffffffffffff811115611c8057611c7f6114ec565b5b611c8c8c828d01611619565b995099505060208a013567ffffffffffffffff811115611caf57611cae6114ec565b5b611cbb8c828d0161166f565b975097505060408a013567ffffffffffffffff811115611cde57611cdd6114ec565b5b611cea8c828d0161166f565b955095505060608a013567ffffffffffffffff811115611d0d57611d0c6114ec565b5b611d198c828d0161166f565b93509350506080611d2c8c828d016115f5565b9150509295985092959850929598565b611d4581611907565b8114611d5057600080fd5b50565b600081359050611d6281611d3c565b92915050565b600060208284031215611d7e57611d7d6114e7565b5b6000611d8c84828501611d53565b91505092915050565b600080600080600060a08688031215611db157611db06114e7565b5b6000611dbf888289016115f5565b9550506020611dd0888289016115f5565b9450506040611de188828901611844565b9350506060611df288828901611844565b925050608086013567ffffffffffffffff811115611e1357611e126114ec565b5b611e1f88828901611b19565b9150509295509295909350565b600082825260208201905092915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000611e73601f83611e2c565b9150611e7e82611e3d565b602082019050919050565b60006020820190508181036000830152611ea281611e66565b9050919050565b7f64696666206c656e677468730000000000000000000000000000000000000000600082015250565b6000611edf600c83611e2c565b9150611eea82611ea9565b602082019050919050565b60006020820190508181036000830152611f0e81611ed2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611f7e82611823565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611fb157611fb0611f44565b5b600182019050919050565b600081519050611fcb816115de565b92915050565b600060208284031215611fe757611fe66114e7565b5b6000611ff584828501611fbc565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612034602083611e2c565b915061203f82611ffe565b602082019050919050565b6000602082019050818103600083015261206381612027565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806120b157607f821691505b602082108114156120c5576120c461206a565b5b50919050565b600082825260208201905092915050565b60008190508160005260206000209050919050565b600081546120fe81612099565b61210881866120cb565b94506001821660008114612123576001811461213557612168565b60ff1983168652602086019350612168565b61213e856120dc565b60005b8381101561216057815481890152600182019150602081019050612141565b808801955050505b50505092915050565b600060a08201905061218660008301886118dd565b61219360208301876118dd565b6121a06040830186611886565b6121ad6060830185611886565b81810360808301526121bf81846120f1565b90509695505050505050565b6000815190506121da8161182d565b92915050565b6000602082840312156121f6576121f56114e7565b5b6000612204848285016121cb565b91505092915050565b6000819050919050565b600061223261222d612228846115ac565b61220d565b6115ac565b9050919050565b600061224482612217565b9050919050565b600061225682612239565b9050919050565b6122668161224b565b82525050565b6000604082019050612281600083018561225d565b61228e6020830184611886565b9392505050565b61229e81611576565b81146122a957600080fd5b50565b6000815190506122bb81612295565b92915050565b6000602082840312156122d7576122d66114e7565b5b60006122e5848285016122ac565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061234a602683611e2c565b9150612355826122ee565b604082019050919050565b600060208201905081810360008301526123798161233d565b9050919050565b600060608201905061239560008301866118dd565b6123a260208301856118dd565b6123af6040830184611886565b94935050505056fea26469706673582212205a346c0ca5f2c56b4c471abe933a2decaeedc4bce1e75314498841ab9f98199d64736f6c63430008090033
Deployed ByteCode Sourcemap
31016:4150:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30037:223;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32062:394;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32558:598;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34590:70;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31164:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35032:125;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31477:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2488:94;;;;;;;;;;;;;:::i;:::-;;1837:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33206:523;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31125:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31381:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30701:255;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31190:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34670:353;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33786:672;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34496:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30466:227;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2737:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30037:223;30139:4;30178:34;30163:49;;;:11;:49;;;;:89;;;;30216:36;30240:11;30216:23;:36::i;:::-;30163:89;30156:96;;30037:223;;;:::o;32062:394::-;4864:1;5460:7;;:19;;5452:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;4864:1;5593:7;:18;;;;32266:12:::1;;:19;;32242:13;;:20;;:43;32233:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;32315:9;32310:141;32334:13;;:20;;32330:1;:24;32310:141;;;32370:73;32383:12;32397:10;32409:13;;32423:1;32409:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;32427:12;;32440:1;32427:15;;;;;;;:::i;:::-;;;;;;;;32370:12;:73::i;:::-;32356:3;;;;;:::i;:::-;;;;32310:141;;;;4820:1:::0;5772:7;:22;;;;32062:394;;;;;:::o;32558:598::-;4864:1;5460:7;;:19;;5452:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;4864:1;5593:7;:18;;;;32803:11:::1;;:18;;32777:15;;:22;;:44;32768:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;32881:12;;:19;;32855:15;;:22;;:45;32846:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;32930:9;32925:226;32949:11;;:18;;32945:1;:22;32925:226;;;32983:24;33028:15;;33044:1;33028:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;32983:64;;33056:87;33069:12;33083:10;33095:6;:14;;;33110:11;;33122:1;33110:14;;;;;;;:::i;:::-;;;;;;;;33095:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33127:12;;33140:1;33127:15;;;;;;;:::i;:::-;;;;;;;;33056:12;:87::i;:::-;32974:177;32969:3;;;;;:::i;:::-;;;;32925:226;;;;4820:1:::0;5772:7;:22;;;;32558:598;;;;;;;:::o;34590:70::-;2068:12;:10;:12::i;:::-;2057:23;;:7;:5;:7::i;:::-;:23;;;2049:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34653:1:::1;34644:6;:10;;;;34590:70:::0;:::o;31164:21::-;;;;:::o;35032:125::-;2068:12;:10;:12::i;:::-;2057:23;;:7;:5;:7::i;:::-;:23;;;2049:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35110:10:::1;35102:28;;:51;35131:21;35102:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;35032:125:::0;:::o;31477:175::-;31536:7;31580:3;31559:25;;:9;:25;;;31556:64;;;31607:1;31600:8;;;;31556:64;31638:6;;31630:14;;31477:175;;;;:::o;2488:94::-;2068:12;:10;:12::i;:::-;2057:23;;:7;:5;:7::i;:::-;:23;;;2049:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2553:21:::1;2571:1;2553:9;:21::i;:::-;2488:94::o:0;1837:87::-;1883:7;1910:6;;;;;;;;;;;1903:13;;1837:87;:::o;33206:523::-;4864:1;5460:7;;:19;;5452:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;4864:1;5593:7;:18;;;;33439:7:::1;;:14;;33415:13;;:20;;:38;33406:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;33511:8;;:15;;33487:13;;:20;;:39;33478:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;33556:9;33551:173;33575:13;;:20;;33571:1;:24;33551:173;;;33620:12;33611:39;;;33651:10;33663:13;;33677:1;33663:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;33681:8;;33690:1;33681:11;;;;;;;:::i;:::-;;;;;;;;33694:7;;33702:1;33694:10;;;;;;;:::i;:::-;;;;;;;;33706:9;33611:105;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;33597:3;;;;;:::i;:::-;;;;33551:173;;;;4820:1:::0;5772:7;:22;;;;33206:523;;;;;;;:::o;31125:34::-;;;;;;;;;;;;;:::o;31381:88::-;31423:7;31450:11;;31443:18;;31381:88;:::o;30701:255::-;30886:6;30912:36;;;30905:43;;30701:255;;;;;;;:::o;31190:26::-;;;;:::o;34670:353::-;2068:12;:10;:12::i;:::-;2057:23;;:7;:5;:7::i;:::-;:23;;;2049:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34757:3:::1;34739:22;;:6;:22;;;34735:120;;;34779:11;;;;;;;;;;;:20;;:43;34800:21;34779:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;34837:7;;34735:120;34865:17;34892:6;34865:34;;34910:15;34928:10;:20;;;34957:4;34928:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34910:53;;34974:10;:19;;;34994:11;;;;;;;;;;;35007:7;34974:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;34724:299;;2128:1;34670:353:::0;:::o;33786:672::-;4864:1;5460:7;;:19;;5452:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;4864:1;5593:7;:18;;;;34055:9:::1;;:16;;34029:15;;:22;;:42;34020:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;34131:7;;:14;;34105:15;;:22;;:40;34096:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34205:8;;:15;;34179;;:22;;:41;34170:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34250:9;34245:208;34269:15;;:22;;34265:1;:26;34245:208;;;34316:12;34307:39;;;34347:10;34367:15;;34383:1;34367:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;34359:35;;;34395:9;;34405:1;34395:12;;;;;;;:::i;:::-;;;;;;;;34359:49;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34410:8;;34419:1;34410:11;;;;;;;:::i;:::-;;;;;;;;34423:7;;34431:1;34423:10;;;;;;;:::i;:::-;;;;;;;;34435:9;34307:138;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;34293:3;;;;;:::i;:::-;;;;34245:208;;;;4820:1:::0;5772:7;:22;;;;33786:672;;;;;;;;;:::o;34496:88::-;2068:12;:10;:12::i;:::-;2057:23;;:7;:5;:7::i;:::-;:23;;;2049:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34577:1:::1;34563:11;;:15;;;;;;;;;;;;;;;;;;34496:88:::0;:::o;30466:227::-;30628:6;30654:31;;;30647:38;;30466:227;;;;;;;:::o;2737:192::-;2068:12;:10;:12::i;:::-;2057:23;;:7;:5;:7::i;:::-;:23;;;2049:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2846:1:::1;2826:22;;:8;:22;;;;2818:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2902:19;2912:8;2902:9;:19::i;:::-;2737:192:::0;:::o;27151:157::-;27236:4;27275:25;27260:40;;;:11;:40;;;;27253:47;;27151:157;;;:::o;31781:168::-;31895:12;31887:34;;;31922:4;31928:2;31932:10;31887:56;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31781:168;;;;:::o;625:98::-;678:7;705:10;698:17;;625:98;:::o;2937:173::-;2993:16;3012:6;;;;;;;;;;;2993:25;;3038:8;3029:6;;:17;;;;;;;;;;;;;;;;;;3093:8;3062:40;;3083:8;3062:40;;;;;;;;;;;;2982:128;2937:173;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:126::-;1555:7;1595:42;1588:5;1584:54;1573:65;;1518:126;;;:::o;1650:96::-;1687:7;1716:24;1734:5;1716:24;:::i;:::-;1705:35;;1650:96;;;:::o;1752:122::-;1825:24;1843:5;1825:24;:::i;:::-;1818:5;1815:35;1805:63;;1864:1;1861;1854:12;1805:63;1752:122;:::o;1880:139::-;1926:5;1964:6;1951:20;1942:29;;1980:33;2007:5;1980:33;:::i;:::-;1880:139;;;;:::o;2025:117::-;2134:1;2131;2124:12;2148:117;2257:1;2254;2247:12;2271:117;2380:1;2377;2370:12;2411:568;2484:8;2494:6;2544:3;2537:4;2529:6;2525:17;2521:27;2511:122;;2552:79;;:::i;:::-;2511:122;2665:6;2652:20;2642:30;;2695:18;2687:6;2684:30;2681:117;;;2717:79;;:::i;:::-;2681:117;2831:4;2823:6;2819:17;2807:29;;2885:3;2877:4;2869:6;2865:17;2855:8;2851:32;2848:41;2845:128;;;2892:79;;:::i;:::-;2845:128;2411:568;;;;;:::o;3002:::-;3075:8;3085:6;3135:3;3128:4;3120:6;3116:17;3112:27;3102:122;;3143:79;;:::i;:::-;3102:122;3256:6;3243:20;3233:30;;3286:18;3278:6;3275:30;3272:117;;;3308:79;;:::i;:::-;3272:117;3422:4;3414:6;3410:17;3398:29;;3476:3;3468:4;3460:6;3456:17;3446:8;3442:32;3439:41;3436:128;;;3483:79;;:::i;:::-;3436:128;3002:568;;;;;:::o;3576:1079::-;3707:6;3715;3723;3731;3739;3788:2;3776:9;3767:7;3763:23;3759:32;3756:119;;;3794:79;;:::i;:::-;3756:119;3914:1;3939:53;3984:7;3975:6;3964:9;3960:22;3939:53;:::i;:::-;3929:63;;3885:117;4069:2;4058:9;4054:18;4041:32;4100:18;4092:6;4089:30;4086:117;;;4122:79;;:::i;:::-;4086:117;4235:80;4307:7;4298:6;4287:9;4283:22;4235:80;:::i;:::-;4217:98;;;;4012:313;4392:2;4381:9;4377:18;4364:32;4423:18;4415:6;4412:30;4409:117;;;4445:79;;:::i;:::-;4409:117;4558:80;4630:7;4621:6;4610:9;4606:22;4558:80;:::i;:::-;4540:98;;;;4335:313;3576:1079;;;;;;;;:::o;4661:1455::-;4828:6;4836;4844;4852;4860;4868;4876;4925:3;4913:9;4904:7;4900:23;4896:33;4893:120;;;4932:79;;:::i;:::-;4893:120;5080:1;5069:9;5065:17;5052:31;5110:18;5102:6;5099:30;5096:117;;;5132:79;;:::i;:::-;5096:117;5245:80;5317:7;5308:6;5297:9;5293:22;5245:80;:::i;:::-;5227:98;;;;5023:312;5402:2;5391:9;5387:18;5374:32;5433:18;5425:6;5422:30;5419:117;;;5455:79;;:::i;:::-;5419:117;5568:80;5640:7;5631:6;5620:9;5616:22;5568:80;:::i;:::-;5550:98;;;;5345:313;5725:2;5714:9;5710:18;5697:32;5756:18;5748:6;5745:30;5742:117;;;5778:79;;:::i;:::-;5742:117;5891:80;5963:7;5954:6;5943:9;5939:22;5891:80;:::i;:::-;5873:98;;;;5668:313;6020:2;6046:53;6091:7;6082:6;6071:9;6067:22;6046:53;:::i;:::-;6036:63;;5991:118;4661:1455;;;;;;;;;;:::o;6122:77::-;6159:7;6188:5;6177:16;;6122:77;;;:::o;6205:122::-;6278:24;6296:5;6278:24;:::i;:::-;6271:5;6268:35;6258:63;;6317:1;6314;6307:12;6258:63;6205:122;:::o;6333:139::-;6379:5;6417:6;6404:20;6395:29;;6433:33;6460:5;6433:33;:::i;:::-;6333:139;;;;:::o;6478:329::-;6537:6;6586:2;6574:9;6565:7;6561:23;6557:32;6554:119;;;6592:79;;:::i;:::-;6554:119;6712:1;6737:53;6782:7;6773:6;6762:9;6758:22;6737:53;:::i;:::-;6727:63;;6683:117;6478:329;;;;:::o;6813:118::-;6900:24;6918:5;6900:24;:::i;:::-;6895:3;6888:37;6813:118;;:::o;6937:222::-;7030:4;7068:2;7057:9;7053:18;7045:26;;7081:71;7149:1;7138:9;7134:17;7125:6;7081:71;:::i;:::-;6937:222;;;;:::o;7165:329::-;7224:6;7273:2;7261:9;7252:7;7248:23;7244:32;7241:119;;;7279:79;;:::i;:::-;7241:119;7399:1;7424:53;7469:7;7460:6;7449:9;7445:22;7424:53;:::i;:::-;7414:63;;7370:117;7165:329;;;;:::o;7500:118::-;7587:24;7605:5;7587:24;:::i;:::-;7582:3;7575:37;7500:118;;:::o;7624:222::-;7717:4;7755:2;7744:9;7740:18;7732:26;;7768:71;7836:1;7825:9;7821:17;7812:6;7768:71;:::i;:::-;7624:222;;;;:::o;7852:104::-;7897:7;7926:24;7944:5;7926:24;:::i;:::-;7915:35;;7852:104;;;:::o;7962:142::-;8065:32;8091:5;8065:32;:::i;:::-;8060:3;8053:45;7962:142;;:::o;8110:254::-;8219:4;8257:2;8246:9;8242:18;8234:26;;8270:87;8354:1;8343:9;8339:17;8330:6;8270:87;:::i;:::-;8110:254;;;;:::o;8370:102::-;8411:6;8462:2;8458:7;8453:2;8446:5;8442:14;8438:28;8428:38;;8370:102;;;:::o;8478:180::-;8526:77;8523:1;8516:88;8623:4;8620:1;8613:15;8647:4;8644:1;8637:15;8664:281;8747:27;8769:4;8747:27;:::i;:::-;8739:6;8735:40;8877:6;8865:10;8862:22;8841:18;8829:10;8826:34;8823:62;8820:88;;;8888:18;;:::i;:::-;8820:88;8928:10;8924:2;8917:22;8707:238;8664:281;;:::o;8951:129::-;8985:6;9012:20;;:::i;:::-;9002:30;;9041:33;9069:4;9061:6;9041:33;:::i;:::-;8951:129;;;:::o;9086:311::-;9163:4;9253:18;9245:6;9242:30;9239:56;;;9275:18;;:::i;:::-;9239:56;9325:4;9317:6;9313:17;9305:25;;9385:4;9379;9375:15;9367:23;;9086:311;;;:::o;9420:710::-;9516:5;9541:81;9557:64;9614:6;9557:64;:::i;:::-;9541:81;:::i;:::-;9532:90;;9642:5;9671:6;9664:5;9657:21;9705:4;9698:5;9694:16;9687:23;;9758:4;9750:6;9746:17;9738:6;9734:30;9787:3;9779:6;9776:15;9773:122;;;9806:79;;:::i;:::-;9773:122;9921:6;9904:220;9938:6;9933:3;9930:15;9904:220;;;10013:3;10042:37;10075:3;10063:10;10042:37;:::i;:::-;10037:3;10030:50;10109:4;10104:3;10100:14;10093:21;;9980:144;9964:4;9959:3;9955:14;9948:21;;9904:220;;;9908:21;9522:608;;9420:710;;;;;:::o;10153:370::-;10224:5;10273:3;10266:4;10258:6;10254:17;10250:27;10240:122;;10281:79;;:::i;:::-;10240:122;10398:6;10385:20;10423:94;10513:3;10505:6;10498:4;10490:6;10486:17;10423:94;:::i;:::-;10414:103;;10230:293;10153:370;;;;:::o;10529:117::-;10638:1;10635;10628:12;10652:307;10713:4;10803:18;10795:6;10792:30;10789:56;;;10825:18;;:::i;:::-;10789:56;10863:29;10885:6;10863:29;:::i;:::-;10855:37;;10947:4;10941;10937:15;10929:23;;10652:307;;;:::o;10965:154::-;11049:6;11044:3;11039;11026:30;11111:1;11102:6;11097:3;11093:16;11086:27;10965:154;;;:::o;11125:410::-;11202:5;11227:65;11243:48;11284:6;11243:48;:::i;:::-;11227:65;:::i;:::-;11218:74;;11315:6;11308:5;11301:21;11353:4;11346:5;11342:16;11391:3;11382:6;11377:3;11373:16;11370:25;11367:112;;;11398:79;;:::i;:::-;11367:112;11488:41;11522:6;11517:3;11512;11488:41;:::i;:::-;11208:327;11125:410;;;;;:::o;11554:338::-;11609:5;11658:3;11651:4;11643:6;11639:17;11635:27;11625:122;;11666:79;;:::i;:::-;11625:122;11783:6;11770:20;11808:78;11882:3;11874:6;11867:4;11859:6;11855:17;11808:78;:::i;:::-;11799:87;;11615:277;11554:338;;;;:::o;11898:1509::-;12052:6;12060;12068;12076;12084;12133:3;12121:9;12112:7;12108:23;12104:33;12101:120;;;12140:79;;:::i;:::-;12101:120;12260:1;12285:53;12330:7;12321:6;12310:9;12306:22;12285:53;:::i;:::-;12275:63;;12231:117;12387:2;12413:53;12458:7;12449:6;12438:9;12434:22;12413:53;:::i;:::-;12403:63;;12358:118;12543:2;12532:9;12528:18;12515:32;12574:18;12566:6;12563:30;12560:117;;;12596:79;;:::i;:::-;12560:117;12701:78;12771:7;12762:6;12751:9;12747:22;12701:78;:::i;:::-;12691:88;;12486:303;12856:2;12845:9;12841:18;12828:32;12887:18;12879:6;12876:30;12873:117;;;12909:79;;:::i;:::-;12873:117;13014:78;13084:7;13075:6;13064:9;13060:22;13014:78;:::i;:::-;13004:88;;12799:303;13169:3;13158:9;13154:19;13141:33;13201:18;13193:6;13190:30;13187:117;;;13223:79;;:::i;:::-;13187:117;13328:62;13382:7;13373:6;13362:9;13358:22;13328:62;:::i;:::-;13318:72;;13112:288;11898:1509;;;;;;;;:::o;13413:115::-;13498:23;13515:5;13498:23;:::i;:::-;13493:3;13486:36;13413:115;;:::o;13534:218::-;13625:4;13663:2;13652:9;13648:18;13640:26;;13676:69;13742:1;13731:9;13727:17;13718:6;13676:69;:::i;:::-;13534:218;;;;:::o;13758:1831::-;13961:6;13969;13977;13985;13993;14001;14009;14017;14025;14074:3;14062:9;14053:7;14049:23;14045:33;14042:120;;;14081:79;;:::i;:::-;14042:120;14229:1;14218:9;14214:17;14201:31;14259:18;14251:6;14248:30;14245:117;;;14281:79;;:::i;:::-;14245:117;14394:80;14466:7;14457:6;14446:9;14442:22;14394:80;:::i;:::-;14376:98;;;;14172:312;14551:2;14540:9;14536:18;14523:32;14582:18;14574:6;14571:30;14568:117;;;14604:79;;:::i;:::-;14568:117;14717:80;14789:7;14780:6;14769:9;14765:22;14717:80;:::i;:::-;14699:98;;;;14494:313;14874:2;14863:9;14859:18;14846:32;14905:18;14897:6;14894:30;14891:117;;;14927:79;;:::i;:::-;14891:117;15040:80;15112:7;15103:6;15092:9;15088:22;15040:80;:::i;:::-;15022:98;;;;14817:313;15197:2;15186:9;15182:18;15169:32;15228:18;15220:6;15217:30;15214:117;;;15250:79;;:::i;:::-;15214:117;15363:80;15435:7;15426:6;15415:9;15411:22;15363:80;:::i;:::-;15345:98;;;;15140:313;15492:3;15519:53;15564:7;15555:6;15544:9;15540:22;15519:53;:::i;:::-;15509:63;;15463:119;13758:1831;;;;;;;;;;;:::o;15595:138::-;15676:32;15702:5;15676:32;:::i;:::-;15669:5;15666:43;15656:71;;15723:1;15720;15713:12;15656:71;15595:138;:::o;15739:155::-;15793:5;15831:6;15818:20;15809:29;;15847:41;15882:5;15847:41;:::i;:::-;15739:155;;;;:::o;15900:345::-;15967:6;16016:2;16004:9;15995:7;15991:23;15987:32;15984:119;;;16022:79;;:::i;:::-;15984:119;16142:1;16167:61;16220:7;16211:6;16200:9;16196:22;16167:61;:::i;:::-;16157:71;;16113:125;15900:345;;;;:::o;16251:1089::-;16355:6;16363;16371;16379;16387;16436:3;16424:9;16415:7;16411:23;16407:33;16404:120;;;16443:79;;:::i;:::-;16404:120;16563:1;16588:53;16633:7;16624:6;16613:9;16609:22;16588:53;:::i;:::-;16578:63;;16534:117;16690:2;16716:53;16761:7;16752:6;16741:9;16737:22;16716:53;:::i;:::-;16706:63;;16661:118;16818:2;16844:53;16889:7;16880:6;16869:9;16865:22;16844:53;:::i;:::-;16834:63;;16789:118;16946:2;16972:53;17017:7;17008:6;16997:9;16993:22;16972:53;:::i;:::-;16962:63;;16917:118;17102:3;17091:9;17087:19;17074:33;17134:18;17126:6;17123:30;17120:117;;;17156:79;;:::i;:::-;17120:117;17261:62;17315:7;17306:6;17295:9;17291:22;17261:62;:::i;:::-;17251:72;;17045:288;16251:1089;;;;;;;;:::o;17346:169::-;17430:11;17464:6;17459:3;17452:19;17504:4;17499:3;17495:14;17480:29;;17346:169;;;;:::o;17521:181::-;17661:33;17657:1;17649:6;17645:14;17638:57;17521:181;:::o;17708:366::-;17850:3;17871:67;17935:2;17930:3;17871:67;:::i;:::-;17864:74;;17947:93;18036:3;17947:93;:::i;:::-;18065:2;18060:3;18056:12;18049:19;;17708:366;;;:::o;18080:419::-;18246:4;18284:2;18273:9;18269:18;18261:26;;18333:9;18327:4;18323:20;18319:1;18308:9;18304:17;18297:47;18361:131;18487:4;18361:131;:::i;:::-;18353:139;;18080:419;;;:::o;18505:162::-;18645:14;18641:1;18633:6;18629:14;18622:38;18505:162;:::o;18673:366::-;18815:3;18836:67;18900:2;18895:3;18836:67;:::i;:::-;18829:74;;18912:93;19001:3;18912:93;:::i;:::-;19030:2;19025:3;19021:12;19014:19;;18673:366;;;:::o;19045:419::-;19211:4;19249:2;19238:9;19234:18;19226:26;;19298:9;19292:4;19288:20;19284:1;19273:9;19269:17;19262:47;19326:131;19452:4;19326:131;:::i;:::-;19318:139;;19045:419;;;:::o;19470:180::-;19518:77;19515:1;19508:88;19615:4;19612:1;19605:15;19639:4;19636:1;19629:15;19656:180;19704:77;19701:1;19694:88;19801:4;19798:1;19791:15;19825:4;19822:1;19815:15;19842:233;19881:3;19904:24;19922:5;19904:24;:::i;:::-;19895:33;;19950:66;19943:5;19940:77;19937:103;;;20020:18;;:::i;:::-;19937:103;20067:1;20060:5;20056:13;20049:20;;19842:233;;;:::o;20081:143::-;20138:5;20169:6;20163:13;20154:22;;20185:33;20212:5;20185:33;:::i;:::-;20081:143;;;;:::o;20230:351::-;20300:6;20349:2;20337:9;20328:7;20324:23;20320:32;20317:119;;;20355:79;;:::i;:::-;20317:119;20475:1;20500:64;20556:7;20547:6;20536:9;20532:22;20500:64;:::i;:::-;20490:74;;20446:128;20230:351;;;;:::o;20587:182::-;20727:34;20723:1;20715:6;20711:14;20704:58;20587:182;:::o;20775:366::-;20917:3;20938:67;21002:2;20997:3;20938:67;:::i;:::-;20931:74;;21014:93;21103:3;21014:93;:::i;:::-;21132:2;21127:3;21123:12;21116:19;;20775:366;;;:::o;21147:419::-;21313:4;21351:2;21340:9;21336:18;21328:26;;21400:9;21394:4;21390:20;21386:1;21375:9;21371:17;21364:47;21428:131;21554:4;21428:131;:::i;:::-;21420:139;;21147:419;;;:::o;21572:180::-;21620:77;21617:1;21610:88;21717:4;21714:1;21707:15;21741:4;21738:1;21731:15;21758:320;21802:6;21839:1;21833:4;21829:12;21819:22;;21886:1;21880:4;21876:12;21907:18;21897:81;;21963:4;21955:6;21951:17;21941:27;;21897:81;22025:2;22017:6;22014:14;21994:18;21991:38;21988:84;;;22044:18;;:::i;:::-;21988:84;21809:269;21758:320;;;:::o;22084:168::-;22167:11;22201:6;22196:3;22189:19;22241:4;22236:3;22232:14;22217:29;;22084:168;;;;:::o;22258:140::-;22306:4;22329:3;22321:11;;22352:3;22349:1;22342:14;22386:4;22383:1;22373:18;22365:26;;22258:140;;;:::o;22426:798::-;22509:3;22546:5;22540:12;22575:36;22601:9;22575:36;:::i;:::-;22627:70;22690:6;22685:3;22627:70;:::i;:::-;22620:77;;22728:1;22717:9;22713:17;22744:1;22739:135;;;;22888:1;22883:335;;;;22706:512;;22739:135;22823:4;22819:9;22808;22804:25;22799:3;22792:38;22859:4;22854:3;22850:14;22843:21;;22739:135;;22883:335;22950:37;22981:5;22950:37;:::i;:::-;23009:1;23023:154;23037:6;23034:1;23031:13;23023:154;;;23111:7;23105:14;23101:1;23096:3;23092:11;23085:35;23161:1;23152:7;23148:15;23137:26;;23059:4;23056:1;23052:12;23047:17;;23023:154;;;23206:1;23201:3;23197:11;23190:18;;22890:328;;22706:512;;22513:711;;22426:798;;;;:::o;23230:745::-;23450:4;23488:3;23477:9;23473:19;23465:27;;23502:71;23570:1;23559:9;23555:17;23546:6;23502:71;:::i;:::-;23583:72;23651:2;23640:9;23636:18;23627:6;23583:72;:::i;:::-;23665;23733:2;23722:9;23718:18;23709:6;23665:72;:::i;:::-;23747;23815:2;23804:9;23800:18;23791:6;23747:72;:::i;:::-;23867:9;23861:4;23857:20;23851:3;23840:9;23836:19;23829:49;23895:73;23963:4;23954:6;23895:73;:::i;:::-;23887:81;;23230:745;;;;;;;;:::o;23981:143::-;24038:5;24069:6;24063:13;24054:22;;24085:33;24112:5;24085:33;:::i;:::-;23981:143;;;;:::o;24130:351::-;24200:6;24249:2;24237:9;24228:7;24224:23;24220:32;24217:119;;;24255:79;;:::i;:::-;24217:119;24375:1;24400:64;24456:7;24447:6;24436:9;24432:22;24400:64;:::i;:::-;24390:74;;24346:128;24130:351;;;;:::o;24487:60::-;24515:3;24536:5;24529:12;;24487:60;;;:::o;24553:142::-;24603:9;24636:53;24654:34;24663:24;24681:5;24663:24;:::i;:::-;24654:34;:::i;:::-;24636:53;:::i;:::-;24623:66;;24553:142;;;:::o;24701:126::-;24751:9;24784:37;24815:5;24784:37;:::i;:::-;24771:50;;24701:126;;;:::o;24833:134::-;24891:9;24924:37;24955:5;24924:37;:::i;:::-;24911:50;;24833:134;;;:::o;24973:147::-;25068:45;25107:5;25068:45;:::i;:::-;25063:3;25056:58;24973:147;;:::o;25126:348::-;25255:4;25293:2;25282:9;25278:18;25270:26;;25306:79;25382:1;25371:9;25367:17;25358:6;25306:79;:::i;:::-;25395:72;25463:2;25452:9;25448:18;25439:6;25395:72;:::i;:::-;25126:348;;;;;:::o;25480:116::-;25550:21;25565:5;25550:21;:::i;:::-;25543:5;25540:32;25530:60;;25586:1;25583;25576:12;25530:60;25480:116;:::o;25602:137::-;25656:5;25687:6;25681:13;25672:22;;25703:30;25727:5;25703:30;:::i;:::-;25602:137;;;;:::o;25745:345::-;25812:6;25861:2;25849:9;25840:7;25836:23;25832:32;25829:119;;;25867:79;;:::i;:::-;25829:119;25987:1;26012:61;26065:7;26056:6;26045:9;26041:22;26012:61;:::i;:::-;26002:71;;25958:125;25745:345;;;;:::o;26096:225::-;26236:34;26232:1;26224:6;26220:14;26213:58;26305:8;26300:2;26292:6;26288:15;26281:33;26096:225;:::o;26327:366::-;26469:3;26490:67;26554:2;26549:3;26490:67;:::i;:::-;26483:74;;26566:93;26655:3;26566:93;:::i;:::-;26684:2;26679:3;26675:12;26668:19;;26327:366;;;:::o;26699:419::-;26865:4;26903:2;26892:9;26888:18;26880:26;;26952:9;26946:4;26942:20;26938:1;26927:9;26923:17;26916:47;26980:131;27106:4;26980:131;:::i;:::-;26972:139;;26699:419;;;:::o;27124:442::-;27273:4;27311:2;27300:9;27296:18;27288:26;;27324:71;27392:1;27381:9;27377:17;27368:6;27324:71;:::i;:::-;27405:72;27473:2;27462:9;27458:18;27449:6;27405:72;:::i;:::-;27487;27555:2;27544:9;27540:18;27531:6;27487:72;:::i;:::-;27124:442;;;;;;:::o
Swarm Source
ipfs://5a346c0ca5f2c56b4c471abe933a2decaeedc4bce1e75314498841ab9f98199d
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.