Contract Overview
Balance:
0 MATIC
MATIC Value:
$0.00
[ Download CSV Export ]
Latest 1 internal transaction
Parent Txn Hash | Block | From | To | Value | |||
---|---|---|---|---|---|---|---|
0x2e6ed1ac7bb1904ec39525be1d2b81680c331f5f61d569c7c462d6d9ddef7e1c | 27823640 | 107 days 14 hrs ago | 0x52ac1e7fae44fb0271131185fc55dbd026e455c3 | 0xf9c35da0cc8d59edef172204f64a71ba0ab2d710 | 3,186 MATIC |
[ Download CSV Export ]
Contract Name:
BidenNFT
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2022-03-27 */ // File: contract/biden/LetsgoNFTBase.sol //SPDX-License-Identifier: Unlicense pragma solidity ^0.8.0; contract LetsgoNFTBase { uint256 public mantissa = 10000; struct AddreessWithPercent { address addr; uint256 value; } function validateCoCreators(AddreessWithPercent[] memory coCreators) external view{ require( coCreators.length <= 10, "validateCoCreators: coCreators length should be less or equal to 10" ); uint256 coCreatorsSum = 0; for (uint256 i = 0; i < coCreators.length; i++) { require( coCreators[i].addr != address(0), "validateCoCreators: coCreator address address can't be empty" ); require( coCreators[i].value > 0, "validateCoCreators: coCreator value must be higher than 0" ); coCreatorsSum += coCreators[i].value; } require( coCreatorsSum <= mantissa, "validateCoCreators: coCreators sum should be less or equal to 100%" ); } } // File: contract/biden/MerkleProof.sol // OpenZeppelin Contracts v4.4.1 (utils/cryptography/MerkleProof.sol) pragma solidity ^0.8.0; /** * @dev These functions deal with verification of Merkle Trees proofs. * * The proofs can be generated using the JavaScript library * https://github.com/miguelmota/merkletreejs[merkletreejs]. * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled. * * See `test/utils/cryptography/MerkleProof.test.js` for some examples. */ library MerkleProof { /** * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree * defined by `root`. For this, a `proof` must be provided, containing * sibling hashes on the branch from the leaf to the root of the tree. Each * pair of leaves and each pair of pre-images are assumed to be sorted. */ function verify( bytes32[] memory proof, bytes32 root, bytes32 leaf ) internal pure returns (bool) { return processProof(proof, leaf) == root; } /** * @dev Returns the rebuilt hash obtained by traversing a Merklee tree up * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt * hash matches the root of the tree. When processing the proof, the pairs * of leafs & pre-images are assumed to be sorted. * * _Available since v4.4._ */ function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { bytes32 proofElement = proof[i]; if (computedHash <= proofElement) { // Hash(current computed hash + current element of the proof) computedHash = _efficientHash(computedHash, proofElement); } else { // Hash(current element of the proof + current computed hash) computedHash = _efficientHash(proofElement, computedHash); } } return computedHash; } function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) { assembly { mstore(0x00, a) mstore(0x20, b) value := keccak256(0x00, 0x40) } } } // File: @openzeppelin/contracts/utils/Counters.sol // OpenZeppelin Contracts v4.4.1 (utils/Counters.sol) pragma solidity ^0.8.0; /** * @title Counters * @author Matt Condon (@shrugs) * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number * of elements in a mapping, issuing ERC721 ids, or counting request ids. * * Include with `using Counters for Counters.Counter;` */ library Counters { struct Counter { // This variable should never be directly accessed by users of the library: interactions must be restricted to // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add // this feature: see https://github.com/ethereum/solidity/issues/4637 uint256 _value; // default: 0 } function current(Counter storage counter) internal view returns (uint256) { return counter._value; } function increment(Counter storage counter) internal { unchecked { counter._value += 1; } } function decrement(Counter storage counter) internal { uint256 value = counter._value; require(value > 0, "Counter: decrement overflow"); unchecked { counter._value = value - 1; } } function reset(Counter storage counter) internal { counter._value = 0; } } // File: @openzeppelin/contracts/utils/Strings.sol // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (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 // OpenZeppelin Contracts v4.4.1 (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() { _transferOwnership(_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 { _transferOwnership(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"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @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 * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 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/ERC721/IERC721Receiver.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721Receiver.sol) pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } // File: @openzeppelin/contracts/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.1 (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/utils/introspection/ERC165.sol // OpenZeppelin Contracts v4.4.1 (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/ERC721/IERC721.sol // OpenZeppelin Contracts v4.4.1 (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/IERC721Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol) pragma solidity ^0.8.0; /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); } // File: @openzeppelin/contracts/token/ERC721/ERC721.sol // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/ERC721.sol) pragma solidity ^0.8.0; /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including * the Metadata extension, but not including the Enumerable extension, which is available separately as * {ERC721Enumerable}. */ contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to owner address mapping(uint256 => address) private _owners; // Mapping owner address to token count mapping(address => uint256) private _balances; // Mapping from token ID to approved address mapping(uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; /** * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); return _balances[owner]; } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } /** * @dev See {IERC721Metadata-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } /** * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each * token will be the concatenation of the `baseURI` and the `tokenId`. Empty * by default, can be overriden in child contracts. */ function _baseURI() internal view virtual returns (string memory) { return ""; } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { _setApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } /** * @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. * * `_data` is additional data, it has no specified format and it is sent in call to `to`. * * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. * implement alternative mechanisms to perform token transfer, such as signature-based. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeTransfer( address from, address to, uint256 tokenId, bytes memory _data ) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), * and stop existing when they are burned (`_burn`). */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } /** * @dev Safely mints `tokenId` and transfers it to `to`. * * Requirements: * * - `tokenId` must not exist. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } /** * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. */ function _safeMint( address to, uint256 tokenId, bytes memory _data ) internal virtual { _mint(to, tokenId); require( _checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer" ); } /** * @dev Mints `tokenId` and transfers it to `to`. * * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible * * Requirements: * * - `tokenId` must not exist. * - `to` cannot be the zero address. * * Emits a {Transfer} event. */ function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); _afterTokenTransfer(address(0), to, tokenId); } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); _balances[owner] -= 1; delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); _afterTokenTransfer(owner, address(0), tokenId); } /** * @dev Transfers `tokenId` from `from` to `to`. * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. * * Requirements: * * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * * Emits a {Transfer} event. */ function _transfer( address from, address to, uint256 tokenId ) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer from incorrect owner"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); _afterTokenTransfer(from, to, tokenId); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev Approve `operator` to operate on all of `owner` tokens * * Emits a {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC721: approve to caller"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver.onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} } // File: contract/biden/Biden.sol pragma solidity >=0.7.0 <0.9.0; // import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/cryptography/MerkleProof.sol"; contract BidenNFT is ERC721, Ownable, LetsgoNFTBase { using Strings for uint256; using Counters for Counters.Counter; Counters.Counter private supply; string public xname = "Biden Legacy Collection"; string public xsymbol = "Biden"; constructor() ERC721(xname, xsymbol){ status_airdrop = true; status_presale = true; status_revealed = true; url_revealedJSON = "ipfs://QmcE1zXDX5DDDfxqfz5BvZeCwNW9PBAEyj1xSHXQ4VXfwY/"; url_collection = "https://gateway.pinata.cloud/ipfs/QmWhHAqNFVdtgHagLHKBLWNdm1uVShWdotkQA1STcGPkDe/"; cost_presale = 100000000000000000; cost_publicSale = 150000000000000000; limit_mintPresale = 20; limit_mintPublicSale = 20; limit_airdropClaims = 100; total_NFTSupply = 10000; } string private url_revealedJSON; string private url_hiddenJSON; string private url_collection; string private url_hiddenImage; bytes32 private merkle_airdrop; bool public status_revealed; bool public status_paused; bool public status_presale; bool public status_airdrop; uint256 private report_totalWithdrawn; uint256 private report_totalRoyaltySales; uint256 private report_totalSales; uint256 private report_totalAirdropMinted; uint256 private limit_mintPresale; uint256 private limit_mintPublicSale; uint256 private limit_airdropClaims; uint256 private cost_presale; uint256 private cost_publicSale; uint256 private total_NFTSupply; uint256[] private list_royaltyAmounts; address[] private list_royaltyAddresses; address[] private list_airdropAddresses; address[] private list_airdropMintingAddresses; address[] private list_administrators; mapping(address => uint256) public map_whitelistMinting; mapping(address => uint256) public map_airdropClaims; mapping(address => uint256) public map_airdropMintedClaims; bytes4 _interfaceId = 0xce77acc3; uint256 private _royalty = 500; mapping(uint256 => address) private _creators; function totalSupply() public view returns(uint256){ return supply.current(); } function _baseURI() internal view virtual override returns (string memory) { return url_revealedJSON; } function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); if(status_revealed == false) { return url_hiddenJSON; } string memory currentBaseURI = _baseURI(); return bytes(currentBaseURI).length > 0 ? string(abi.encodePacked(currentBaseURI, tokenId.toString(), ".json")) : ""; } function isOwner() public view returns(bool){ return msg.sender == owner(); } function setPaused(bool _state) public onlyOwner { status_paused = _state; } function getCollectionURL(address addr) public view returns(string memory){ if(addr == owner() || status_revealed){ return url_collection; } return url_hiddenImage; } function computeCost(uint256 _mintAmount) private view returns(uint256){ return (status_presale ? cost_presale : cost_publicSale) * _mintAmount; } function walletOfOwner(address _owner) public view returns (uint256[] memory){ uint256 ownerTokenCount = balanceOf(_owner); uint256[] memory tokenIds = new uint256[](ownerTokenCount); uint256 currentTokenId = 1; uint256 ownedTokenIndex = 0; while(ownedTokenIndex < ownerTokenCount && currentTokenId <= total_NFTSupply){ address currentTokenOwner = ownerOf(currentTokenId); if(currentTokenOwner == _owner){ tokenIds[ownedTokenIndex] = currentTokenId; ownedTokenIndex += 1; } currentTokenId += 1; } return tokenIds; } function withdraw() public payable onlyOwner { uint256 amount = 0; uint256 i = 0; uint balance = address(this).balance; uint256 remaining = balance; while(i < list_royaltyAmounts.length && remaining > 0){ amount = balance * list_royaltyAmounts[i] / 100; remaining = remaining - amount; (bool o,) = payable(list_royaltyAddresses[i]).call{value: amount}(""); require(o); i += 1; } if(remaining > 0){ (bool a,) = payable(owner()).call{value: remaining}(""); require(a); } } function mint(uint256 _mintAmount) public payable{ require(!status_paused, "Minting is paused"); require(supply.current() + _mintAmount <= total_NFTSupply, "Mint quantity exceeds max supply"); if (!isOwner()) { require(msg.value >= computeCost(_mintAmount), "Cost is too low"); } for (uint256 i = 1; i <= _mintAmount; i+=1) { supply.increment(); _safeMint(msg.sender, supply.current()); if(status_presale){ map_whitelistMinting[msg.sender]++; } _creators[supply.current()] = msg.sender; } } function sendAirdrop(address[] memory addresses) public onlyAdministrators{ require(status_airdrop, "Airdrop is not enabled"); require(supply.current() + addresses.length < total_NFTSupply, "Airdrop addresses exceeds the total NFT supply"); uint256 i = 0; while(i < addresses.length){ supply.increment(); _safeMint(addresses[i], supply.current()); map_airdropClaims[addresses[i]] += 1; i += 1; } } function claimAirdrop(bytes32[] calldata _merkleProof) public { require(status_airdrop, "Airdrop is not enabled"); require(report_totalAirdropMinted < limit_airdropClaims, "No more available airdrops."); uint256 claimed = map_airdropMintedClaims[msg.sender]; require(claimed == 0, "Address already claimed"); bytes32 leaf = keccak256(abi.encodePacked(msg.sender)); require(MerkleProof.verify(_merkleProof, merkle_airdrop, leaf), "Invalid proof"); map_airdropMintedClaims[msg.sender] += 1; supply.increment(); _safeMint(msg.sender, supply.current()); report_totalAirdropMinted += 1; } function bulkTransfer(uint256[] memory tokenIds, address receiver) public{ uint256[] memory ownedTokens = walletOfOwner(msg.sender); uint256 i = 0; uint256 j = 0; while(i < tokenIds.length){ j = 0; while(j < ownedTokens.length){ if(tokenIds[i] == ownedTokens[j]){ _transfer(msg.sender, receiver, ownedTokens[j]); } j+=1; } i+=1; } } function setSettings( uint256 xPublicSaleCost, uint256 xPreSaleCost, uint256 xtotalNFTSupply, uint256 xMaxMintQuantity, uint256 xNFTPerAddressLimit, uint256[] memory xRoyalty, address[] memory xRoyaltyAddress, bool xPaused, bool xRevealed, bool xPreSaleEnabled ) public onlyOwner{ cost_publicSale = xPublicSaleCost; cost_presale = xPreSaleCost; total_NFTSupply = xtotalNFTSupply; limit_mintPublicSale = xMaxMintQuantity; limit_mintPresale = xNFTPerAddressLimit; list_royaltyAmounts = xRoyalty; list_royaltyAddresses = xRoyaltyAddress; status_paused = xPaused; status_revealed = xRevealed; status_presale = xPreSaleEnabled; } function setURL( string memory newBaseURL, string memory newNotRevealedURL, string memory newArtURL, string memory newHiddenArtURL ) public onlyAdministrators{ url_revealedJSON = newBaseURL; url_hiddenJSON = newNotRevealedURL; url_collection = newArtURL; url_hiddenImage = newHiddenArtURL; } function setAirdrop( bool xAirdropEnabled, bytes32 xAirdropAddresses, uint256 xAirdropLimit ) public onlyOwner{ status_airdrop = xAirdropEnabled; limit_airdropClaims = xAirdropLimit; merkle_airdrop = xAirdropAddresses; } modifier onlyAdministrators() { bool isAdmin = isAdministrator(); if(!isAdmin){ isAdmin = owner() == _msgSender(); } require(isAdmin, "Ownable: caller is neither owner nor administrator"); _; } function setAdministrators(address[] memory adminAddress) public onlyOwner{ delete list_administrators; list_administrators = adminAddress; } function isAdministrator() public view returns(bool){ if(msg.sender == owner()){ return true; } for(uint256 i = 0; i < list_administrators.length; i += 1){ if(msg.sender == list_administrators[i]){ return true; } } return false; } function getAirdropClaims(address addr, bool isMinted) public view returns (uint256){ if(isMinted){ return map_airdropMintedClaims[addr]; } return map_airdropClaims[addr]; } function getSettings() public view returns( uint256, uint256, uint256, uint256, uint256, uint256, uint256[] memory, address[] memory, bool, bool, bool, address[] memory){ return ( cost_publicSale, cost_presale, total_NFTSupply, totalSupply(), limit_mintPublicSale, limit_mintPresale, list_royaltyAmounts, list_royaltyAddresses, status_paused, status_revealed, status_presale, list_administrators ); } function getAirdropSettings(address sender) public view returns( bool, uint256, uint256, uint256, uint256, address[] memory, address[] memory){ return ( status_airdrop, report_totalAirdropMinted, limit_airdropClaims, map_airdropClaims[sender], map_airdropMintedClaims[sender], list_airdropAddresses, list_airdropMintingAddresses ); } function getURLs(address addr) public view returns( string memory, string memory, string memory, string memory, string memory, string memory){ return ( url_revealedJSON, url_hiddenJSON, getCollectionURL(addr), url_hiddenImage, xname, xsymbol ); } function getSales() public view returns( uint256, uint256, uint256, uint256){ return( report_totalSales, report_totalRoyaltySales, report_totalWithdrawn, address(this).balance ); } function getRoyalty(uint256 tokenId) external view returns (uint256) { return _royalty; } function getCreator(uint256 tokenId) external view returns (address) { return _creators[tokenId]; } function getCoCreators(uint256 tokenId) external view returns (AddreessWithPercent[] memory) { AddreessWithPercent[] memory array; return array; } function supportsInterface(bytes4 interfaceId) public view virtual override(ERC721) returns (bool) { return interfaceId == _interfaceId || super.supportsInterface(interfaceId); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"address","name":"receiver","type":"address"}],"name":"bulkTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"_merkleProof","type":"bytes32[]"}],"name":"claimAirdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"isMinted","type":"bool"}],"name":"getAirdropClaims","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"getAirdropSettings","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getCoCreators","outputs":[{"components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"internalType":"struct LetsgoNFTBase.AddreessWithPercent[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"getCollectionURL","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getCreator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getRoyalty","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSales","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSettings","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"address[]","name":"","type":"address[]"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"getURLs","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isAdministrator","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"map_airdropClaims","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"map_airdropMintedClaims","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"map_whitelistMinting","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"sendAirdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"adminAddress","type":"address[]"}],"name":"setAdministrators","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"xAirdropEnabled","type":"bool"},{"internalType":"bytes32","name":"xAirdropAddresses","type":"bytes32"},{"internalType":"uint256","name":"xAirdropLimit","type":"uint256"}],"name":"setAirdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"xPublicSaleCost","type":"uint256"},{"internalType":"uint256","name":"xPreSaleCost","type":"uint256"},{"internalType":"uint256","name":"xtotalNFTSupply","type":"uint256"},{"internalType":"uint256","name":"xMaxMintQuantity","type":"uint256"},{"internalType":"uint256","name":"xNFTPerAddressLimit","type":"uint256"},{"internalType":"uint256[]","name":"xRoyalty","type":"uint256[]"},{"internalType":"address[]","name":"xRoyaltyAddress","type":"address[]"},{"internalType":"bool","name":"xPaused","type":"bool"},{"internalType":"bool","name":"xRevealed","type":"bool"},{"internalType":"bool","name":"xPreSaleEnabled","type":"bool"}],"name":"setSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newBaseURL","type":"string"},{"internalType":"string","name":"newNotRevealedURL","type":"string"},{"internalType":"string","name":"newArtURL","type":"string"},{"internalType":"string","name":"newHiddenArtURL","type":"string"}],"name":"setURL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"status_airdrop","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"status_paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"status_presale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"status_revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"internalType":"struct LetsgoNFTBase.AddreessWithPercent[]","name":"coCreators","type":"tuple[]"}],"name":"validateCoCreators","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"xname","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"xsymbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
61271060075560c0604052601760808190527f426964656e204c656761637920436f6c6c656374696f6e00000000000000000060a090815262000046916009919062000308565b50604080518082019091526005808252642134b232b760d91b60209092019182526200007591600a9162000308565b506023805463ffffffff191663ce77acc31790556101f46024553480156200009c57600080fd5b5060098054620000ac90620003ae565b80601f0160208091040260200160405190810160405280929190818152602001828054620000da90620003ae565b80156200012b5780601f10620000ff576101008083540402835291602001916200012b565b820191906000526020600020905b8154815290600101906020018083116200010d57829003601f168201915b5050505050600a80546200013f90620003ae565b80601f01602080910402602001604051908101604052809291908181526020018280546200016d90620003ae565b8015620001be5780601f106200019257610100808354040283529160200191620001be565b820191906000526020600020905b815481529060010190602001808311620001a057829003601f168201915b50508451620001d893506000925060208601915062000308565b508051620001ee90600190602084019062000308565b5050506200020b62000205620002b260201b60201c565b620002b6565b6010805463ffff00ff191663010100011790556040805160608101909152603680825262003fad602083013980516200024d91600b9160209091019062000308565b5060405180608001604052806051815260200162003fe36051913980516200027e91600d9160209091019062000308565b5067016345785d8a0000601855670214e8348c4f0000601955601460158190556016556064601755612710601a55620003eb565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200031690620003ae565b90600052602060002090601f0160209004810192826200033a576000855562000385565b82601f106200035557805160ff191683800117855562000385565b8280016001018555821562000385579182015b828111156200038557825182559160200191906001019062000368565b506200039392915062000397565b5090565b5b8082111562000393576000815560010162000398565b600181811c90821680620003c357607f821691505b60208210811415620003e557634e487b7160e01b600052602260045260246000fd5b50919050565b613bb280620003fb6000396000f3fe6080604052600436106102c95760003560e01c80638556093e11610175578063b88d4fde116100dc578063e23ab55b11610095578063e985e9c51161006f578063e985e9c5146108de578063ea29e93814610927578063f2fde38b14610954578063f4c4dcd21461097457600080fd5b8063e23ab55b1461086c578063e27d46631461089e578063e6166f90146108be57600080fd5b8063b88d4fde146107a0578063beab1f1d146107c0578063c87b56dd146107d5578063d0d9dc7d146107f5578063d48e638a14610816578063df3c410f1461084c57600080fd5b8063981a033b1161012e578063981a033b146106f35780639ffdaa6114610713578063a0712d681461072d578063a22cb46514610740578063a3f0939b14610760578063b4ce7d451461078057600080fd5b80638556093e1461063257806385b4bb53146106525780638da5cb5b1461067f5780638f32d59b1461069d57806395d89b41146106b257806396a3c7a6146106c757600080fd5b8063438b6300116102345780635c8177a2116101ed578063657d9501116101c7578063657d9501146105be57806370a08231146105de57806370b54f1b146105fe578063715018a61461061d57600080fd5b80635c8177a21461055b5780635e8b5ff9146105715780636352211e1461059e57600080fd5b8063438b6300146104785780634beb2219146104a55780634d92a80f146104d85780635092e130146104f857806350e0ab6b1461052657806353223ab01461053b57600080fd5b806318160ddd1161028657806318160ddd146103d65780631aea6257146103f95780631af9cf491461040e57806323b872dd146104305780633ccfd60b1461045057806342842e0e1461045857600080fd5b806301ffc9a7146102ce57806306fdde0314610303578063081812fc14610325578063095ea7b31461035d5780630d83304c1461037f57806316c38b3c146103b6575b600080fd5b3480156102da57600080fd5b506102ee6102e93660046133b9565b610994565b60405190151581526020015b60405180910390f35b34801561030f57600080fd5b506103186109c2565b6040516102fa919061374d565b34801561033157600080fd5b50610345610340366004613493565b610a54565b6040516001600160a01b0390911681526020016102fa565b34801561036957600080fd5b5061037d610378366004613194565b610aee565b005b34801561038b57600080fd5b50601354601254601154476040805194855260208501939093529183015260608201526080016102fa565b3480156103c257600080fd5b5061037d6103d136600461336b565b610c04565b3480156103e257600080fd5b506103eb610c48565b6040519081526020016102fa565b34801561040557600080fd5b506102ee610c58565b34801561041a57600080fd5b506103eb610429366004613493565b5060245490565b34801561043c57600080fd5b5061037d61044b3660046130b3565b610ce9565b61037d610d1a565b34801561046457600080fd5b5061037d6104733660046130b3565b610eb1565b34801561048457600080fd5b50610498610493366004613065565b610ecc565b6040516102fa91906136e7565b3480156104b157600080fd5b506104c56104c0366004613065565b610fac565b6040516102fa97969594939291906136fa565b3480156104e457600080fd5b5061037d6104f3366004613386565b6110c9565b34801561050457600080fd5b50610519610513366004613493565b50606090565b6040516102fa919061368f565b34801561053257600080fd5b5061031861111b565b34801561054757600080fd5b5061037d6105563660046131f2565b6111a9565b34801561056757600080fd5b506103eb60075481565b34801561057d57600080fd5b506103eb61058c366004613065565b60216020526000908152604090205481565b3480156105aa57600080fd5b506103456105b9366004613493565b6113c0565b3480156105ca57600080fd5b5061037d6105d93660046131be565b611437565b3480156105ea57600080fd5b506103eb6105f9366004613065565b6115e4565b34801561060a57600080fd5b506010546102ee90610100900460ff1681565b34801561062957600080fd5b5061037d61166b565b34801561063e57600080fd5b5061037d61064d3660046134ac565b6116a1565b34801561065e57600080fd5b5061066761174b565b6040516102fa9c9b9a9998979695949392919061390c565b34801561068b57600080fd5b506006546001600160a01b0316610345565b3480156106a957600080fd5b506102ee6118c7565b3480156106be57600080fd5b506103186118f4565b3480156106d357600080fd5b506103eb6106e2366004613065565b602080526000908152604090205481565b3480156106ff57600080fd5b5061037d61070e3660046133f3565b611903565b34801561071f57600080fd5b506010546102ee9060ff1681565b61037d61073b366004613493565b611998565b34801561074c57600080fd5b5061037d61075b36600461316a565b611b47565b34801561076c57600080fd5b5061037d61077b366004613266565b611b52565b34801561078c57600080fd5b5061037d61079b3660046131be565b611ddd565b3480156107ac57600080fd5b5061037d6107bb3660046130ef565b611e26565b3480156107cc57600080fd5b50610318611e58565b3480156107e157600080fd5b506103186107f0366004613493565b611e65565b34801561080157600080fd5b506010546102ee906301000000900460ff1681565b34801561082257600080fd5b50610345610831366004613493565b6000908152602560205260409020546001600160a01b031690565b34801561085857600080fd5b5061037d610867366004613327565b611fdc565b34801561087857600080fd5b5061088c610887366004613065565b612085565b6040516102fa96959493929190613760565b3480156108aa57600080fd5b506103eb6108b936600461316a565b612372565b3480156108ca57600080fd5b506010546102ee9062010000900460ff1681565b3480156108ea57600080fd5b506102ee6108f9366004613080565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b34801561093357600080fd5b506103eb610942366004613065565b60226020526000908152604090205481565b34801561096057600080fd5b5061037d61096f366004613065565b6123b6565b34801561098057600080fd5b5061031861098f366004613065565b612451565b60235460009060e01b6001600160e01b031990811690831614806109bc57506109bc826124a5565b92915050565b6060600080546109d190613aa4565b80601f01602080910402602001604051908101604052809291908181526020018280546109fd90613aa4565b8015610a4a5780601f10610a1f57610100808354040283529160200191610a4a565b820191906000526020600020905b815481529060010190602001808311610a2d57829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b0316610ad25760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b6000610af9826113c0565b9050806001600160a01b0316836001600160a01b03161415610b675760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610ac9565b336001600160a01b0382161480610b835750610b8381336108f9565b610bf55760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610ac9565b610bff83836124f5565b505050565b6006546001600160a01b03163314610c2e5760405162461bcd60e51b8152600401610ac990613834565b601080549115156101000261ff0019909216919091179055565b6000610c5360085490565b905090565b6000610c6c6006546001600160a01b031690565b6001600160a01b0316336001600160a01b03161415610c8b5750600190565b60005b601f54811015610ce157601f8181548110610cab57610cab613b3a565b6000918252602090912001546001600160a01b0316331415610ccf57600191505090565b610cda600182613a16565b9050610c8e565b506000905090565b610cf33382612563565b610d0f5760405162461bcd60e51b8152600401610ac990613869565b610bff83838361265a565b6006546001600160a01b03163314610d445760405162461bcd60e51b8152600401610ac990613834565b60008047805b601b5483108015610d5b5750600081115b15610e32576064601b8481548110610d7557610d75613b3a565b906000526020600020015483610d8b9190613a42565b610d959190613a2e565b9350610da18482613a61565b90506000601c8481548110610db857610db8613b3a565b60009182526020822001546040516001600160a01b039091169187919081818185875af1925050503d8060008114610e0c576040519150601f19603f3d011682016040523d82523d6000602084013e610e11565b606091505b5050905080610e1f57600080fd5b610e2a600185613a16565b935050610d4a565b8015610eab576000610e4c6006546001600160a01b031690565b6001600160a01b03168260405160006040518083038185875af1925050503d8060008114610e96576040519150601f19603f3d011682016040523d82523d6000602084013e610e9b565b606091505b5050905080610ea957600080fd5b505b50505050565b610bff83838360405180602001604052806000815250611e26565b60606000610ed9836115e4565b90506000816001600160401b03811115610ef557610ef5613b50565b604051908082528060200260200182016040528015610f1e578160200160208202803683370190505b509050600160005b8381108015610f375750601a548211155b15610fa2576000610f47836113c0565b9050866001600160a01b0316816001600160a01b03161415610f8f5782848381518110610f7657610f76613b3a565b6020908102919091010152610f8c600183613a16565b91505b610f9a600184613a16565b925050610f26565b5090949350505050565b6010546014546017546001600160a01b0384166000908152602160209081526040808320546022835281842054601d8054845181870281018701909552808552959889988998899889986060988998630100000090960460ff169794969395949392601e9284919083018282801561104d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161102f575b50505050509150808054806020026020016040519081016040528092919081815260200182805480156110a957602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161108b575b505050505090509650965096509650965096509650919395979092949650565b6006546001600160a01b031633146110f35760405162461bcd60e51b8152600401610ac990613834565b6010805493151563010000000263ff0000001990941693909317909255601791909155600f55565b6009805461112890613aa4565b80601f016020809104026020016040519081016040528092919081815260200182805461115490613aa4565b80156111a15780601f10611176576101008083540402835291602001916111a1565b820191906000526020600020905b81548152906001019060200180831161118457829003601f168201915b505050505081565b6010546301000000900460ff166111fb5760405162461bcd60e51b8152602060048201526016602482015275105a5c991c9bdc081a5cc81b9bdd08195b98589b195960521b6044820152606401610ac9565b6017546014541061124e5760405162461bcd60e51b815260206004820152601b60248201527f4e6f206d6f726520617661696c61626c652061697264726f70732e00000000006044820152606401610ac9565b3360009081526022602052604090205480156112ac5760405162461bcd60e51b815260206004820152601760248201527f4164647265737320616c726561647920636c61696d65640000000000000000006044820152606401610ac9565b6040516bffffffffffffffffffffffff193360601b16602082015260009060340160405160208183030381529060405280519060200120905061132684848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600f5491508490506127f6565b6113625760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b210383937b7b360991b6044820152606401610ac9565b336000908152602260205260408120805460019290611382908490613a16565b90915550506008805460010190556113a23361139d60085490565b61280c565b6001601460008282546113b59190613a16565b909155505050505050565b6000818152600260205260408120546001600160a01b0316806109bc5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610ac9565b6000611441610c58565b90508061145857506006546001600160a01b031633145b806114755760405162461bcd60e51b8152600401610ac9906138ba565b6010546301000000900460ff166114c75760405162461bcd60e51b8152602060048201526016602482015275105a5c991c9bdc081a5cc81b9bdd08195b98589b195960521b6044820152606401610ac9565b601a5482516008546114d99190613a16565b1061153d5760405162461bcd60e51b815260206004820152602e60248201527f41697264726f702061646472657373657320657863656564732074686520746f60448201526d74616c204e465420737570706c7960901b6064820152608401610ac9565b60005b8251811015610bff57611557600880546001019055565b61157d83828151811061156c5761156c613b3a565b602002602001015161139d60085490565b60016021600085848151811061159557611595613b3a565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008282546115cc9190613a16565b909155506115dd9050600182613a16565b9050611540565b60006001600160a01b03821661164f5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610ac9565b506001600160a01b031660009081526003602052604090205490565b6006546001600160a01b031633146116955760405162461bcd60e51b8152600401610ac990613834565b61169f6000612826565b565b6006546001600160a01b031633146116cb5760405162461bcd60e51b8152600401610ac990613834565b60198a90556018899055601a8890556016879055601586905584516116f790601b906020880190612da7565b50835161170b90601c906020870190612df2565b506010805461ffff19166101009415159490940260ff1916939093179115159190911762ff00001916620100009115159190910217905550505050505050565b60008060008060008060608060008060006060601954601854601a5461176f610c48565b601654601554601054601b8054604080516020808402820181019092528281529293601c9360ff6101008304811694818416946201000090940490911692601f929188918301828280156117e257602002820191906000526020600020905b8154815260200190600101908083116117ce575b505050505095508480548060200260200160405190810160405280929190818152602001828054801561183e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611820575b505050505094508080548060200260200160405190810160405280929190818152602001828054801561189a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161187c575b505050505090509b509b509b509b509b509b509b509b509b509b509b509b50909192939495969798999a9b565b60006118db6006546001600160a01b031690565b6001600160a01b0316336001600160a01b031614905090565b6060600180546109d190613aa4565b600061190d610c58565b90508061192457506006546001600160a01b031633145b806119415760405162461bcd60e51b8152600401610ac9906138ba565b845161195490600b906020880190612e47565b50835161196890600c906020870190612e47565b50825161197c90600d906020860190612e47565b50815161199090600e906020850190612e47565b505050505050565b601054610100900460ff16156119e45760405162461bcd60e51b8152602060048201526011602482015270135a5b9d1a5b99c81a5cc81c185d5cd959607a1b6044820152606401610ac9565b601a54816119f160085490565b6119fb9190613a16565b1115611a495760405162461bcd60e51b815260206004820181905260248201527f4d696e74207175616e746974792065786365656473206d617820737570706c796044820152606401610ac9565b611a516118c7565b611a9f57611a5e81612878565b341015611a9f5760405162461bcd60e51b815260206004820152600f60248201526e436f737420697320746f6f206c6f7760881b6044820152606401610ac9565b60015b818111611b4357611ab7600880546001019055565b611ac43361139d60085490565b60105462010000900460ff1615611af5573360009081526020805260408120805491611aef83613adf565b91905055505b3360256000611b0360085490565b8152602081019190915260400160002080546001600160a01b0319166001600160a01b0392909216919091179055611b3c600182613a16565b9050611aa2565b5050565b611b433383836128a3565b600a81511115611bd65760405162461bcd60e51b815260206004820152604360248201527f76616c6964617465436f43726561746f72733a20636f43726561746f7273206c60448201527f656e6774682073686f756c64206265206c657373206f7220657175616c20746f60648201526202031360ec1b608482015260a401610ac9565b6000805b8251811015611d595760006001600160a01b0316838281518110611c0057611c00613b3a565b6020026020010151600001516001600160a01b03161415611c895760405162461bcd60e51b815260206004820152603c60248201527f76616c6964617465436f43726561746f72733a20636f43726561746f7220616460448201527f647265737320616464726573732063616e277420626520656d707479000000006064820152608401610ac9565b6000838281518110611c9d57611c9d613b3a565b60200260200101516020015111611d1c5760405162461bcd60e51b815260206004820152603960248201527f76616c6964617465436f43726561746f72733a20636f43726561746f7220766160448201527f6c7565206d75737420626520686967686572207468616e2030000000000000006064820152608401610ac9565b828181518110611d2e57611d2e613b3a565b60200260200101516020015182611d459190613a16565b915080611d5181613adf565b915050611bda565b50600754811115611b435760405162461bcd60e51b815260206004820152604260248201527f76616c6964617465436f43726561746f72733a20636f43726561746f7273207360448201527f756d2073686f756c64206265206c657373206f7220657175616c20746f203130606482015261302560f01b608482015260a401610ac9565b6006546001600160a01b03163314611e075760405162461bcd60e51b8152600401610ac990613834565b611e13601f6000612eba565b8051611b4390601f906020840190612df2565b611e303383612563565b611e4c5760405162461bcd60e51b8152600401610ac990613869565b610eab84848484612972565b600a805461112890613aa4565b6000818152600260205260409020546060906001600160a01b0316611ee45760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610ac9565b60105460ff16611f8057600c8054611efb90613aa4565b80601f0160208091040260200160405190810160405280929190818152602001828054611f2790613aa4565b8015611f745780601f10611f4957610100808354040283529160200191611f74565b820191906000526020600020905b815481529060010190602001808311611f5757829003601f168201915b50505050509050919050565b6000611f8a6129a5565b90506000815111611faa5760405180602001604052806000815250611fd5565b80611fb4846129b4565b604051602001611fc5929190613613565b6040516020818303038152906040525b9392505050565b6000611fe733610ecc565b90506000805b8451821015610ea9575060005b82518110156120735782818151811061201557612015613b3a565b602002602001015185838151811061202f5761202f613b3a565b6020026020010151141561206157612061338585848151811061205457612054613b3a565b602002602001015161265a565b61206c600182613a16565b9050611ffa565b61207e600183613a16565b9150611fed565b606080606080606080600b600c61209b89612451565b600e6009600a8580546120ad90613aa4565b80601f01602080910402602001604051908101604052809291908181526020018280546120d990613aa4565b80156121265780601f106120fb57610100808354040283529160200191612126565b820191906000526020600020905b81548152906001019060200180831161210957829003601f168201915b5050505050955084805461213990613aa4565b80601f016020809104026020016040519081016040528092919081815260200182805461216590613aa4565b80156121b25780601f10612187576101008083540402835291602001916121b2565b820191906000526020600020905b81548152906001019060200180831161219557829003601f168201915b505050505094508280546121c590613aa4565b80601f01602080910402602001604051908101604052809291908181526020018280546121f190613aa4565b801561223e5780601f106122135761010080835404028352916020019161223e565b820191906000526020600020905b81548152906001019060200180831161222157829003601f168201915b5050505050925081805461225190613aa4565b80601f016020809104026020016040519081016040528092919081815260200182805461227d90613aa4565b80156122ca5780601f1061229f576101008083540402835291602001916122ca565b820191906000526020600020905b8154815290600101906020018083116122ad57829003601f168201915b505050505091508080546122dd90613aa4565b80601f016020809104026020016040519081016040528092919081815260200182805461230990613aa4565b80156123565780601f1061232b57610100808354040283529160200191612356565b820191906000526020600020905b81548152906001019060200180831161233957829003601f168201915b5050505050905095509550955095509550955091939550919395565b6000811561239957506001600160a01b0382166000908152602260205260409020546109bc565b50506001600160a01b031660009081526021602052604090205490565b6006546001600160a01b031633146123e05760405162461bcd60e51b8152600401610ac990613834565b6001600160a01b0381166124455760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ac9565b61244e81612826565b50565b60606124656006546001600160a01b031690565b6001600160a01b0316826001600160a01b03161480612486575060105460ff165b1561249857600d8054611efb90613aa4565b600e8054611efb90613aa4565b60006001600160e01b031982166380ac58cd60e01b14806124d657506001600160e01b03198216635b5e139f60e01b145b806109bc57506301ffc9a760e01b6001600160e01b03198316146109bc565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061252a826113c0565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b03166125dc5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610ac9565b60006125e7836113c0565b9050806001600160a01b0316846001600160a01b031614806126225750836001600160a01b031661261784610a54565b6001600160a01b0316145b8061265257506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b031661266d826113c0565b6001600160a01b0316146126d15760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610ac9565b6001600160a01b0382166127335760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610ac9565b61273e6000826124f5565b6001600160a01b0383166000908152600360205260408120805460019290612767908490613a61565b90915550506001600160a01b0382166000908152600360205260408120805460019290612795908490613a16565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000826128038584612ab1565b14949350505050565b611b43828260405180602001604052806000815250612b25565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b601054600090829062010000900460ff1661289557601954612899565b6018545b6109bc9190613a42565b816001600160a01b0316836001600160a01b031614156129055760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610ac9565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61297d84848461265a565b61298984848484612b58565b610eab5760405162461bcd60e51b8152600401610ac9906137e2565b6060600b80546109d190613aa4565b6060816129d85750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612a0257806129ec81613adf565b91506129fb9050600a83613a2e565b91506129dc565b6000816001600160401b03811115612a1c57612a1c613b50565b6040519080825280601f01601f191660200182016040528015612a46576020820181803683370190505b5090505b841561265257612a5b600183613a61565b9150612a68600a86613afa565b612a73906030613a16565b60f81b818381518110612a8857612a88613b3a565b60200101906001600160f81b031916908160001a905350612aaa600a86613a2e565b9450612a4a565b600081815b8451811015612b1d576000858281518110612ad357612ad3613b3a565b60200260200101519050808311612af95760008381526020829052604090209250612b0a565b600081815260208490526040902092505b5080612b1581613adf565b915050612ab6565b509392505050565b612b2f8383612c65565b612b3c6000848484612b58565b610bff5760405162461bcd60e51b8152600401610ac9906137e2565b60006001600160a01b0384163b15612c5a57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612b9c903390899088908890600401613652565b602060405180830381600087803b158015612bb657600080fd5b505af1925050508015612be6575060408051601f3d908101601f19168201909252612be3918101906133d6565b60015b612c40573d808015612c14576040519150601f19603f3d011682016040523d82523d6000602084013e612c19565b606091505b508051612c385760405162461bcd60e51b8152600401610ac9906137e2565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612652565b506001949350505050565b6001600160a01b038216612cbb5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610ac9565b6000818152600260205260409020546001600160a01b031615612d205760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610ac9565b6001600160a01b0382166000908152600360205260408120805460019290612d49908490613a16565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054828255906000526020600020908101928215612de2579160200282015b82811115612de2578251825591602001919060010190612dc7565b50612dee929150612ed4565b5090565b828054828255906000526020600020908101928215612de2579160200282015b82811115612de257825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612e12565b828054612e5390613aa4565b90600052602060002090601f016020900481019282612e755760008555612de2565b82601f10612e8e57805160ff1916838001178555612de2565b82800160010185558215612de25791820182811115612de2578251825591602001919060010190612dc7565b508054600082559060005260206000209081019061244e91905b5b80821115612dee5760008155600101612ed5565b60006001600160401b03831115612f0257612f02613b50565b612f15601f8401601f19166020016139c3565b9050828152838383011115612f2957600080fd5b828260208301376000602084830101529392505050565b80356001600160a01b0381168114612f5757600080fd5b919050565b600082601f830112612f6d57600080fd5b81356020612f82612f7d836139f3565b6139c3565b80838252828201915082860187848660051b8901011115612fa257600080fd5b60005b85811015612fc857612fb682612f40565b84529284019290840190600101612fa5565b5090979650505050505050565b600082601f830112612fe657600080fd5b81356020612ff6612f7d836139f3565b80838252828201915082860187848660051b890101111561301657600080fd5b60005b85811015612fc857813584529284019290840190600101613019565b80358015158114612f5757600080fd5b600082601f83011261305657600080fd5b611fd583833560208501612ee9565b60006020828403121561307757600080fd5b611fd582612f40565b6000806040838503121561309357600080fd5b61309c83612f40565b91506130aa60208401612f40565b90509250929050565b6000806000606084860312156130c857600080fd5b6130d184612f40565b92506130df60208501612f40565b9150604084013590509250925092565b6000806000806080858703121561310557600080fd5b61310e85612f40565b935061311c60208601612f40565b92506040850135915060608501356001600160401b0381111561313e57600080fd5b8501601f8101871361314f57600080fd5b61315e87823560208401612ee9565b91505092959194509250565b6000806040838503121561317d57600080fd5b61318683612f40565b91506130aa60208401613035565b600080604083850312156131a757600080fd5b6131b083612f40565b946020939093013593505050565b6000602082840312156131d057600080fd5b81356001600160401b038111156131e657600080fd5b61265284828501612f5c565b6000806020838503121561320557600080fd5b82356001600160401b038082111561321c57600080fd5b818501915085601f83011261323057600080fd5b81358181111561323f57600080fd5b8660208260051b850101111561325457600080fd5b60209290920196919550909350505050565b6000602080838503121561327957600080fd5b82356001600160401b0381111561328f57600080fd5b8301601f810185136132a057600080fd5b80356132ae612f7d826139f3565b80828252848201915084840188868560061b87010111156132ce57600080fd5b60009450845b8481101561331957604080838c0312156132ec578687fd5b6132f461399b565b6132fd84612f40565b81528389013589820152855293870193909101906001016132d4565b509098975050505050505050565b6000806040838503121561333a57600080fd5b82356001600160401b0381111561335057600080fd5b61335c85828601612fd5565b9250506130aa60208401612f40565b60006020828403121561337d57600080fd5b611fd582613035565b60008060006060848603121561339b57600080fd5b6133a484613035565b95602085013595506040909401359392505050565b6000602082840312156133cb57600080fd5b8135611fd581613b66565b6000602082840312156133e857600080fd5b8151611fd581613b66565b6000806000806080858703121561340957600080fd5b84356001600160401b038082111561342057600080fd5b61342c88838901613045565b9550602087013591508082111561344257600080fd5b61344e88838901613045565b9450604087013591508082111561346457600080fd5b61347088838901613045565b9350606087013591508082111561348657600080fd5b5061315e87828801613045565b6000602082840312156134a557600080fd5b5035919050565b6000806000806000806000806000806101408b8d0312156134cc57600080fd5b8a35995060208b0135985060408b0135975060608b0135965060808b0135955060a08b01356001600160401b038082111561350657600080fd5b6135128e838f01612fd5565b965060c08d013591508082111561352857600080fd5b506135358d828e01612f5c565b94505061354460e08c01613035565b92506135536101008c01613035565b91506135626101208c01613035565b90509295989b9194979a5092959850565b600081518084526020808501945080840160005b838110156135ac5781516001600160a01b031687529582019590820190600101613587565b509495945050505050565b600081518084526020808501945080840160005b838110156135ac578151875295820195908201906001016135cb565b600081518084526135ff816020860160208601613a78565b601f01601f19169290920160200192915050565b60008351613625818460208801613a78565b835190830190613639818360208801613a78565b64173539b7b760d91b9101908152600501949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613685908301846135e7565b9695505050505050565b602080825282518282018190526000919060409081850190868401855b828110156136da57815180516001600160a01b031685528601518685015292840192908501906001016136ac565b5091979650505050505050565b602081526000611fd560208301846135b7565b871515815286602082015285604082015284606082015283608082015260e060a0820152600061372d60e0830185613573565b82810360c084015261373f8185613573565b9a9950505050505050505050565b602081526000611fd560208301846135e7565b60c08152600061377360c08301896135e7565b828103602084015261378581896135e7565b9050828103604084015261379981886135e7565b905082810360608401526137ad81876135e7565b905082810360808401526137c181866135e7565b905082810360a08401526137d581856135e7565b9998505050505050505050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b60208082526032908201527f4f776e61626c653a2063616c6c6572206973206e656974686572206f776e6572604082015271103737b91030b236b4b734b9ba3930ba37b960711b606082015260800190565b60006101808e83528d60208401528c60408401528b60608401528a60808401528960a08401528060c08401526139448184018a6135b7565b905082810360e08401526139588189613573565b90508615156101008401528515156101208401528415156101408401528281036101608401526139888185613573565b9f9e505050505050505050505050505050565b604080519081016001600160401b03811182821017156139bd576139bd613b50565b60405290565b604051601f8201601f191681016001600160401b03811182821017156139eb576139eb613b50565b604052919050565b60006001600160401b03821115613a0c57613a0c613b50565b5060051b60200190565b60008219821115613a2957613a29613b0e565b500190565b600082613a3d57613a3d613b24565b500490565b6000816000190483118215151615613a5c57613a5c613b0e565b500290565b600082821015613a7357613a73613b0e565b500390565b60005b83811015613a93578181015183820152602001613a7b565b83811115610eab5750506000910152565b600181811c90821680613ab857607f821691505b60208210811415613ad957634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613af357613af3613b0e565b5060010190565b600082613b0957613b09613b24565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461244e57600080fdfea2646970667358221220d1117289c3a4b9871b0aa164b30fa245b5d9cc7a839cce6eedf3ae280fbb29a364736f6c63430008070033697066733a2f2f516d6345317a58445835444444667871667a3542765a6543774e573950424145796a3178534858513456586677592f68747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d57684841714e46566474674861674c484b424c574e646d317556536857646f746b51413153546347506b44652f
Deployed ByteCode Sourcemap
42412:11108:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53262:255;;;;;;;;;;-1:-1:-1;53262:255:0;;;;;:::i;:::-;;:::i;:::-;;;14456:14:1;;14449:22;14431:41;;14419:2;14404:18;53262:255:0;;;;;;;;30029:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;31588:221::-;;;;;;;;;;-1:-1:-1;31588:221:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;12651:32:1;;;12633:51;;12621:2;12606:18;31588:221:0;12487:203:1;31111:411:0;;;;;;;;;;-1:-1:-1;31111:411:0;;;;;:::i;:::-;;:::i;:::-;;52599:247;;;;;;;;;;-1:-1:-1;52720:17:0;;52747:24;;52781:21;;52812;52599:247;;;28468:25:1;;;28524:2;28509:18;;28502:34;;;;28552:18;;;28545:34;28610:2;28595:18;;28588:34;28455:3;28440:19;52599:247:0;28237:391:1;45179:84:0;;;;;;;;;;-1:-1:-1;45179:84:0;;;;;:::i;:::-;;:::i;44443:87::-;;;;;;;;;;;;;:::i;:::-;;;28201:25:1;;;28189:2;28174:18;44443:87:0;28055:177:1;50724:316:0;;;;;;;;;;;;;:::i;52853:103::-;;;;;;;;;;-1:-1:-1;52853:103:0;;;;;:::i;:::-;-1:-1:-1;52940:8:0;;;52853:103;32338:339;;;;;;;;;;-1:-1:-1;32338:339:0;;;;;:::i;:::-;;:::i;46241:565::-;;;:::i;32748:185::-;;;;;;;;;;-1:-1:-1;32748:185:0;;;;;:::i;:::-;;:::i;45626:609::-;;;;;;;;;;-1:-1:-1;45626:609:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;51813:433::-;;;;;;;;;;-1:-1:-1;51813:433:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;:::i;50047:259::-;;;;;;;;;;-1:-1:-1;50047:259:0;;;;;:::i;:::-;;:::i;53085:169::-;;;;;;;;;;-1:-1:-1;53085:169:0;;;;;:::i;:::-;-1:-1:-1;53148:28:0;;53085:169;;;;;;;;:::i;42579:47::-;;;;;;;;;;;;;:::i;47881:640::-;;;;;;;;;;-1:-1:-1;47881:640:0;;;;;:::i;:::-;;:::i;140:31::-;;;;;;;;;;;;;;;;44197:52;;;;;;;;;;-1:-1:-1;44197:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;29723:239;;;;;;;;;;-1:-1:-1;29723:239:0;;;;;:::i;:::-;;:::i;47414:461::-;;;;;;;;;;-1:-1:-1;47414:461:0;;;;;:::i;:::-;;:::i;29453:208::-;;;;;;;;;;-1:-1:-1;29453:208:0;;;;;:::i;:::-;;:::i;43415:25::-;;;;;;;;;;-1:-1:-1;43415:25:0;;;;;;;;;;;9705:103;;;;;;;;;;;;;:::i;48963:732::-;;;;;;;;;;-1:-1:-1;48963:732:0;;;;;:::i;:::-;;:::i;51250:557::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;9054:87::-;;;;;;;;;;-1:-1:-1;9127:6:0;;-1:-1:-1;;;;;9127:6:0;9054:87;;45088:85;;;;;;;;;;;;;:::i;30198:104::-;;;;;;;;;;;;;:::i;44137:55::-;;;;;;;;;;-1:-1:-1;44137:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;49701:340;;;;;;;;;;-1:-1:-1;49701:340:0;;;;;:::i;:::-;;:::i;43383:27::-;;;;;;;;;;-1:-1:-1;43383:27:0;;;;;;;;46812:596;;;;;;:::i;:::-;;:::i;31881:155::-;;;;;;;;;;-1:-1:-1;31881:155:0;;;;;:::i;:::-;;:::i;270:891::-;;;;;;;;;;-1:-1:-1;270:891:0;;;;;:::i;:::-;;:::i;50560:158::-;;;;;;;;;;-1:-1:-1;50560:158:0;;;;;:::i;:::-;;:::i;33004:328::-;;;;;;;;;;-1:-1:-1;33004:328:0;;;;;:::i;:::-;;:::i;42631:31::-;;;;;;;;;;;;;:::i;44653:429::-;;;;;;;;;;-1:-1:-1;44653:429:0;;;;;:::i;:::-;;:::i;43476:26::-;;;;;;;;;;-1:-1:-1;43476:26:0;;;;;;;;;;;52964:113;;;;;;;;;;-1:-1:-1;52964:113:0;;;;;:::i;:::-;53024:7;53051:18;;;:9;:18;;;;;;-1:-1:-1;;;;;53051:18:0;;52964:113;48527:430;;;;;;;;;;-1:-1:-1;48527:430:0;;;;;:::i;:::-;;:::i;52252:341::-;;;;;;;;;;-1:-1:-1;52252:341:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;:::i;51046:198::-;;;;;;;;;;-1:-1:-1;51046:198:0;;;;;:::i;:::-;;:::i;43445:26::-;;;;;;;;;;-1:-1:-1;43445:26:0;;;;;;;;;;;32107:164;;;;;;;;;;-1:-1:-1;32107:164:0;;;;;:::i;:::-;-1:-1:-1;;;;;32228:25:0;;;32204:4;32228:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;32107:164;44254:58;;;;;;;;;;-1:-1:-1;44254:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;9963:201;;;;;;;;;;-1:-1:-1;9963:201:0;;;;;:::i;:::-;;:::i;45269:191::-;;;;;;;;;;-1:-1:-1;45269:191:0;;;;;:::i;:::-;;:::i;53262:255::-;53457:12;;53400:4;;53457:12;;-1:-1:-1;;;;;;53442:27:0;;;;;;;;:67;;;53473:36;53497:11;53473:23;:36::i;:::-;53422:87;53262:255;-1:-1:-1;;53262:255:0:o;30029:100::-;30083:13;30116:5;30109:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30029:100;:::o;31588:221::-;31664:7;34931:16;;;:7;:16;;;;;;-1:-1:-1;;;;;34931:16:0;31684:73;;;;-1:-1:-1;;;31684:73:0;;22701:2:1;31684:73:0;;;22683:21:1;22740:2;22720:18;;;22713:30;22779:34;22759:18;;;22752:62;-1:-1:-1;;;22830:18:1;;;22823:42;22882:19;;31684:73:0;;;;;;;;;-1:-1:-1;31777:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;31777:24:0;;31588:221::o;31111:411::-;31192:13;31208:23;31223:7;31208:14;:23::i;:::-;31192:39;;31256:5;-1:-1:-1;;;;;31250:11:0;:2;-1:-1:-1;;;;;31250:11:0;;;31242:57;;;;-1:-1:-1;;;31242:57:0;;25426:2:1;31242:57:0;;;25408:21:1;25465:2;25445:18;;;25438:30;25504:34;25484:18;;;25477:62;-1:-1:-1;;;25555:18:1;;;25548:31;25596:19;;31242:57:0;25224:397:1;31242:57:0;7858:10;-1:-1:-1;;;;;31334:21:0;;;;:62;;-1:-1:-1;31359:37:0;31376:5;7858:10;32107:164;:::i;31359:37::-;31312:168;;;;-1:-1:-1;;;31312:168:0;;20307:2:1;31312:168:0;;;20289:21:1;20346:2;20326:18;;;20319:30;20385:34;20365:18;;;20358:62;20456:26;20436:18;;;20429:54;20500:19;;31312:168:0;20105:420:1;31312:168:0;31493:21;31502:2;31506:7;31493:8;:21::i;:::-;31181:341;31111:411;;:::o;45179:84::-;9127:6;;-1:-1:-1;;;;;9127:6:0;7858:10;9274:23;9266:68;;;;-1:-1:-1;;;9266:68:0;;;;;;;:::i;:::-;45235:13:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;45235:22:0;;::::1;::::0;;;::::1;::::0;;45179:84::o;44443:87::-;44486:7;44508:16;:6;4474:14;;4382:114;44508:16;44501:23;;44443:87;:::o;50724:316::-;50771:4;50802:7;9127:6;;-1:-1:-1;;;;;9127:6:0;;9054:87;50802:7;-1:-1:-1;;;;;50788:21:0;:10;-1:-1:-1;;;;;50788:21:0;;50785:59;;;-1:-1:-1;50830:4:0;;50724:316::o;50785:59::-;50856:9;50852:162;50875:19;:26;50871:30;;50852:162;;;50940:19;50960:1;50940:22;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;50940:22:0;50926:10;:36;50923:82;;;50987:4;50980:11;;;50724:316;:::o;50923:82::-;50903:6;50908:1;50903:6;;:::i;:::-;;;50852:162;;;;51029:5;51022:12;;50724:316;:::o;32338:339::-;32533:41;7858:10;32566:7;32533:18;:41::i;:::-;32525:103;;;;-1:-1:-1;;;32525:103:0;;;;;;;:::i;:::-;32641:28;32651:4;32657:2;32661:7;32641:9;:28::i;46241:565::-;9127:6;;-1:-1:-1;;;;;9127:6:0;7858:10;9274:23;9266:68;;;;-1:-1:-1;;;9266:68:0;;;;;;;:::i;:::-;46293:14:::1;::::0;46354:21:::1;::::0;46416:269:::1;46426:19;:26:::0;46422:30;::::1;:47:::0;::::1;;;;46468:1;46456:9;:13;46422:47;46416:269;;;46523:3;46498:19;46518:1;46498:22;;;;;;;;:::i;:::-;;;;;;;;;46488:7;:32;;;;:::i;:::-;:38;;;;:::i;:::-;46479:47:::0;-1:-1:-1;46547:18:0::1;46479:47:::0;46547:9;:18:::1;:::i;:::-;46535:30;;46575:6;46594:21;46616:1;46594:24;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;::::1;::::0;46586:57:::1;::::0;-1:-1:-1;;;;;46594:24:0;;::::1;::::0;46632:6;;46586:57;;46594:24;46586:57;46632:6;46594:24;46586:57:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46574:69;;;46660:1;46652:10;;;::::0;::::1;;46671:6;46676:1;46671:6:::0;::::1;:::i;:::-;;;46470:215;46416:269;;;46696:13:::0;;46693:108:::1;;46720:6;46739:7;9127:6:::0;;-1:-1:-1;;;;;9127:6:0;;9054:87;46739:7:::1;-1:-1:-1::0;;;;;46731:21:0::1;46760:9;46731:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46719:55;;;46791:1;46783:10;;;::::0;::::1;;46710:91;46693:108;46286:520;;;;46241:565::o:0;32748:185::-;32886:39;32903:4;32909:2;32913:7;32886:39;;;;;;;;;;;;:16;:39::i;45626:609::-;45686:16;45710:23;45736:17;45746:6;45736:9;:17::i;:::-;45710:43;;45760:25;45802:15;-1:-1:-1;;;;;45788:30:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;45788:30:0;-1:-1:-1;45760:58:0;-1:-1:-1;45856:1:0;45831:22;45900:306;45924:15;45906;:33;:70;;;;;45961:15;;45943:14;:33;;45906:70;45900:306;;;45986:25;46014:23;46022:14;46014:7;:23::i;:::-;45986:51;;46070:6;-1:-1:-1;;;;;46049:27:0;:17;-1:-1:-1;;;;;46049:27:0;;46046:125;;;46116:14;46088:8;46097:15;46088:25;;;;;;;;:::i;:::-;;;;;;;;;;:42;46141:20;46160:1;46141:20;;:::i;:::-;;;46046:125;46179:19;46197:1;46179:19;;:::i;:::-;;;45977:229;45900:306;;;-1:-1:-1;46221:8:0;;45626:609;-1:-1:-1;;;;45626:609:0:o;51813:433::-;52014:14;;52038:25;;52072:19;;-1:-1:-1;;;;;52100:25:0;;51883:4;52100:25;;;:17;:25;;;;;;;;;52135:23;:31;;;;;;52175:21;51998:242;;;;;;;;;;;;;;;;;51883:4;;;;;;;;;;51951:16;;;;52014:14;;;;;;;52038:25;;52072:19;;52100:25;52135:31;52175:21;52205:28;;52175:21;;51998:242;;;52175:21;51998:242;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;51998:242:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;51998:242:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51813:433;;;;;;;;;:::o;50047:259::-;9127:6;;-1:-1:-1;;;;;9127:6:0;7858:10;9274:23;9266:68;;;;-1:-1:-1;;;9266:68:0;;;;;;;:::i;:::-;50185:14:::1;:32:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;50185:32:0;;::::1;::::0;;;::::1;::::0;;;50224:19:::1;:35:::0;;;;50266:14:::1;:34:::0;50047:259::o;42579:47::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;47881:640::-;47958:14;;;;;;;47950:49;;;;-1:-1:-1;;;47950:49:0;;23827:2:1;47950:49:0;;;23809:21:1;23866:2;23846:18;;;23839:30;-1:-1:-1;;;23885:18:1;;;23878:52;23947:18;;47950:49:0;23625:346:1;47950:49:0;48042:19;;48014:25;;:47;48006:87;;;;-1:-1:-1;;;48006:87:0;;25070:2:1;48006:87:0;;;25052:21:1;25109:2;25089:18;;;25082:30;25148:29;25128:18;;;25121:57;25195:18;;48006:87:0;24868:351:1;48006:87:0;48142:10;48100:15;48118:35;;;:23;:35;;;;;;48170:12;;48162:48;;;;-1:-1:-1;;;48162:48:0;;23475:2:1;48162:48:0;;;23457:21:1;23514:2;23494:18;;;23487:30;23553:25;23533:18;;;23526:53;23596:18;;48162:48:0;23273:347:1;48162:48:0;48244:28;;-1:-1:-1;;48261:10:0;11550:2:1;11546:15;11542:53;48244:28:0;;;11530:66:1;48219:12:0;;11612::1;;48244:28:0;;;;;;;;;;;;48234:39;;;;;;48219:54;;48288;48307:12;;48288:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;48321:14:0;;;-1:-1:-1;48337:4:0;;-1:-1:-1;48288:18:0;:54::i;:::-;48280:80;;;;-1:-1:-1;;;48280:80:0;;26592:2:1;48280:80:0;;;26574:21:1;26631:2;26611:18;;;26604:30;-1:-1:-1;;;26650:18:1;;;26643:43;26703:18;;48280:80:0;26390:337:1;48280:80:0;48391:10;48367:35;;;;:23;:35;;;;;:40;;48406:1;;48367:35;:40;;48406:1;;48367:40;:::i;:::-;;;;-1:-1:-1;;48414:6:0;4593:19;;4611:1;4593:19;;;48439:39;48449:10;48461:16;:6;4474:14;;4382:114;48461:16;48439:9;:39::i;:::-;48514:1;48485:25;;:30;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;47881:640:0:o;29723:239::-;29795:7;29831:16;;;:7;:16;;;;;;-1:-1:-1;;;;;29831:16:0;29866:19;29858:73;;;;-1:-1:-1;;;29858:73:0;;21143:2:1;29858:73:0;;;21125:21:1;21182:2;21162:18;;;21155:30;21221:34;21201:18;;;21194:62;-1:-1:-1;;;21272:18:1;;;21265:39;21321:19;;29858:73:0;20941:405:1;47414:461:0;50351:12;50366:17;:15;:17::i;:::-;50351:32;;50396:7;50392:68;;-1:-1:-1;9127:6:0;;-1:-1:-1;;;;;9127:6:0;7858:10;50427:23;50392:68;50476:7;50468:70;;;;-1:-1:-1;;;50468:70:0;;;;;;;:::i;:::-;47503:14:::1;::::0;;;::::1;;;47495:49;;;::::0;-1:-1:-1;;;47495:49:0;;23827:2:1;47495:49:0::1;::::0;::::1;23809:21:1::0;23866:2;23846:18;;;23839:30;-1:-1:-1;;;23885:18:1;;;23878:52;23947:18;;47495:49:0::1;23625:346:1::0;47495:49:0::1;47597:15;::::0;47578:16;;47559:6:::1;4474:14:::0;47559:35:::1;;;;:::i;:::-;:53;47551:112;;;::::0;-1:-1:-1;;;47551:112:0;;16787:2:1;47551:112:0::1;::::0;::::1;16769:21:1::0;16826:2;16806:18;;;16799:30;16865:34;16845:18;;;16838:62;-1:-1:-1;;;16916:18:1;;;16909:44;16970:19;;47551:112:0::1;16585:410:1::0;47551:112:0::1;47676:9;47697:173;47707:9;:16;47703:1;:20;47697:173;;;47733:18;:6;4593:19:::0;;4611:1;4593:19;;;4504:127;47733:18:::1;47760:41;47770:9;47780:1;47770:12;;;;;;;;:::i;:::-;;;;;;;47784:16;:6;4474:14:::0;;4382:114;47760:41:::1;47845:1;47810:17;:31;47828:9;47838:1;47828:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;47810:31:0::1;-1:-1:-1::0;;;;;47810:31:0::1;;;;;;;;;;;;;:36;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;47855:6:0::1;::::0;-1:-1:-1;47860:1:0::1;47855:6:::0;::::1;:::i;:::-;;;47697:173;;29453:208:::0;29525:7;-1:-1:-1;;;;;29553:19:0;;29545:74;;;;-1:-1:-1;;;29545:74:0;;20732:2:1;29545:74:0;;;20714:21:1;20771:2;20751:18;;;20744:30;20810:34;20790:18;;;20783:62;-1:-1:-1;;;20861:18:1;;;20854:40;20911:19;;29545:74:0;20530:406:1;29545:74:0;-1:-1:-1;;;;;;29637:16:0;;;;;:9;:16;;;;;;;29453:208::o;9705:103::-;9127:6;;-1:-1:-1;;;;;9127:6:0;7858:10;9274:23;9266:68;;;;-1:-1:-1;;;9266:68:0;;;;;;;:::i;:::-;9770:30:::1;9797:1;9770:18;:30::i;:::-;9705:103::o:0;48963:732::-;9127:6;;-1:-1:-1;;;;;9127:6:0;7858:10;9274:23;9266:68;;;;-1:-1:-1;;;9266:68:0;;;;;;;:::i;:::-;49304:15:::1;:33:::0;;;49344:12:::1;:27:::0;;;49378:15:::1;:33:::0;;;49418:20:::1;:39:::0;;;49464:17:::1;:39:::0;;;49510:30;;::::1;::::0;:19:::1;::::0;:30:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;49547:39:0;;::::1;::::0;:21:::1;::::0;:39:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;49593:13:0::1;:23:::0;;-1:-1:-1;;49623:27:0;49593:23:::1;::::0;::::1;;::::0;;;::::1;-1:-1:-1::0;;49623:27:0;;;;;;::::1;;::::0;;;::::1;-1:-1:-1::0;;49657:32:0::1;::::0;;::::1;;::::0;;;::::1;;::::0;;-1:-1:-1;;;;;;;48963:732:0:o;51250:557::-;51299:7;51314;51329;51344;51359;51374;51389:16;51413;51437:4;51443;51449;51461:16;51501:15;;51525:12;;51546:15;;51570:13;:11;:13::i;:::-;51592:20;;51621:17;;51705:13;;51647:19;51485:316;;;;;;;;;;;;;;;;;;;51647:19;;51675:21;;51705:13;;;;;;;51727:15;;;;51751:14;;;;;;;;51775:19;;51485:316;51647:19;;51485:316;;51647:19;51485:316;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;51485:316:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;51485:316:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51250:557;;;;;;;;;;;;:::o;45088:85::-;45127:4;45160:7;9127:6;;-1:-1:-1;;;;;9127:6:0;;9054:87;45160:7;-1:-1:-1;;;;;45146:21:0;:10;-1:-1:-1;;;;;45146:21:0;;45139:28;;45088:85;:::o;30198:104::-;30254:13;30287:7;30280:14;;;;;:::i;49701:340::-;50351:12;50366:17;:15;:17::i;:::-;50351:32;;50396:7;50392:68;;-1:-1:-1;9127:6:0;;-1:-1:-1;;;;;9127:6:0;7858:10;50427:23;50392:68;50476:7;50468:70;;;;-1:-1:-1;;;50468:70:0;;;;;;;:::i;:::-;49892:29;;::::1;::::0;:16:::1;::::0;:29:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;49928:34:0;;::::1;::::0;:14:::1;::::0;:34:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;49969:26:0;;::::1;::::0;:14:::1;::::0;:26:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;50002:33:0;;::::1;::::0;:15:::1;::::0;:33:::1;::::0;::::1;::::0;::::1;:::i;:::-;;50342:212:::0;49701:340;;;;:::o;46812:596::-;46877:13;;;;;;;46876:14;46868:44;;;;-1:-1:-1;;;46868:44:0;;26246:2:1;46868:44:0;;;26228:21:1;26285:2;26265:18;;;26258:30;-1:-1:-1;;;26304:18:1;;;26297:47;26361:18;;46868:44:0;26044:341:1;46868:44:0;46961:15;;46946:11;46927:16;:6;4474:14;;4382:114;46927:16;:30;;;;:::i;:::-;:49;;46919:94;;;;-1:-1:-1;;;46919:94:0;;21553:2:1;46919:94:0;;;21535:21:1;;;21572:18;;;21565:30;21631:34;21611:18;;;21604:62;21683:18;;46919:94:0;21351:356:1;46919:94:0;47027:9;:7;:9::i;:::-;47022:100;;47070:24;47082:11;47070;:24::i;:::-;47057:9;:37;;47049:65;;;;-1:-1:-1;;;47049:65:0;;19963:2:1;47049:65:0;;;19945:21:1;20002:2;19982:18;;;19975:30;-1:-1:-1;;;20021:18:1;;;20014:45;20076:18;;47049:65:0;19761:339:1;47049:65:0;47147:1;47130:273;47155:11;47150:1;:16;47130:273;;47183:18;:6;4593:19;;4611:1;4593:19;;;4504:127;47183:18;47210:39;47220:10;47232:16;:6;4474:14;;4382:114;47210:39;47269:14;;;;;;;47266:74;;;47316:10;47295:32;;;;:20;:32;;;;;:34;;;;;;:::i;:::-;;;;;;47266:74;47385:10;47355:9;:27;47365:16;:6;4474:14;;4382:114;47365:16;47355:27;;;;;;;;;;;-1:-1:-1;47355:27:0;:40;;-1:-1:-1;;;;;;47355:40:0;-1:-1:-1;;;;;47355:40:0;;;;;;;;;;47168:4;-1:-1:-1;47168:4:0;;:::i;:::-;;;47130:273;;;;46812:596;:::o;31881:155::-;31976:52;7858:10;32009:8;32019;31976:18;:52::i;270:891::-;407:2;386:10;:17;:23;;364:140;;;;-1:-1:-1;;;364:140:0;;24594:2:1;364:140:0;;;24576:21:1;24633:2;24613:18;;;24606:30;24672:34;24652:18;;;24645:62;24743:34;24723:18;;;24716:62;-1:-1:-1;;;24794:19:1;;;24787:34;24838:19;;364:140:0;24392:471:1;364:140:0;517:21;560:9;555:437;579:10;:17;575:1;:21;555:437;;;674:1;-1:-1:-1;;;;;644:32:0;:10;655:1;644:13;;;;;;;;:::i;:::-;;;;;;;:18;;;-1:-1:-1;;;;;644:32:0;;;618:154;;;;-1:-1:-1;;;618:154:0;;27409:2:1;618:154:0;;;27391:21:1;27448:2;27428:18;;;27421:30;27487:34;27467:18;;;27460:62;27558:30;27538:18;;;27531:58;27606:19;;618:154:0;27207:424:1;618:154:0;835:1;813:10;824:1;813:13;;;;;;;;:::i;:::-;;;;;;;:19;;;:23;787:142;;;;-1:-1:-1;;;787:142:0;;22275:2:1;787:142:0;;;22257:21:1;22314:2;22294:18;;;22287:30;22353:34;22333:18;;;22326:62;22424:27;22404:18;;;22397:55;22469:19;;787:142:0;22073:421:1;787:142:0;961:10;972:1;961:13;;;;;;;;:::i;:::-;;;;;;;:19;;;944:36;;;;;:::i;:::-;;-1:-1:-1;598:3:0;;;;:::i;:::-;;;;555:437;;;;1051:8;;1034:13;:25;;1012:141;;;;-1:-1:-1;;;1012:141:0;;26934:2:1;1012:141:0;;;26916:21:1;26973:2;26953:18;;;26946:30;27012:34;26992:18;;;26985:62;27083:34;27063:18;;;27056:62;-1:-1:-1;;;27134:19:1;;;27127:33;27177:19;;1012:141:0;26732:470:1;50560:158:0;9127:6;;-1:-1:-1;;;;;9127:6:0;7858:10;9274:23;9266:68;;;;-1:-1:-1;;;9266:68:0;;;;;;;:::i;:::-;50643:26:::1;50650:19;;50643:26;:::i;:::-;50678:34:::0;;::::1;::::0;:19:::1;::::0;:34:::1;::::0;::::1;::::0;::::1;:::i;33004:328::-:0;33179:41;7858:10;33212:7;33179:18;:41::i;:::-;33171:103;;;;-1:-1:-1;;;33171:103:0;;;;;;;:::i;:::-;33285:39;33299:4;33305:2;33309:7;33318:5;33285:13;:39::i;42631:31::-;;;;;;;:::i;44653:429::-;34907:4;34931:16;;;:7;:16;;;;;;44726:13;;-1:-1:-1;;;;;34931:16:0;44748:76;;;;-1:-1:-1;;;44748:76:0;;24178:2:1;44748:76:0;;;24160:21:1;24217:2;24197:18;;;24190:30;24256:34;24236:18;;;24229:62;-1:-1:-1;;;24307:18:1;;;24300:45;24362:19;;44748:76:0;23976:411:1;44748:76:0;44840:15;;;;44837:67;;44882:14;44875:21;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44653:429;;;:::o;44837:67::-;44912:28;44943:10;:8;:10::i;:::-;44912:41;;44998:1;44973:14;44967:28;:32;:109;;;;;;;;;;;;;;;;;45026:14;45042:18;:7;:16;:18::i;:::-;45009:61;;;;;;;;;:::i;:::-;;;;;;;;;;;;;44967:109;44960:116;44653:429;-1:-1:-1;;;44653:429:0:o;48527:430::-;48607:28;48638:25;48652:10;48638:13;:25::i;:::-;48607:56;;48672:9;48693;48713:239;48723:8;:15;48719:1;:19;48713:239;;;-1:-1:-1;48752:1:0;48762:170;48772:11;:18;48768:1;:22;48762:170;;;48820:11;48832:1;48820:14;;;;;;;;:::i;:::-;;;;;;;48805:8;48814:1;48805:11;;;;;;;;:::i;:::-;;;;;;;:29;48802:105;;;48848:47;48858:10;48870:8;48880:11;48892:1;48880:14;;;;;;;;:::i;:::-;;;;;;;48848:9;:47::i;:::-;48917:4;48920:1;48917:4;;:::i;:::-;;;48762:170;;;48940:4;48943:1;48940:4;;:::i;:::-;;;48713:239;;52252:341;52309:13;52330;52351;52372;52393;52414;52451:16;52477:14;52501:22;52518:4;52501:16;:22::i;:::-;52533:15;52558:5;52573:7;52435:152;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;52252:341;;;;;;;:::o;51046:198::-;51122:7;51140:8;51137:65;;;-1:-1:-1;;;;;;51165:29:0;;;;;;:23;:29;;;;;;51158:36;;51137:65;-1:-1:-1;;;;;;;51215:23:0;;;;;:17;:23;;;;;;;51046:198::o;9963:201::-;9127:6;;-1:-1:-1;;;;;9127:6:0;7858:10;9274:23;9266:68;;;;-1:-1:-1;;;9266:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10052:22:0;::::1;10044:73;;;::::0;-1:-1:-1;;;10044:73:0;;17621:2:1;10044:73:0::1;::::0;::::1;17603:21:1::0;17660:2;17640:18;;;17633:30;17699:34;17679:18;;;17672:62;-1:-1:-1;;;17750:18:1;;;17743:36;17796:19;;10044:73:0::1;17419:402:1::0;10044:73:0::1;10128:28;10147:8;10128:18;:28::i;:::-;9963:201:::0;:::o;45269:191::-;45329:13;45361:7;9127:6;;-1:-1:-1;;;;;9127:6:0;;9054:87;45361:7;-1:-1:-1;;;;;45353:15:0;:4;-1:-1:-1;;;;;45353:15:0;;:34;;;-1:-1:-1;45372:15:0;;;;45353:34;45350:76;;;45404:14;45397:21;;;;;:::i;45350:76::-;45439:15;45432:22;;;;;:::i;29084:305::-;29186:4;-1:-1:-1;;;;;;29223:40:0;;-1:-1:-1;;;29223:40:0;;:105;;-1:-1:-1;;;;;;;29280:48:0;;-1:-1:-1;;;29280:48:0;29223:105;:158;;;-1:-1:-1;;;;;;;;;;21947:40:0;;;29345:36;21838:157;38988:174;39063:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;39063:29:0;-1:-1:-1;;;;;39063:29:0;;;;;;;;:24;;39117:23;39063:24;39117:14;:23::i;:::-;-1:-1:-1;;;;;39108:46:0;;;;;;;;;;;38988:174;;:::o;35136:348::-;35229:4;34931:16;;;:7;:16;;;;;;-1:-1:-1;;;;;34931:16:0;35246:73;;;;-1:-1:-1;;;35246:73:0;;19550:2:1;35246:73:0;;;19532:21:1;19589:2;19569:18;;;19562:30;19628:34;19608:18;;;19601:62;-1:-1:-1;;;19679:18:1;;;19672:42;19731:19;;35246:73:0;19348:408:1;35246:73:0;35330:13;35346:23;35361:7;35346:14;:23::i;:::-;35330:39;;35399:5;-1:-1:-1;;;;;35388:16:0;:7;-1:-1:-1;;;;;35388:16:0;;:51;;;;35432:7;-1:-1:-1;;;;;35408:31:0;:20;35420:7;35408:11;:20::i;:::-;-1:-1:-1;;;;;35408:31:0;;35388:51;:87;;;-1:-1:-1;;;;;;32228:25:0;;;32204:4;32228:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;35443:32;35380:96;35136:348;-1:-1:-1;;;;35136:348:0:o;38245:625::-;38404:4;-1:-1:-1;;;;;38377:31:0;:23;38392:7;38377:14;:23::i;:::-;-1:-1:-1;;;;;38377:31:0;;38369:81;;;;-1:-1:-1;;;38369:81:0;;18028:2:1;38369:81:0;;;18010:21:1;18067:2;18047:18;;;18040:30;18106:34;18086:18;;;18079:62;-1:-1:-1;;;18157:18:1;;;18150:35;18202:19;;38369:81:0;17826:401:1;38369:81:0;-1:-1:-1;;;;;38469:16:0;;38461:65;;;;-1:-1:-1;;;38461:65:0;;18791:2:1;38461:65:0;;;18773:21:1;18830:2;18810:18;;;18803:30;18869:34;18849:18;;;18842:62;-1:-1:-1;;;18920:18:1;;;18913:34;18964:19;;38461:65:0;18589:400:1;38461:65:0;38643:29;38660:1;38664:7;38643:8;:29::i;:::-;-1:-1:-1;;;;;38685:15:0;;;;;;:9;:15;;;;;:20;;38704:1;;38685:15;:20;;38704:1;;38685:20;:::i;:::-;;;;-1:-1:-1;;;;;;;38716:13:0;;;;;;:9;:13;;;;;:18;;38733:1;;38716:13;:18;;38733:1;;38716:18;:::i;:::-;;;;-1:-1:-1;;38745:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;38745:21:0;-1:-1:-1;;;;;38745:21:0;;;;;;;;;38784:27;;38745:16;;38784:27;;;;;;;31181:341;31111:411;;:::o;2046:190::-;2171:4;2224;2195:25;2208:5;2215:4;2195:12;:25::i;:::-;:33;;2046:190;-1:-1:-1;;;;2046:190:0:o;35826:110::-;35902:26;35912:2;35916:7;35902:26;;;;;;;;;;;;:9;:26::i;10324:191::-;10417:6;;;-1:-1:-1;;;;;10434:17:0;;;-1:-1:-1;;;;;;10434:17:0;;;;;;;10467:40;;10417:6;;;10434:17;10417:6;;10467:40;;10398:16;;10467:40;10387:128;10324:191;:::o;45466:154::-;45552:14;;45529:7;;45603:11;;45552:14;;;;;:47;;45584:15;;45552:47;;;45569:12;;45552:47;45551:63;;;;:::i;39304:315::-;39459:8;-1:-1:-1;;;;;39450:17:0;:5;-1:-1:-1;;;;;39450:17:0;;;39442:55;;;;-1:-1:-1;;;39442:55:0;;19196:2:1;39442:55:0;;;19178:21:1;19235:2;19215:18;;;19208:30;19274:27;19254:18;;;19247:55;19319:18;;39442:55:0;18994:349:1;39442:55:0;-1:-1:-1;;;;;39508:25:0;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;39508:46:0;;;;;;;;;;39570:41;;14431::1;;;39570::0;;14404:18:1;39570:41:0;;;;;;;39304:315;;;:::o;34214:::-;34371:28;34381:4;34387:2;34391:7;34371:9;:28::i;:::-;34418:48;34441:4;34447:2;34451:7;34460:5;34418:22;:48::i;:::-;34410:111;;;;-1:-1:-1;;;34410:111:0;;;;;;;:::i;44536:::-;44596:13;44625:16;44618:23;;;;;:::i;5340:723::-;5396:13;5617:10;5613:53;;-1:-1:-1;;5644:10:0;;;;;;;;;;;;-1:-1:-1;;;5644:10:0;;;;;5340:723::o;5613:53::-;5691:5;5676:12;5732:78;5739:9;;5732:78;;5765:8;;;;:::i;:::-;;-1:-1:-1;5788:10:0;;-1:-1:-1;5796:2:0;5788:10;;:::i;:::-;;;5732:78;;;5820:19;5852:6;-1:-1:-1;;;;;5842:17:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5842:17:0;;5820:39;;5870:154;5877:10;;5870:154;;5904:11;5914:1;5904:11;;:::i;:::-;;-1:-1:-1;5973:10:0;5981:2;5973:5;:10;:::i;:::-;5960:24;;:2;:24;:::i;:::-;5947:39;;5930:6;5937;5930:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;5930:56:0;;;;;;;;-1:-1:-1;6001:11:0;6010:2;6001:11;;:::i;:::-;;;5870:154;;2598:675;2681:7;2724:4;2681:7;2739:497;2763:5;:12;2759:1;:16;2739:497;;;2797:20;2820:5;2826:1;2820:8;;;;;;;;:::i;:::-;;;;;;;2797:31;;2863:12;2847;:28;2843:382;;3349:13;3399:15;;;3435:4;3428:15;;;3482:4;3466:21;;2975:57;;2843:382;;;3349:13;3399:15;;;3435:4;3428:15;;;3482:4;3466:21;;3152:57;;2843:382;-1:-1:-1;2777:3:0;;;;:::i;:::-;;;;2739:497;;;-1:-1:-1;3253:12:0;2598:675;-1:-1:-1;;;2598:675:0:o;36163:321::-;36293:18;36299:2;36303:7;36293:5;:18::i;:::-;36344:54;36375:1;36379:2;36383:7;36392:5;36344:22;:54::i;:::-;36322:154;;;;-1:-1:-1;;;36322:154:0;;;;;;;:::i;40184:799::-;40339:4;-1:-1:-1;;;;;40360:13:0;;12050:19;:23;40356:620;;40396:72;;-1:-1:-1;;;40396:72:0;;-1:-1:-1;;;;;40396:36:0;;;;;:72;;7858:10;;40447:4;;40453:7;;40462:5;;40396:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;40396:72:0;;;;;;;;-1:-1:-1;;40396:72:0;;;;;;;;;;;;:::i;:::-;;;40392:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;40638:13:0;;40634:272;;40681:60;;-1:-1:-1;;;40681:60:0;;;;;;;:::i;40634:272::-;40856:6;40850:13;40841:6;40837:2;40833:15;40826:38;40392:529;-1:-1:-1;;;;;;40519:51:0;-1:-1:-1;;;40519:51:0;;-1:-1:-1;40512:58:0;;40356:620;-1:-1:-1;40960:4:0;40184:799;;;;;;:::o;36820:439::-;-1:-1:-1;;;;;36900:16:0;;36892:61;;;;-1:-1:-1;;;36892:61:0;;21914:2:1;36892:61:0;;;21896:21:1;;;21933:18;;;21926:30;21992:34;21972:18;;;21965:62;22044:18;;36892:61:0;21712:356:1;36892:61:0;34907:4;34931:16;;;:7;:16;;;;;;-1:-1:-1;;;;;34931:16:0;:30;36964:58;;;;-1:-1:-1;;;36964:58:0;;18434:2:1;36964:58:0;;;18416:21:1;18473:2;18453:18;;;18446:30;18512;18492:18;;;18485:58;18560:18;;36964:58:0;18232:352:1;36964:58:0;-1:-1:-1;;;;;37093:13:0;;;;;;:9;:13;;;;;:18;;37110:1;;37093:13;:18;;37110:1;;37093:18;:::i;:::-;;;;-1:-1:-1;;37122:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;37122:21:0;-1:-1:-1;;;;;37122:21:0;;;;;;;;37161:33;;37122:16;;;37161:33;;37122:16;;37161:33;47130:273;46812:596;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:406:1;78:5;-1:-1:-1;;;;;104:6:1;101:30;98:56;;;134:18;;:::i;:::-;172:57;217:2;196:15;;-1:-1:-1;;192:29:1;223:4;188:40;172:57;:::i;:::-;163:66;;252:6;245:5;238:21;292:3;283:6;278:3;274:16;271:25;268:45;;;309:1;306;299:12;268:45;358:6;353:3;346:4;339:5;335:16;322:43;412:1;405:4;396:6;389:5;385:18;381:29;374:40;14:406;;;;;:::o;425:173::-;493:20;;-1:-1:-1;;;;;542:31:1;;532:42;;522:70;;588:1;585;578:12;522:70;425:173;;;:::o;603:679::-;657:5;710:3;703:4;695:6;691:17;687:27;677:55;;728:1;725;718:12;677:55;764:6;751:20;790:4;814:60;830:43;870:2;830:43;:::i;:::-;814:60;:::i;:::-;896:3;920:2;915:3;908:15;948:2;943:3;939:12;932:19;;983:2;975:6;971:15;1035:3;1030:2;1024;1021:1;1017:10;1009:6;1005:23;1001:32;998:41;995:61;;;1052:1;1049;1042:12;995:61;1074:1;1084:169;1098:2;1095:1;1092:9;1084:169;;;1155:23;1174:3;1155:23;:::i;:::-;1143:36;;1199:12;;;;1231;;;;1116:1;1109:9;1084:169;;;-1:-1:-1;1271:5:1;;603:679;-1:-1:-1;;;;;;;603:679:1:o;1287:673::-;1341:5;1394:3;1387:4;1379:6;1375:17;1371:27;1361:55;;1412:1;1409;1402:12;1361:55;1448:6;1435:20;1474:4;1498:60;1514:43;1554:2;1514:43;:::i;1498:60::-;1580:3;1604:2;1599:3;1592:15;1632:2;1627:3;1623:12;1616:19;;1667:2;1659:6;1655:15;1719:3;1714:2;1708;1705:1;1701:10;1693:6;1689:23;1685:32;1682:41;1679:61;;;1736:1;1733;1726:12;1679:61;1758:1;1768:163;1782:2;1779:1;1776:9;1768:163;;;1839:17;;1827:30;;1877:12;;;;1909;;;;1800:1;1793:9;1768:163;;1965:160;2030:20;;2086:13;;2079:21;2069:32;;2059:60;;2115:1;2112;2105:12;2130:221;2173:5;2226:3;2219:4;2211:6;2207:17;2203:27;2193:55;;2244:1;2241;2234:12;2193:55;2266:79;2341:3;2332:6;2319:20;2312:4;2304:6;2300:17;2266:79;:::i;2356:186::-;2415:6;2468:2;2456:9;2447:7;2443:23;2439:32;2436:52;;;2484:1;2481;2474:12;2436:52;2507:29;2526:9;2507:29;:::i;2547:260::-;2615:6;2623;2676:2;2664:9;2655:7;2651:23;2647:32;2644:52;;;2692:1;2689;2682:12;2644:52;2715:29;2734:9;2715:29;:::i;:::-;2705:39;;2763:38;2797:2;2786:9;2782:18;2763:38;:::i;:::-;2753:48;;2547:260;;;;;:::o;2812:328::-;2889:6;2897;2905;2958:2;2946:9;2937:7;2933:23;2929:32;2926:52;;;2974:1;2971;2964:12;2926:52;2997:29;3016:9;2997:29;:::i;:::-;2987:39;;3045:38;3079:2;3068:9;3064:18;3045:38;:::i;:::-;3035:48;;3130:2;3119:9;3115:18;3102:32;3092:42;;2812:328;;;;;:::o;3145:666::-;3240:6;3248;3256;3264;3317:3;3305:9;3296:7;3292:23;3288:33;3285:53;;;3334:1;3331;3324:12;3285:53;3357:29;3376:9;3357:29;:::i;:::-;3347:39;;3405:38;3439:2;3428:9;3424:18;3405:38;:::i;:::-;3395:48;;3490:2;3479:9;3475:18;3462:32;3452:42;;3545:2;3534:9;3530:18;3517:32;-1:-1:-1;;;;;3564:6:1;3561:30;3558:50;;;3604:1;3601;3594:12;3558:50;3627:22;;3680:4;3672:13;;3668:27;-1:-1:-1;3658:55:1;;3709:1;3706;3699:12;3658:55;3732:73;3797:7;3792:2;3779:16;3774:2;3770;3766:11;3732:73;:::i;:::-;3722:83;;;3145:666;;;;;;;:::o;3816:254::-;3881:6;3889;3942:2;3930:9;3921:7;3917:23;3913:32;3910:52;;;3958:1;3955;3948:12;3910:52;3981:29;4000:9;3981:29;:::i;:::-;3971:39;;4029:35;4060:2;4049:9;4045:18;4029:35;:::i;4075:254::-;4143:6;4151;4204:2;4192:9;4183:7;4179:23;4175:32;4172:52;;;4220:1;4217;4210:12;4172:52;4243:29;4262:9;4243:29;:::i;:::-;4233:39;4319:2;4304:18;;;;4291:32;;-1:-1:-1;;;4075:254:1:o;4334:348::-;4418:6;4471:2;4459:9;4450:7;4446:23;4442:32;4439:52;;;4487:1;4484;4477:12;4439:52;4527:9;4514:23;-1:-1:-1;;;;;4552:6:1;4549:30;4546:50;;;4592:1;4589;4582:12;4546:50;4615:61;4668:7;4659:6;4648:9;4644:22;4615:61;:::i;4687:615::-;4773:6;4781;4834:2;4822:9;4813:7;4809:23;4805:32;4802:52;;;4850:1;4847;4840:12;4802:52;4890:9;4877:23;-1:-1:-1;;;;;4960:2:1;4952:6;4949:14;4946:34;;;4976:1;4973;4966:12;4946:34;5014:6;5003:9;4999:22;4989:32;;5059:7;5052:4;5048:2;5044:13;5040:27;5030:55;;5081:1;5078;5071:12;5030:55;5121:2;5108:16;5147:2;5139:6;5136:14;5133:34;;;5163:1;5160;5153:12;5133:34;5216:7;5211:2;5201:6;5198:1;5194:14;5190:2;5186:23;5182:32;5179:45;5176:65;;;5237:1;5234;5227:12;5176:65;5268:2;5260:11;;;;;5290:6;;-1:-1:-1;4687:615:1;;-1:-1:-1;;;;4687:615:1:o;5307:1199::-;5425:6;5456:2;5499;5487:9;5478:7;5474:23;5470:32;5467:52;;;5515:1;5512;5505:12;5467:52;5555:9;5542:23;-1:-1:-1;;;;;5580:6:1;5577:30;5574:50;;;5620:1;5617;5610:12;5574:50;5643:22;;5696:4;5688:13;;5684:27;-1:-1:-1;5674:55:1;;5725:1;5722;5715:12;5674:55;5761:2;5748:16;5784:60;5800:43;5840:2;5800:43;:::i;5784:60::-;5866:3;5890:2;5885:3;5878:15;5918:2;5913:3;5909:12;5902:19;;5949:2;5945;5941:11;5997:7;5992:2;5986;5983:1;5979:10;5975:2;5971:19;5967:28;5964:41;5961:61;;;6018:1;6015;6008:12;5961:61;6040:1;6031:10;;6061:1;6071:405;6087:2;6082:3;6079:11;6071:405;;;6146:4;6189:2;6183:3;6174:7;6170:17;6166:26;6163:46;;;6205:1;6202;6195:12;6163:46;6235:22;;:::i;:::-;6284:23;6303:3;6284:23;:::i;:::-;6270:38;;6357:12;;;6344:26;6328:14;;;6321:50;6384:18;;6422:12;;;;6454;;;;6109:1;6100:11;6071:405;;;-1:-1:-1;6495:5:1;;5307:1199;-1:-1:-1;;;;;;;;5307:1199:1:o;6511:422::-;6604:6;6612;6665:2;6653:9;6644:7;6640:23;6636:32;6633:52;;;6681:1;6678;6671:12;6633:52;6721:9;6708:23;-1:-1:-1;;;;;6746:6:1;6743:30;6740:50;;;6786:1;6783;6776:12;6740:50;6809:61;6862:7;6853:6;6842:9;6838:22;6809:61;:::i;:::-;6799:71;;;6889:38;6923:2;6912:9;6908:18;6889:38;:::i;6938:180::-;6994:6;7047:2;7035:9;7026:7;7022:23;7018:32;7015:52;;;7063:1;7060;7053:12;7015:52;7086:26;7102:9;7086:26;:::i;7123:316::-;7197:6;7205;7213;7266:2;7254:9;7245:7;7241:23;7237:32;7234:52;;;7282:1;7279;7272:12;7234:52;7305:26;7321:9;7305:26;:::i;:::-;7295:36;7378:2;7363:18;;7350:32;;-1:-1:-1;7429:2:1;7414:18;;;7401:32;;7123:316;-1:-1:-1;;;7123:316:1:o;7444:245::-;7502:6;7555:2;7543:9;7534:7;7530:23;7526:32;7523:52;;;7571:1;7568;7561:12;7523:52;7610:9;7597:23;7629:30;7653:5;7629:30;:::i;7694:249::-;7763:6;7816:2;7804:9;7795:7;7791:23;7787:32;7784:52;;;7832:1;7829;7822:12;7784:52;7864:9;7858:16;7883:30;7907:5;7883:30;:::i;7948:944::-;8074:6;8082;8090;8098;8151:3;8139:9;8130:7;8126:23;8122:33;8119:53;;;8168:1;8165;8158:12;8119:53;8208:9;8195:23;-1:-1:-1;;;;;8278:2:1;8270:6;8267:14;8264:34;;;8294:1;8291;8284:12;8264:34;8317:50;8359:7;8350:6;8339:9;8335:22;8317:50;:::i;:::-;8307:60;;8420:2;8409:9;8405:18;8392:32;8376:48;;8449:2;8439:8;8436:16;8433:36;;;8465:1;8462;8455:12;8433:36;8488:52;8532:7;8521:8;8510:9;8506:24;8488:52;:::i;:::-;8478:62;;8593:2;8582:9;8578:18;8565:32;8549:48;;8622:2;8612:8;8609:16;8606:36;;;8638:1;8635;8628:12;8606:36;8661:52;8705:7;8694:8;8683:9;8679:24;8661:52;:::i;:::-;8651:62;;8766:2;8755:9;8751:18;8738:32;8722:48;;8795:2;8785:8;8782:16;8779:36;;;8811:1;8808;8801:12;8779:36;;8834:52;8878:7;8867:8;8856:9;8852:24;8834:52;:::i;8897:180::-;8956:6;9009:2;8997:9;8988:7;8984:23;8980:32;8977:52;;;9025:1;9022;9015:12;8977:52;-1:-1:-1;9048:23:1;;8897:180;-1:-1:-1;8897:180:1:o;9082:1146::-;9263:6;9271;9279;9287;9295;9303;9311;9319;9327;9335;9388:3;9376:9;9367:7;9363:23;9359:33;9356:53;;;9405:1;9402;9395:12;9356:53;9441:9;9428:23;9418:33;;9498:2;9487:9;9483:18;9470:32;9460:42;;9549:2;9538:9;9534:18;9521:32;9511:42;;9600:2;9589:9;9585:18;9572:32;9562:42;;9651:3;9640:9;9636:19;9623:33;9613:43;;9707:3;9696:9;9692:19;9679:33;-1:-1:-1;;;;;9772:2:1;9764:6;9761:14;9758:34;;;9788:1;9785;9778:12;9758:34;9811:61;9864:7;9855:6;9844:9;9840:22;9811:61;:::i;:::-;9801:71;;9925:3;9914:9;9910:19;9897:33;9881:49;;9955:2;9945:8;9942:16;9939:36;;;9971:1;9968;9961:12;9939:36;;9994:63;10049:7;10038:8;10027:9;10023:24;9994:63;:::i;:::-;9984:73;;;10076:36;10107:3;10096:9;10092:19;10076:36;:::i;:::-;10066:46;;10131:36;10162:3;10151:9;10147:19;10131:36;:::i;:::-;10121:46;;10186:36;10217:3;10206:9;10202:19;10186:36;:::i;:::-;10176:46;;9082:1146;;;;;;;;;;;;;:::o;10233:461::-;10286:3;10324:5;10318:12;10351:6;10346:3;10339:19;10377:4;10406:2;10401:3;10397:12;10390:19;;10443:2;10436:5;10432:14;10464:1;10474:195;10488:6;10485:1;10482:13;10474:195;;;10553:13;;-1:-1:-1;;;;;10549:39:1;10537:52;;10609:12;;;;10644:15;;;;10585:1;10503:9;10474:195;;;-1:-1:-1;10685:3:1;;10233:461;-1:-1:-1;;;;;10233:461:1:o;10699:435::-;10752:3;10790:5;10784:12;10817:6;10812:3;10805:19;10843:4;10872:2;10867:3;10863:12;10856:19;;10909:2;10902:5;10898:14;10930:1;10940:169;10954:6;10951:1;10948:13;10940:169;;;11015:13;;11003:26;;11049:12;;;;11084:15;;;;10976:1;10969:9;10940:169;;11139:257;11180:3;11218:5;11212:12;11245:6;11240:3;11233:19;11261:63;11317:6;11310:4;11305:3;11301:14;11294:4;11287:5;11283:16;11261:63;:::i;:::-;11378:2;11357:15;-1:-1:-1;;11353:29:1;11344:39;;;;11385:4;11340:50;;11139:257;-1:-1:-1;;11139:257:1:o;11635:637::-;11915:3;11953:6;11947:13;11969:53;12015:6;12010:3;12003:4;11995:6;11991:17;11969:53;:::i;:::-;12085:13;;12044:16;;;;12107:57;12085:13;12044:16;12141:4;12129:17;;12107:57;:::i;:::-;-1:-1:-1;;;12186:20:1;;12215:22;;;12264:1;12253:13;;11635:637;-1:-1:-1;;;;11635:637:1:o;12695:488::-;-1:-1:-1;;;;;12964:15:1;;;12946:34;;13016:15;;13011:2;12996:18;;12989:43;13063:2;13048:18;;13041:34;;;13111:3;13106:2;13091:18;;13084:31;;;12889:4;;13132:45;;13157:19;;13149:6;13132:45;:::i;:::-;13124:53;12695:488;-1:-1:-1;;;;;;12695:488:1:o;13188:832::-;13427:2;13479:21;;;13549:13;;13452:18;;;13571:22;;;13398:4;;13427:2;13612;;13630:18;;;;13671:15;;;13398:4;13714:280;13728:6;13725:1;13722:13;13714:280;;;13787:13;;13829:9;;-1:-1:-1;;;;;13825:35:1;13813:48;;13901:11;;13895:18;13881:12;;;13874:40;13934:12;;;;13969:15;;;;13857:1;13743:9;13714:280;;;-1:-1:-1;14011:3:1;;13188:832;-1:-1:-1;;;;;;;13188:832:1:o;14025:261::-;14204:2;14193:9;14186:21;14167:4;14224:56;14276:2;14265:9;14261:18;14253:6;14224:56;:::i;14483:835::-;14888:6;14881:14;14874:22;14863:9;14856:41;14933:6;14928:2;14917:9;14913:18;14906:34;14976:6;14971:2;14960:9;14956:18;14949:34;15019:6;15014:2;15003:9;14999:18;14992:34;15063:6;15057:3;15046:9;15042:19;15035:35;15107:3;15101;15090:9;15086:19;15079:32;14837:4;15134:57;15186:3;15175:9;15171:19;15163:6;15134:57;:::i;:::-;15240:9;15232:6;15228:22;15222:3;15211:9;15207:19;15200:51;15268:44;15305:6;15297;15268:44;:::i;:::-;15260:52;14483:835;-1:-1:-1;;;;;;;;;;14483:835:1:o;15323:219::-;15472:2;15461:9;15454:21;15435:4;15492:44;15532:2;15521:9;15517:18;15509:6;15492:44;:::i;15547:1033::-;15936:3;15925:9;15918:22;15899:4;15963:45;16003:3;15992:9;15988:19;15980:6;15963:45;:::i;:::-;16056:9;16048:6;16044:22;16039:2;16028:9;16024:18;16017:50;16090:32;16115:6;16107;16090:32;:::i;:::-;16076:46;;16170:9;16162:6;16158:22;16153:2;16142:9;16138:18;16131:50;16204:32;16229:6;16221;16204:32;:::i;:::-;16190:46;;16284:9;16276:6;16272:22;16267:2;16256:9;16252:18;16245:50;16318:32;16343:6;16335;16318:32;:::i;:::-;16304:46;;16399:9;16391:6;16387:22;16381:3;16370:9;16366:19;16359:51;16433:32;16458:6;16450;16433:32;:::i;:::-;16419:46;;16514:9;16506:6;16502:22;16496:3;16485:9;16481:19;16474:51;16542:32;16567:6;16559;16542:32;:::i;:::-;16534:40;15547:1033;-1:-1:-1;;;;;;;;;15547:1033:1:o;17000:414::-;17202:2;17184:21;;;17241:2;17221:18;;;17214:30;17280:34;17275:2;17260:18;;17253:62;-1:-1:-1;;;17346:2:1;17331:18;;17324:48;17404:3;17389:19;;17000:414::o;22912:356::-;23114:2;23096:21;;;23133:18;;;23126:30;23192:34;23187:2;23172:18;;23165:62;23259:2;23244:18;;22912:356::o;25626:413::-;25828:2;25810:21;;;25867:2;25847:18;;;25840:30;25906:34;25901:2;25886:18;;25879:62;-1:-1:-1;;;25972:2:1;25957:18;;25950:47;26029:3;26014:19;;25626:413::o;27636:414::-;27838:2;27820:21;;;27877:2;27857:18;;;27850:30;27916:34;27911:2;27896:18;;27889:62;-1:-1:-1;;;27982:2:1;27967:18;;27960:48;28040:3;28025:19;;27636:414::o;28633:1372::-;29167:4;29196:3;29226:6;29215:9;29208:25;29269:6;29264:2;29253:9;29249:18;29242:34;29312:6;29307:2;29296:9;29292:18;29285:34;29355:6;29350:2;29339:9;29335:18;29328:34;29399:6;29393:3;29382:9;29378:19;29371:35;29443:6;29437:3;29426:9;29422:19;29415:35;29487:2;29481:3;29470:9;29466:19;29459:31;29513:56;29565:2;29554:9;29550:18;29542:6;29513:56;:::i;:::-;29499:70;;29618:9;29610:6;29606:22;29600:3;29589:9;29585:19;29578:51;29652:44;29689:6;29681;29652:44;:::i;:::-;29638:58;;29747:6;29740:14;29733:22;29727:3;29716:9;29712:19;29705:51;29807:6;29800:14;29793:22;29787:3;29776:9;29772:19;29765:51;29867:7;29860:15;29853:23;29847:3;29836:9;29832:19;29825:52;29926:9;29918:6;29914:22;29908:3;29897:9;29893:19;29886:51;29954:45;29992:6;29983:7;29954:45;:::i;:::-;29946:53;28633:1372;-1:-1:-1;;;;;;;;;;;;;;;28633:1372:1:o;30010:257::-;30082:4;30076:11;;;30114:17;;-1:-1:-1;;;;;30146:34:1;;30182:22;;;30143:62;30140:88;;;30208:18;;:::i;:::-;30244:4;30237:24;30010:257;:::o;30272:275::-;30343:2;30337:9;30408:2;30389:13;;-1:-1:-1;;30385:27:1;30373:40;;-1:-1:-1;;;;;30428:34:1;;30464:22;;;30425:62;30422:88;;;30490:18;;:::i;:::-;30526:2;30519:22;30272:275;;-1:-1:-1;30272:275:1:o;30552:183::-;30612:4;-1:-1:-1;;;;;30637:6:1;30634:30;30631:56;;;30667:18;;:::i;:::-;-1:-1:-1;30712:1:1;30708:14;30724:4;30704:25;;30552:183::o;30740:128::-;30780:3;30811:1;30807:6;30804:1;30801:13;30798:39;;;30817:18;;:::i;:::-;-1:-1:-1;30853:9:1;;30740:128::o;30873:120::-;30913:1;30939;30929:35;;30944:18;;:::i;:::-;-1:-1:-1;30978:9:1;;30873:120::o;30998:168::-;31038:7;31104:1;31100;31096:6;31092:14;31089:1;31086:21;31081:1;31074:9;31067:17;31063:45;31060:71;;;31111:18;;:::i;:::-;-1:-1:-1;31151:9:1;;30998:168::o;31171:125::-;31211:4;31239:1;31236;31233:8;31230:34;;;31244:18;;:::i;:::-;-1:-1:-1;31281:9:1;;31171:125::o;31301:258::-;31373:1;31383:113;31397:6;31394:1;31391:13;31383:113;;;31473:11;;;31467:18;31454:11;;;31447:39;31419:2;31412:10;31383:113;;;31514:6;31511:1;31508:13;31505:48;;;-1:-1:-1;;31549:1:1;31531:16;;31524:27;31301:258::o;31564:380::-;31643:1;31639:12;;;;31686;;;31707:61;;31761:4;31753:6;31749:17;31739:27;;31707:61;31814:2;31806:6;31803:14;31783:18;31780:38;31777:161;;;31860:10;31855:3;31851:20;31848:1;31841:31;31895:4;31892:1;31885:15;31923:4;31920:1;31913:15;31777:161;;31564:380;;;:::o;31949:135::-;31988:3;-1:-1:-1;;32009:17:1;;32006:43;;;32029:18;;:::i;:::-;-1:-1:-1;32076:1:1;32065:13;;31949:135::o;32089:112::-;32121:1;32147;32137:35;;32152:18;;:::i;:::-;-1:-1:-1;32186:9:1;;32089:112::o;32206:127::-;32267:10;32262:3;32258:20;32255:1;32248:31;32298:4;32295:1;32288:15;32322:4;32319:1;32312:15;32338:127;32399:10;32394:3;32390:20;32387:1;32380:31;32430:4;32427:1;32420:15;32454:4;32451:1;32444:15;32470:127;32531:10;32526:3;32522:20;32519:1;32512:31;32562:4;32559:1;32552:15;32586:4;32583:1;32576:15;32602:127;32663:10;32658:3;32654:20;32651:1;32644:31;32694:4;32691:1;32684:15;32718:4;32715:1;32708:15;32734:131;-1:-1:-1;;;;;;32808:32:1;;32798:43;;32788:71;;32855:1;32852;32845:12
Swarm Source
ipfs://d1117289c3a4b9871b0aa164b30fa245b5d9cc7a839cce6eedf3ae280fbb29a3
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.