More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 3,274 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Approval For... | 60790768 | 12 mins ago | IN | 0 AVAX | 0.00000476 | ||||
Set Approval For... | 60509902 | 4 days ago | IN | 0 AVAX | 0.00000444 | ||||
Set Approval For... | 60489304 | 5 days ago | IN | 0 AVAX | 0.00003645 | ||||
Set Approval For... | 60383353 | 6 days ago | IN | 0 AVAX | 0.00000439 | ||||
Set Approval For... | 59961318 | 13 days ago | IN | 0 AVAX | 0.00004704 | ||||
Set Approval For... | 59961301 | 13 days ago | IN | 0 AVAX | 0.00008077 | ||||
Set Approval For... | 59746928 | 17 days ago | IN | 0 AVAX | 0.0000353 | ||||
Set Approval For... | 59746658 | 17 days ago | IN | 0 AVAX | 0.00002976 | ||||
Set Approval For... | 59597875 | 21 days ago | IN | 0 AVAX | 0.00016201 | ||||
Set Approval For... | 59563298 | 21 days ago | IN | 0 AVAX | 0.00023241 | ||||
Safe Transfer Fr... | 59503582 | 23 days ago | IN | 0 AVAX | 0.000101 | ||||
Set Approval For... | 59081414 | 31 days ago | IN | 0 AVAX | 0.00007294 | ||||
Set Approval For... | 59078884 | 31 days ago | IN | 0 AVAX | 0.00003645 | ||||
Set Approval For... | 58839396 | 37 days ago | IN | 0 AVAX | 0.00011551 | ||||
Set Approval For... | 58736146 | 39 days ago | IN | 0 AVAX | 0.00016201 | ||||
Set Approval For... | 58553423 | 43 days ago | IN | 0 AVAX | 0.00007323 | ||||
Set Approval For... | 58310827 | 47 days ago | IN | 0 AVAX | 0.00018515 | ||||
Set Approval For... | 58306031 | 48 days ago | IN | 0 AVAX | 0.00016201 | ||||
Set Approval For... | 58172988 | 50 days ago | IN | 0 AVAX | 0.0000523 | ||||
Set Approval For... | 58051330 | 53 days ago | IN | 0 AVAX | 0.00004628 | ||||
Set Approval For... | 58051190 | 53 days ago | IN | 0 AVAX | 0.00009257 | ||||
Set Approval For... | 58035150 | 53 days ago | IN | 0 AVAX | 0.00004628 | ||||
Set Approval For... | 58021273 | 53 days ago | IN | 0 AVAX | 0.00007294 | ||||
Set Approval For... | 57929000 | 55 days ago | IN | 0 AVAX | 0.00016201 | ||||
Set Approval For... | 57907434 | 55 days ago | IN | 0 AVAX | 0.02337594 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
24495941 | 840 days ago | 0.025 AVAX | ||||
24495941 | 840 days ago | 0.225 AVAX | ||||
24495927 | 840 days ago | 0.025 AVAX | ||||
24495927 | 840 days ago | 0.225 AVAX | ||||
24495901 | 840 days ago | 0.025 AVAX | ||||
24495901 | 840 days ago | 0.225 AVAX | ||||
24495859 | 840 days ago | 0.05 AVAX | ||||
24495859 | 840 days ago | 0.45 AVAX | ||||
24495704 | 840 days ago | 0.05 AVAX | ||||
24495704 | 840 days ago | 0.45 AVAX | ||||
24495686 | 840 days ago | 0.05 AVAX | ||||
24495686 | 840 days ago | 0.45 AVAX | ||||
24494983 | 840 days ago | 0.025 AVAX | ||||
24494983 | 840 days ago | 0.225 AVAX | ||||
24494971 | 840 days ago | 0.025 AVAX | ||||
24494971 | 840 days ago | 0.225 AVAX | ||||
24494962 | 840 days ago | 0.025 AVAX | ||||
24494962 | 840 days ago | 0.225 AVAX | ||||
24494950 | 840 days ago | 0.05 AVAX | ||||
24494950 | 840 days ago | 0.45 AVAX | ||||
24494939 | 840 days ago | 0.025 AVAX | ||||
24494939 | 840 days ago | 0.225 AVAX | ||||
24494923 | 840 days ago | 0.15 AVAX | ||||
24494923 | 840 days ago | 1.35 AVAX | ||||
24494921 | 840 days ago | 0.025 AVAX |
Loading...
Loading
Contract Name:
Vloaters
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.11; import "ERC721.sol"; import "IERC20.sol"; import "Counters.sol"; import "Ownable.sol"; import "Strings.sol"; import "KindaRandom.sol"; interface IMambonauts is IERC721 { function totalSupply() external view returns (uint256); } contract Vloaters is ERC721, Ownable, KindaRandom { using Counters for Counters.Counter; using Strings for uint256; Counters.Counter private _tokenIds; uint256 private _maxMintable = 2984; // max generative supply uint256 private _combinedSupply = 3000; uint256 private _royaltyAmount = 750; // 7.5% royalties uint256 private _maxMintPerTx = 20; uint256 private _legendaryTokenIds = 2985; uint256 private _legendaryTokenCount = 0; bool private _soulbound = true; bool public canGamble = true; bool public mambodrop = true; uint256 public price = 0.25 ether; uint256 public mambloonPrice = 20 ether; address private _team = 0xFa43979efa2173B78AA852eEf23115819832A5cb; address private _royaltyReceiver = 0x74331373cC4B88d88B82e7Cdf355295766b1C4A8; address public mambonauts; address public mambloons; string private _baseTokenURI = "ipfs://QmcDsJ89NqAi1kzuB5Jx89qbYdcFFKytfmuW5eUx86J1Yh/"; string private _baseExtension = ".json"; string private _soulboundTokenURI = "ipfs://QmcQdfECDWHET5cgQNrDDF4hYM4QjobCK996c8QtRyGoAp/"; mapping(uint256 => bool) private soulboundTokens; bytes4 private constant _INTERFACE_ID_ERC2981 = 0x2a55205a; bool private _mintActive = false; uint256 private _startTime = 1665608400; // Oct 12, 9pm UTC constructor() ERC721("Vloaters", "VLOAT") KindaRandom(2984) { _privateMint(_team, _randomInt(), false); } function setMintActive(bool status) public onlyOwner { _mintActive = status; } function setCanGamble(bool status) public onlyOwner { canGamble = status; } function setMambodrop(bool status) public onlyOwner { mambodrop = status; } function setTeam(address team_) public onlyOwner { _team = team_; } function setPrice(uint256 price_) public onlyOwner { price = price_; } function setRoyaltyReceiver(address royaltyReceiver_) public onlyOwner { _royaltyReceiver = royaltyReceiver_; } function setStartTime(uint256 startTime_) public onlyOwner { _startTime = startTime_; } function setMaxMintPerTx(uint256 maxMintPerTx_) public onlyOwner { _maxMintPerTx = maxMintPerTx_; } function setRoyaltyAmount(uint256 royaltyAmount_) public onlyOwner { _royaltyAmount = royaltyAmount_; } function setBaseURI(string calldata baseURI_) external onlyOwner { _baseTokenURI = baseURI_; } function setSoulboundTokenURI(string calldata soulboundTokenURI_) external onlyOwner { _soulboundTokenURI = soulboundTokenURI_; } function unbind() external onlyOwner { _soulbound = false; } function setBaseExtension(string memory newBaseExtension) public onlyOwner { _baseExtension = newBaseExtension; } function _baseURI() internal view virtual override returns (string memory) { return _baseTokenURI; } function setCombinedSupply(uint256 combinedSupply_) public onlyOwner { _combinedSupply = combinedSupply_; } function setMambloons(address mambloons_) public onlyOwner { mambloons = mambloons_; } function setMambonauts(address mambonauts_) public onlyOwner { mambonauts = mambonauts_; } function mintActive() public view returns (bool) { return _mintActive; // use timer w/ability to override } function withdrawMambloons() public onlyOwner { IERC20 mambloonERC = IERC20(mambloons); uint256 balance = mambloonERC.balanceOf(address(this)); if (balance > 0) { mambloonERC.transfer(_team, balance); } } function secondsUntilMint() public view returns (uint256) { if (!mintActive()) { return _startTime - block.timestamp; } else { return 0; } } function mint(uint256 quantity) public payable { require(mintActive(), "Minting is not active."); require(quantity <= _maxMintPerTx, "Cannot mint that many at once."); require(msg.value >= (quantity * price), "Not enough AVAX sent."); uint256 randInt = _randomInt(); IMambonauts mamboNFT = IMambonauts(mambonauts); uint256 randMamboId = (randInt % mamboNFT.totalSupply()) + 1; address randMamboHolder = mamboNFT.ownerOf(randMamboId); if (mambodrop) { payable(_team).transfer((msg.value * 900) / 1000); payable(randMamboHolder).call{value: (msg.value * 100) / 1000}(""); } else { payable(_team).transfer(msg.value); } for(uint i = 0; i < quantity; i++) { _privateMint(msg.sender, randInt, false); } IERC20(mambloons).transfer(msg.sender, quantity * 1 ether); } function mambloonMint(uint256 quantity) public { require(mintActive(), "Minting is not active."); require(quantity <= _maxMintPerTx, "Cannot mint that many at once."); IERC20(mambloons).transferFrom(msg.sender, owner(), mambloonPrice * quantity); for(uint i = 0; i < quantity; i++) { _privateMint(msg.sender, _randomInt(), true); } } function mambloonGambleMint(uint256 mambloonAmount) public { require(mintActive(), "Minting is not active."); require(canGamble, "Gambling is disabled"); require(mambloonAmount * 1 ether < mambloonPrice, "You have enough for a full mint!"); IERC20(mambloons).transferFrom(msg.sender, owner(), mambloonAmount * 1 ether); uint256 randInt = _randomInt(); if (randInt % 100 >= 100 - (mambloonAmount * 4) ) { _privateMint(msg.sender, randInt, true); } } function totalSupply() public view returns (uint256) { return _tokenIds.current(); } function _privateMint(address recipient, uint256 randInt, bool soulbound) private { require(_tokenIds.current() < _maxMintable, "Project is finished minting."); uint256 randomish = randInt % (_maxMintable - _tokenIds.current()); _tokenIds.increment(); uint256 newItemId = generateKindaRandomID(randomish) + 1; // metadata is 1 indexed _mint(recipient, newItemId); if( soulbound ) { soulboundTokens[newItemId] = true; } } function _randomInt() private returns(uint256) { return uint256(keccak256(abi.encodePacked(_tokenIds.current(), block.timestamp, blockhash(block.number)))); } function legendaryAirdrop() public onlyOwner { require(_legendaryTokenIds <= _combinedSupply); _mint(_team, _legendaryTokenIds); _legendaryTokenIds += 1; _legendaryTokenCount += 1; } function royaltyInfo( uint256 _tokenId, uint256 _salePrice ) external view returns (address receiver, uint256 royaltyAmount) { return (_royaltyReceiver, ((_salePrice * _royaltyAmount) / 10000)); } function supportsInterface(bytes4 interfaceId) public view virtual override(ERC721) returns (bool) { if (interfaceId == _INTERFACE_ID_ERC2981) { return true; } return super.supportsInterface(interfaceId); } function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory currentBaseURI = (_soulbound && soulboundTokens[tokenId]) ? _soulboundTokenURI : _baseURI(); return bytes(currentBaseURI).length > 0 ? string(abi.encodePacked(currentBaseURI, tokenId.toString(), _baseExtension)) : ""; } function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual override(ERC721) { require(from == address(0) || !_soulbound || !soulboundTokens[tokenId], "Can't dump yet!"); super._beforeTokenTransfer(from, to, tokenId); } function tokensOfOwner(address _address) external view returns (uint256[] memory) { uint256 ownerTokenCount = balanceOf(_address); uint256[] memory ownedTokenIDs = new uint256[](ownerTokenCount); uint256 tokenIndex = 1; uint256 ownedTokenIndex = 0; while (ownedTokenIndex < ownerTokenCount && tokenIndex <= _combinedSupply) { if( !_exists(tokenIndex) ) { tokenIndex++; continue; } address owner = ownerOf(tokenIndex); if (owner == _address) { ownedTokenIDs[ownedTokenIndex] = tokenIndex; ownedTokenIndex++; } tokenIndex++; } return ownedTokenIDs; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/ERC721.sol) pragma solidity ^0.8.0; import "IERC721.sol"; import "IERC721Receiver.sol"; import "IERC721Metadata.sol"; import "Address.sol"; import "Context.sol"; import "Strings.sol"; import "ERC165.sol"; /** * @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: address zero is not a valid owner"); 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: invalid token ID"); 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) { _requireMinted(tokenId); 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 overridden 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 token owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { _requireMinted(tokenId); 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: caller is not token 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: caller is not token 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) { address owner = ERC721.ownerOf(tokenId); return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == 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 an {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 an {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 Reverts if the `tokenId` has not been minted yet. */ function _requireMinted(uint256 tokenId) internal view virtual { require(_exists(tokenId), "ERC721: invalid token ID"); } /** * @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 { /// @solidity memory-safe-assembly 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 {} }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; import "IERC165.sol"; /** * @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`. * * 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; /** * @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 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 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 the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @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); }
// SPDX-License-Identifier: MIT // 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); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (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 `IERC721Receiver.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol) pragma solidity ^0.8.0; import "IERC721.sol"; /** * @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); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.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 /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
// SPDX-License-Identifier: MIT // 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; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; uint8 private constant _ADDRESS_LENGTH = 20; /** * @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); } /** * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation. */ function toHexString(address addr) internal pure returns (string memory) { return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; import "IERC165.sol"; /** * @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; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); }
// SPDX-License-Identifier: MIT // 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; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "Context.sol"; /** * @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 Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { 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); } }
//SPDX-License-Identifier: MIT pragma solidity ^0.8.1; contract KindaRandom { uint256 private _index = 0; uint256 private _supply; mapping(uint256 => uint256) _ids; constructor(uint256 supply_) { _supply = supply_; } function generateKindaRandomID(uint256 randomIndex) internal virtual returns (uint256) { uint256 remainder = _supply - _index; uint256 available; uint256 result; if (_ids[remainder - 1] == 0) { available = remainder - 1; } else { available = _ids[remainder - 1]; } if (_ids[randomIndex] == 0) { result = randomIndex; _ids[randomIndex] = available; } else { result = _ids[randomIndex]; _ids[randomIndex] = available; } _index++; return result; } }
{ "evmVersion": "istanbul", "optimizer": { "enabled": true, "runs": 200 }, "libraries": { "Vloaters.sol": {} }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"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":[],"name":"canGamble","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"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":"legendaryAirdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"mambloonAmount","type":"uint256"}],"name":"mambloonGambleMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"mambloonMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mambloonPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mambloons","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mambodrop","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mambonauts","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","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":"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":[],"name":"secondsUntilMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newBaseExtension","type":"string"}],"name":"setBaseExtension","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI_","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setCanGamble","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"combinedSupply_","type":"uint256"}],"name":"setCombinedSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"mambloons_","type":"address"}],"name":"setMambloons","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setMambodrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"mambonauts_","type":"address"}],"name":"setMambonauts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxMintPerTx_","type":"uint256"}],"name":"setMaxMintPerTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setMintActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"price_","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"royaltyAmount_","type":"uint256"}],"name":"setRoyaltyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"royaltyReceiver_","type":"address"}],"name":"setRoyaltyReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"soulboundTokenURI_","type":"string"}],"name":"setSoulboundTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"startTime_","type":"uint256"}],"name":"setStartTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"team_","type":"address"}],"name":"setTeam","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":[{"internalType":"address","name":"_address","type":"address"}],"name":"tokensOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"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":[],"name":"unbind","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawMambloons","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60006007819055610ba8600b55610bb8600c556102ee600d556014600e819055610ba9600f55601091909155601180546201010162ffffff199091161790556703782dace9d900006012556801158e460913d0000060135580546001600160a01b031990811673fa43979efa2173b78aa852eef23115819832a5cb17909155601580549091167374331373cc4b88d88b82e7cdf355295766b1c4a817905560e06040526036608081815290620035ae60a039601890620000c090826200070b565b50604080518082019091526005815264173539b7b760d91b6020820152601990620000ec90826200070b565b50604051806060016040528060368152602001620035e460369139601a906200011690826200070b565b50601c805460ff191690556363472ad0601d553480156200013657600080fd5b50610ba860405180604001604052806008815260200167566c6f617465727360c01b81525060405180604001604052806005815260200164159313d05560da1b81525081600090816200018a91906200070b565b5060016200019982826200070b565b505050620001b6620001b0620001e260201b60201c565b620001e6565b600855601454620001dc906001600160a01b0316620001d462000238565b60006200028a565b6200085e565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600062000251600a6200039460201b620019911760201c565b6040805160208101929092524290820152434060608201526080016040516020818303038152906040528051906020012060001c905090565b600b54620002a4600a6200039460201b620019911760201c565b10620002f75760405162461bcd60e51b815260206004820152601c60248201527f50726f6a6563742069732066696e6973686564206d696e74696e672e0000000060448201526064015b60405180910390fd5b600062000310600a6200039460201b620019911760201c565b600b546200031f9190620007ed565b6200032b908462000809565b905062000344600a6200039860201b620019951760201c565b60006200035182620003a1565b6200035e9060016200082c565b90506200036c85826200047f565b82156200038d576000818152601b60205260409020805460ff191660011790555b5050505050565b5490565b80546001019055565b600080600754600854620003b69190620007ed565b9050600080600981620003cb600186620007ed565b815260200190815260200160002054600003620003f757620003ef600184620007ed565b91506200041a565b6009600062000408600186620007ed565b81526020019081526020016000205491505b60008581526009602052604081205490036200044957506000848152600960205260409020819055836200045f565b5060008481526009602052604090208054908290555b60078054906000620004718362000842565b909155509095945050505050565b6001600160a01b038216620004d75760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401620002ee565b6000818152600260205260409020546001600160a01b0316156200053e5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401620002ee565b6200054c60008383620005d5565b6001600160a01b0382166000908152600360205260408120805460019290620005779084906200082c565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160a01b0383161580620005ef575060115460ff16155b806200060a57506000818152601b602052604090205460ff16155b6200064a5760405162461bcd60e51b815260206004820152600f60248201526e43616e27742064756d70207965742160881b6044820152606401620002ee565b620006628383836200066260201b62000ab31760201c565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200069257607f821691505b602082108103620006b357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200066257600081815260208120601f850160051c81016020861015620006e25750805b601f850160051c820191505b818110156200070357828155600101620006ee565b505050505050565b81516001600160401b0381111562000727576200072762000667565b6200073f816200073884546200067d565b84620006b9565b602080601f8311600181146200077757600084156200075e5750858301515b600019600386901b1c1916600185901b17855562000703565b600085815260208120601f198616915b82811015620007a85788860151825594840194600190910190840162000787565b5085821015620007c75787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b81810381811115620008035762000803620007d7565b92915050565b6000826200082757634e487b7160e01b600052601260045260246000fd5b500690565b80820180821115620008035762000803620007d7565b600060018201620008575762000857620007d7565b5060010190565b612d40806200086e6000396000f3fe6080604052600436106102935760003560e01c80637e5ec1881161015a578063ae0607b9116100c1578063da3ef23f1161007a578063da3ef23f146107d5578063e57d2c61146107f5578063e985e9c514610815578063ee1cc94414610835578063f2fde38b14610855578063fc6298cd1461087557600080fd5b8063ae0607b914610721578063b4b62e3e14610740578063b6b2574214610760578063b88d4fde14610775578063bc9d750414610795578063c87b56dd146107b557600080fd5b806395d89b411161011357806395d89b4114610683578063a035b1fe14610698578063a0712d68146106ae578063a22cb465146106c1578063a91e0410146106e1578063a9b3ab461461070157600080fd5b80637e5ec188146105ce5780638406a0e0146105e35780638462151c146105f85780638da5cb5b146106255780638dc251e31461064357806391b7f5ed1461066357600080fd5b80633047eef8116101fe5780635eb1cf7d116101b75780635eb1cf7d14610519578063616cdb1e146105395780636352211e1461055957806369bef9791461057957806370a0823114610599578063715018a6146105b957600080fd5b80633047eef8146104595780633e0a322d1461047957806342842e0e146104995780634f07de09146104b9578063500dabba146104d957806355f804b3146104f957600080fd5b806318160ddd1161025057806318160ddd1461038d57806323b872dd146103a257806325b7ea14146103c257806325fd90f3146103e25780632815ddcb146103fa5780632a55205a1461041a57600080fd5b806301ffc9a71461029857806306fdde03146102cd578063081812fc146102ef578063095cf5c614610327578063095ea7b3146103495780631533a46814610369575b600080fd5b3480156102a457600080fd5b506102b86102b3366004612436565b61088a565b60405190151581526020015b60405180910390f35b3480156102d957600080fd5b506102e26108bb565b6040516102c491906124a3565b3480156102fb57600080fd5b5061030f61030a3660046124b6565b61094d565b6040516001600160a01b0390911681526020016102c4565b34801561033357600080fd5b506103476103423660046124e4565b610974565b005b34801561035557600080fd5b50610347610364366004612501565b61099e565b34801561037557600080fd5b5061037f60135481565b6040519081526020016102c4565b34801561039957600080fd5b5061037f610ab8565b3480156103ae57600080fd5b506103476103bd36600461252d565b610ac8565b3480156103ce57600080fd5b506103476103dd36600461257c565b610af9565b3480156103ee57600080fd5b50601c5460ff166102b8565b34801561040657600080fd5b506103476104153660046124e4565b610b1b565b34801561042657600080fd5b5061043a610435366004612599565b610b45565b604080516001600160a01b0390931683526020830191909152016102c4565b34801561046557600080fd5b506011546102b89062010000900460ff1681565b34801561048557600080fd5b506103476104943660046124b6565b610b7f565b3480156104a557600080fd5b506103476104b436600461252d565b610b8c565b3480156104c557600080fd5b506103476104d43660046124b6565b610ba7565b3480156104e557600080fd5b506103476104f43660046124b6565b610bb4565b34801561050557600080fd5b506103476105143660046125bb565b610bc1565b34801561052557600080fd5b506103476105343660046124e4565b610bd6565b34801561054557600080fd5b506103476105543660046124b6565b610c00565b34801561056557600080fd5b5061030f6105743660046124b6565b610c0d565b34801561058557600080fd5b5061034761059436600461257c565b610c6d565b3480156105a557600080fd5b5061037f6105b43660046124e4565b610c91565b3480156105c557600080fd5b50610347610d17565b3480156105da57600080fd5b50610347610d2b565b3480156105ef57600080fd5b5061037f610d91565b34801561060457600080fd5b506106186106133660046124e4565b610db7565b6040516102c4919061262d565b34801561063157600080fd5b506006546001600160a01b031661030f565b34801561064f57600080fd5b5061034761065e3660046124e4565b610ec5565b34801561066f57600080fd5b5061034761067e3660046124b6565b610eef565b34801561068f57600080fd5b506102e2610efc565b3480156106a457600080fd5b5061037f60125481565b6103476106bc3660046124b6565b610f0b565b3480156106cd57600080fd5b506103476106dc366004612671565b6112b1565b3480156106ed57600080fd5b5060165461030f906001600160a01b031681565b34801561070d57600080fd5b5061034761071c3660046124b6565b6112c0565b34801561072d57600080fd5b506011546102b890610100900460ff1681565b34801561074c57600080fd5b5060175461030f906001600160a01b031681565b34801561076c57600080fd5b5061034761140f565b34801561078157600080fd5b50610347610790366004612736565b611423565b3480156107a157600080fd5b506103476107b03660046125bb565b61145b565b3480156107c157600080fd5b506102e26107d03660046124b6565b611470565b3480156107e157600080fd5b506103476107f03660046127b6565b611604565b34801561080157600080fd5b506103476108103660046124b6565b611618565b34801561082157600080fd5b506102b86108303660046127ff565b6117d7565b34801561084157600080fd5b5061034761085036600461257c565b611805565b34801561086157600080fd5b506103476108703660046124e4565b611820565b34801561088157600080fd5b50610347611899565b6000636ad56fd360e11b6001600160e01b03198316016108ac57506001919050565b6108b58261199e565b92915050565b6060600080546108ca9061282d565b80601f01602080910402602001604051908101604052809291908181526020018280546108f69061282d565b80156109435780601f1061091857610100808354040283529160200191610943565b820191906000526020600020905b81548152906001019060200180831161092657829003601f168201915b5050505050905090565b6000610958826119ee565b506000908152600460205260409020546001600160a01b031690565b61097c611a4d565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b60006109a982610c0d565b9050806001600160a01b0316836001600160a01b031603610a1b5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a375750610a3781336117d7565b610aa95760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610a12565b610ab38383611aa7565b505050565b6000610ac3600a5490565b905090565b610ad23382611b15565b610aee5760405162461bcd60e51b8152600401610a1290612867565b610ab3838383611b74565b610b01611a4d565b601180549115156101000261ff0019909216919091179055565b610b23611a4d565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b601554600d5460009182916001600160a01b039091169061271090610b6a90866128cb565b610b7491906128f8565b915091509250929050565b610b87611a4d565b601d55565b610ab383838360405180602001604052806000815250611423565b610baf611a4d565b600d55565b610bbc611a4d565b600c55565b610bc9611a4d565b6018610ab3828483612952565b610bde611a4d565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b610c08611a4d565b600e55565b6000818152600260205260408120546001600160a01b0316806108b55760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610a12565b610c75611a4d565b60118054911515620100000262ff000019909216919091179055565b60006001600160a01b038216610cfb5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610a12565b506001600160a01b031660009081526003602052604090205490565b610d1f611a4d565b610d296000611d1b565b565b610d33611a4d565b600c54600f541115610d4457600080fd5b601454600f54610d5d916001600160a01b031690611d6d565b6001600f6000828254610d709190612a12565b92505081905550600160106000828254610d8a9190612a12565b9091555050565b6000610d9f601c5460ff1690565b610db15742601d54610ac39190612a25565b50600090565b60606000610dc483610c91565b905060008167ffffffffffffffff811115610de157610de16126aa565b604051908082528060200260200182016040528015610e0a578160200160208202803683370190505b509050600160005b8381108015610e235750600c548211155b15610ebb576000828152600260205260409020546001600160a01b0316610e565781610e4e81612a38565b925050610e12565b6000610e6183610c0d565b9050866001600160a01b0316816001600160a01b031603610ea85782848381518110610e8f57610e8f612a51565b602090810291909101015281610ea481612a38565b9250505b82610eb281612a38565b93505050610e12565b5090949350505050565b610ecd611a4d565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b610ef7611a4d565b601255565b6060600180546108ca9061282d565b601c5460ff16610f2d5760405162461bcd60e51b8152600401610a1290612a67565b600e54811115610f7f5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206d696e742074686174206d616e79206174206f6e63652e00006044820152606401610a12565b601254610f8c90826128cb565b341015610fd35760405162461bcd60e51b81526020600482015260156024820152742737ba1032b737bab3b41020ab20ac1039b2b73a1760591b6044820152606401610a12565b6000610fdd611ebb565b90506000601660009054906101000a90046001600160a01b031690506000816001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105d9190612a97565b6110679084612ab0565b611072906001612a12565b6040516331a9108f60e11b8152600481018290529091506000906001600160a01b03841690636352211e90602401602060405180830381865afa1580156110bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e19190612ac4565b60115490915062010000900460ff16156111b1576014546001600160a01b03166108fc6103e8611113346103846128cb565b61111d91906128f8565b6040518115909202916000818181858888f19350505050158015611145573d6000803e3d6000fd5b506001600160a01b0381166103e861115e3460646128cb565b61116891906128f8565b604051600081818185875af1925050503d80600081146111a4576040519150601f19603f3d011682016040523d82523d6000602084013e6111a9565b606091505b5050506111ec565b6014546040516001600160a01b03909116903480156108fc02916000818181858888f193505050501580156111ea573d6000803e3d6000fd5b505b60005b858110156112155761120333866000611eff565b8061120d81612a38565b9150506111ef565b506017546001600160a01b031663a9059cbb3361123a88670de0b6b3a76400006128cb565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a99190612ae1565b505050505050565b6112bc338383611fcd565b5050565b601c5460ff166112e25760405162461bcd60e51b8152600401610a1290612a67565b600e548111156113345760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206d696e742074686174206d616e79206174206f6e63652e00006044820152606401610a12565b6017546001600160a01b03166323b872dd336113586006546001600160a01b031690565b8460135461136691906128cb565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af11580156113ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113de9190612ae1565b5060005b818110156112bc576113fd336113f6611ebb565b6001611eff565b8061140781612a38565b9150506113e2565b611417611a4d565b6011805460ff19169055565b61142d3383611b15565b6114495760405162461bcd60e51b8152600401610a1290612867565b6114558484848461209b565b50505050565b611463611a4d565b601a610ab3828483612952565b6000818152600260205260409020546060906001600160a01b03166114ef5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610a12565b60115460009060ff16801561151257506000838152601b602052604090205460ff165b6115235761151e6120ce565b6115af565b601a80546115309061282d565b80601f016020809104026020016040519081016040528092919081815260200182805461155c9061282d565b80156115a95780601f1061157e576101008083540402835291602001916115a9565b820191906000526020600020905b81548152906001019060200180831161158c57829003601f168201915b50505050505b905060008151116115cf57604051806020016040528060008152506115fd565b806115d9846120dd565b60196040516020016115ed93929190612afe565b6040516020818303038152906040525b9392505050565b61160c611a4d565b60196112bc8282612b9e565b601c5460ff1661163a5760405162461bcd60e51b8152600401610a1290612a67565b601154610100900460ff166116885760405162461bcd60e51b815260206004820152601460248201527311d85b589b1a5b99c81a5cc8191a5cd8589b195960621b6044820152606401610a12565b60135461169d82670de0b6b3a76400006128cb565b106116ea5760405162461bcd60e51b815260206004820181905260248201527f596f75206861766520656e6f75676820666f7220612066756c6c206d696e74216044820152606401610a12565b6017546001600160a01b03166323b872dd3361170e6006546001600160a01b031690565b61172085670de0b6b3a76400006128cb565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af1158015611774573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117989190612ae1565b5060006117a3611ebb565b90506117b08260046128cb565b6117bb906064612a25565b6117c6606483612ab0565b106112bc576112bc33826001611eff565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b61180d611a4d565b601c805460ff1916911515919091179055565b611828611a4d565b6001600160a01b03811661188d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a12565b61189681611d1b565b50565b6118a1611a4d565b6017546040516370a0823160e01b81523060048201526001600160a01b039091169060009082906370a0823190602401602060405180830381865afa1580156118ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119129190612a97565b905080156112bc5760145460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af115801561196d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab39190612ae1565b5490565b80546001019055565b60006001600160e01b031982166380ac58cd60e01b14806119cf57506001600160e01b03198216635b5e139f60e01b145b806108b557506301ffc9a760e01b6001600160e01b03198316146108b5565b6000818152600260205260409020546001600160a01b03166118965760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610a12565b6006546001600160a01b03163314610d295760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a12565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611adc82610c0d565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b2183610c0d565b9050806001600160a01b0316846001600160a01b03161480611b485750611b4881856117d7565b80611b6c5750836001600160a01b0316611b618461094d565b6001600160a01b0316145b949350505050565b826001600160a01b0316611b8782610c0d565b6001600160a01b031614611beb5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610a12565b6001600160a01b038216611c4d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610a12565b611c588383836121de565b611c63600082611aa7565b6001600160a01b0383166000908152600360205260408120805460019290611c8c908490612a25565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cba908490612a12565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216611dc35760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610a12565b6000818152600260205260409020546001600160a01b031615611e285760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610a12565b611e34600083836121de565b6001600160a01b0382166000908152600360205260408120805460019290611e5d908490612a12565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000611ec6600a5490565b6040805160208101929092524290820152434060608201526080016040516020818303038152906040528051906020012060001c905090565b600b54600a5410611f525760405162461bcd60e51b815260206004820152601c60248201527f50726f6a6563742069732066696e6973686564206d696e74696e672e000000006044820152606401610a12565b6000611f5d600a5490565b600b54611f6a9190612a25565b611f749084612ab0565b9050611f84600a80546001019055565b6000611f8f8261224f565b611f9a906001612a12565b9050611fa68582611d6d565b8215611fc6576000818152601b60205260409020805460ff191660011790555b5050505050565b816001600160a01b0316836001600160a01b03160361202e5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610a12565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6120a6848484611b74565b6120b28484848461231f565b6114555760405162461bcd60e51b8152600401610a1290612c5e565b6060601880546108ca9061282d565b6060816000036121045750506040805180820190915260018152600360fc1b602082015290565b8160005b811561212e578061211881612a38565b91506121279050600a836128f8565b9150612108565b60008167ffffffffffffffff811115612149576121496126aa565b6040519080825280601f01601f191660200182016040528015612173576020820181803683370190505b5090505b8415611b6c57612188600183612a25565b9150612195600a86612ab0565b6121a0906030612a12565b60f81b8183815181106121b5576121b5612a51565b60200101906001600160f81b031916908160001a9053506121d7600a866128f8565b9450612177565b6001600160a01b03831615806121f7575060115460ff16155b8061221157506000818152601b602052604090205460ff16155b610ab35760405162461bcd60e51b815260206004820152600f60248201526e43616e27742064756d70207965742160881b6044820152606401610a12565b6000806007546008546122629190612a25565b9050600080600981612275600186612a25565b81526020019081526020016000205460000361229d57612296600184612a25565b91506122be565b600960006122ac600186612a25565b81526020019081526020016000205491505b60008581526009602052604081205490036122eb5750600084815260096020526040902081905583612301565b5060008481526009602052604090208054908290555b6007805490600061231183612a38565b909155509095945050505050565b60006001600160a01b0384163b1561241557604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612363903390899088908890600401612cb0565b6020604051808303816000875af192505050801561239e575060408051601f3d908101601f1916820190925261239b91810190612ced565b60015b6123fb573d8080156123cc576040519150601f19603f3d011682016040523d82523d6000602084013e6123d1565b606091505b5080516000036123f35760405162461bcd60e51b8152600401610a1290612c5e565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611b6c565b506001949350505050565b6001600160e01b03198116811461189657600080fd5b60006020828403121561244857600080fd5b81356115fd81612420565b60005b8381101561246e578181015183820152602001612456565b50506000910152565b6000815180845261248f816020860160208601612453565b601f01601f19169290920160200192915050565b6020815260006115fd6020830184612477565b6000602082840312156124c857600080fd5b5035919050565b6001600160a01b038116811461189657600080fd5b6000602082840312156124f657600080fd5b81356115fd816124cf565b6000806040838503121561251457600080fd5b823561251f816124cf565b946020939093013593505050565b60008060006060848603121561254257600080fd5b833561254d816124cf565b9250602084013561255d816124cf565b929592945050506040919091013590565b801515811461189657600080fd5b60006020828403121561258e57600080fd5b81356115fd8161256e565b600080604083850312156125ac57600080fd5b50508035926020909101359150565b600080602083850312156125ce57600080fd5b823567ffffffffffffffff808211156125e657600080fd5b818501915085601f8301126125fa57600080fd5b81358181111561260957600080fd5b86602082850101111561261b57600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b8181101561266557835183529284019291840191600101612649565b50909695505050505050565b6000806040838503121561268457600080fd5b823561268f816124cf565b9150602083013561269f8161256e565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156126db576126db6126aa565b604051601f8501601f19908116603f01168101908282118183101715612703576127036126aa565b8160405280935085815286868601111561271c57600080fd5b858560208301376000602087830101525050509392505050565b6000806000806080858703121561274c57600080fd5b8435612757816124cf565b93506020850135612767816124cf565b925060408501359150606085013567ffffffffffffffff81111561278a57600080fd5b8501601f8101871361279b57600080fd5b6127aa878235602084016126c0565b91505092959194509250565b6000602082840312156127c857600080fd5b813567ffffffffffffffff8111156127df57600080fd5b8201601f810184136127f057600080fd5b611b6c848235602084016126c0565b6000806040838503121561281257600080fd5b823561281d816124cf565b9150602083013561269f816124cf565b600181811c9082168061284157607f821691505b60208210810361286157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176108b5576108b56128b5565b634e487b7160e01b600052601260045260246000fd5b600082612907576129076128e2565b500490565b601f821115610ab357600081815260208120601f850160051c810160208610156129335750805b601f850160051c820191505b818110156112a95782815560010161293f565b67ffffffffffffffff83111561296a5761296a6126aa565b61297e83612978835461282d565b8361290c565b6000601f8411600181146129b2576000851561299a5750838201355b600019600387901b1c1916600186901b178355611fc6565b600083815260209020601f19861690835b828110156129e357868501358255602094850194600190920191016129c3565b5086821015612a005760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b808201808211156108b5576108b56128b5565b818103818111156108b5576108b56128b5565b600060018201612a4a57612a4a6128b5565b5060010190565b634e487b7160e01b600052603260045260246000fd5b60208082526016908201527526b4b73a34b7339034b9903737ba1030b1ba34bb329760511b604082015260600190565b600060208284031215612aa957600080fd5b5051919050565b600082612abf57612abf6128e2565b500690565b600060208284031215612ad657600080fd5b81516115fd816124cf565b600060208284031215612af357600080fd5b81516115fd8161256e565b600084516020612b118285838a01612453565b855191840191612b248184848a01612453565b8554920191600090612b358161282d565b60018281168015612b4d5760018114612b6257612b8e565b60ff1984168752821515830287019450612b8e565b896000528560002060005b84811015612b8657815489820152908301908701612b6d565b505082870194505b50929a9950505050505050505050565b815167ffffffffffffffff811115612bb857612bb86126aa565b612bcc81612bc6845461282d565b8461290c565b602080601f831160018114612c015760008415612be95750858301515b600019600386901b1c1916600185901b1785556112a9565b600085815260208120601f198616915b82811015612c3057888601518255948401946001909101908401612c11565b5085821015612c4e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612ce390830184612477565b9695505050505050565b600060208284031215612cff57600080fd5b81516115fd8161242056fea26469706673582212209e9b587c7b61f02f0e63f991f8a1f87a72823509099b4aab00700b0d70a71b2564736f6c63430008110033697066733a2f2f516d6344734a38394e714169316b7a7542354a783839716259646346464b7974666d75573565557838364a3159682f697066733a2f2f516d6351646645434457484554356367514e724444463468594d34516a6f62434b393936633851745279476f41702f
Deployed Bytecode
0x6080604052600436106102935760003560e01c80637e5ec1881161015a578063ae0607b9116100c1578063da3ef23f1161007a578063da3ef23f146107d5578063e57d2c61146107f5578063e985e9c514610815578063ee1cc94414610835578063f2fde38b14610855578063fc6298cd1461087557600080fd5b8063ae0607b914610721578063b4b62e3e14610740578063b6b2574214610760578063b88d4fde14610775578063bc9d750414610795578063c87b56dd146107b557600080fd5b806395d89b411161011357806395d89b4114610683578063a035b1fe14610698578063a0712d68146106ae578063a22cb465146106c1578063a91e0410146106e1578063a9b3ab461461070157600080fd5b80637e5ec188146105ce5780638406a0e0146105e35780638462151c146105f85780638da5cb5b146106255780638dc251e31461064357806391b7f5ed1461066357600080fd5b80633047eef8116101fe5780635eb1cf7d116101b75780635eb1cf7d14610519578063616cdb1e146105395780636352211e1461055957806369bef9791461057957806370a0823114610599578063715018a6146105b957600080fd5b80633047eef8146104595780633e0a322d1461047957806342842e0e146104995780634f07de09146104b9578063500dabba146104d957806355f804b3146104f957600080fd5b806318160ddd1161025057806318160ddd1461038d57806323b872dd146103a257806325b7ea14146103c257806325fd90f3146103e25780632815ddcb146103fa5780632a55205a1461041a57600080fd5b806301ffc9a71461029857806306fdde03146102cd578063081812fc146102ef578063095cf5c614610327578063095ea7b3146103495780631533a46814610369575b600080fd5b3480156102a457600080fd5b506102b86102b3366004612436565b61088a565b60405190151581526020015b60405180910390f35b3480156102d957600080fd5b506102e26108bb565b6040516102c491906124a3565b3480156102fb57600080fd5b5061030f61030a3660046124b6565b61094d565b6040516001600160a01b0390911681526020016102c4565b34801561033357600080fd5b506103476103423660046124e4565b610974565b005b34801561035557600080fd5b50610347610364366004612501565b61099e565b34801561037557600080fd5b5061037f60135481565b6040519081526020016102c4565b34801561039957600080fd5b5061037f610ab8565b3480156103ae57600080fd5b506103476103bd36600461252d565b610ac8565b3480156103ce57600080fd5b506103476103dd36600461257c565b610af9565b3480156103ee57600080fd5b50601c5460ff166102b8565b34801561040657600080fd5b506103476104153660046124e4565b610b1b565b34801561042657600080fd5b5061043a610435366004612599565b610b45565b604080516001600160a01b0390931683526020830191909152016102c4565b34801561046557600080fd5b506011546102b89062010000900460ff1681565b34801561048557600080fd5b506103476104943660046124b6565b610b7f565b3480156104a557600080fd5b506103476104b436600461252d565b610b8c565b3480156104c557600080fd5b506103476104d43660046124b6565b610ba7565b3480156104e557600080fd5b506103476104f43660046124b6565b610bb4565b34801561050557600080fd5b506103476105143660046125bb565b610bc1565b34801561052557600080fd5b506103476105343660046124e4565b610bd6565b34801561054557600080fd5b506103476105543660046124b6565b610c00565b34801561056557600080fd5b5061030f6105743660046124b6565b610c0d565b34801561058557600080fd5b5061034761059436600461257c565b610c6d565b3480156105a557600080fd5b5061037f6105b43660046124e4565b610c91565b3480156105c557600080fd5b50610347610d17565b3480156105da57600080fd5b50610347610d2b565b3480156105ef57600080fd5b5061037f610d91565b34801561060457600080fd5b506106186106133660046124e4565b610db7565b6040516102c4919061262d565b34801561063157600080fd5b506006546001600160a01b031661030f565b34801561064f57600080fd5b5061034761065e3660046124e4565b610ec5565b34801561066f57600080fd5b5061034761067e3660046124b6565b610eef565b34801561068f57600080fd5b506102e2610efc565b3480156106a457600080fd5b5061037f60125481565b6103476106bc3660046124b6565b610f0b565b3480156106cd57600080fd5b506103476106dc366004612671565b6112b1565b3480156106ed57600080fd5b5060165461030f906001600160a01b031681565b34801561070d57600080fd5b5061034761071c3660046124b6565b6112c0565b34801561072d57600080fd5b506011546102b890610100900460ff1681565b34801561074c57600080fd5b5060175461030f906001600160a01b031681565b34801561076c57600080fd5b5061034761140f565b34801561078157600080fd5b50610347610790366004612736565b611423565b3480156107a157600080fd5b506103476107b03660046125bb565b61145b565b3480156107c157600080fd5b506102e26107d03660046124b6565b611470565b3480156107e157600080fd5b506103476107f03660046127b6565b611604565b34801561080157600080fd5b506103476108103660046124b6565b611618565b34801561082157600080fd5b506102b86108303660046127ff565b6117d7565b34801561084157600080fd5b5061034761085036600461257c565b611805565b34801561086157600080fd5b506103476108703660046124e4565b611820565b34801561088157600080fd5b50610347611899565b6000636ad56fd360e11b6001600160e01b03198316016108ac57506001919050565b6108b58261199e565b92915050565b6060600080546108ca9061282d565b80601f01602080910402602001604051908101604052809291908181526020018280546108f69061282d565b80156109435780601f1061091857610100808354040283529160200191610943565b820191906000526020600020905b81548152906001019060200180831161092657829003601f168201915b5050505050905090565b6000610958826119ee565b506000908152600460205260409020546001600160a01b031690565b61097c611a4d565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b60006109a982610c0d565b9050806001600160a01b0316836001600160a01b031603610a1b5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610a375750610a3781336117d7565b610aa95760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610a12565b610ab38383611aa7565b505050565b6000610ac3600a5490565b905090565b610ad23382611b15565b610aee5760405162461bcd60e51b8152600401610a1290612867565b610ab3838383611b74565b610b01611a4d565b601180549115156101000261ff0019909216919091179055565b610b23611a4d565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b601554600d5460009182916001600160a01b039091169061271090610b6a90866128cb565b610b7491906128f8565b915091509250929050565b610b87611a4d565b601d55565b610ab383838360405180602001604052806000815250611423565b610baf611a4d565b600d55565b610bbc611a4d565b600c55565b610bc9611a4d565b6018610ab3828483612952565b610bde611a4d565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b610c08611a4d565b600e55565b6000818152600260205260408120546001600160a01b0316806108b55760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610a12565b610c75611a4d565b60118054911515620100000262ff000019909216919091179055565b60006001600160a01b038216610cfb5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610a12565b506001600160a01b031660009081526003602052604090205490565b610d1f611a4d565b610d296000611d1b565b565b610d33611a4d565b600c54600f541115610d4457600080fd5b601454600f54610d5d916001600160a01b031690611d6d565b6001600f6000828254610d709190612a12565b92505081905550600160106000828254610d8a9190612a12565b9091555050565b6000610d9f601c5460ff1690565b610db15742601d54610ac39190612a25565b50600090565b60606000610dc483610c91565b905060008167ffffffffffffffff811115610de157610de16126aa565b604051908082528060200260200182016040528015610e0a578160200160208202803683370190505b509050600160005b8381108015610e235750600c548211155b15610ebb576000828152600260205260409020546001600160a01b0316610e565781610e4e81612a38565b925050610e12565b6000610e6183610c0d565b9050866001600160a01b0316816001600160a01b031603610ea85782848381518110610e8f57610e8f612a51565b602090810291909101015281610ea481612a38565b9250505b82610eb281612a38565b93505050610e12565b5090949350505050565b610ecd611a4d565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b610ef7611a4d565b601255565b6060600180546108ca9061282d565b601c5460ff16610f2d5760405162461bcd60e51b8152600401610a1290612a67565b600e54811115610f7f5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206d696e742074686174206d616e79206174206f6e63652e00006044820152606401610a12565b601254610f8c90826128cb565b341015610fd35760405162461bcd60e51b81526020600482015260156024820152742737ba1032b737bab3b41020ab20ac1039b2b73a1760591b6044820152606401610a12565b6000610fdd611ebb565b90506000601660009054906101000a90046001600160a01b031690506000816001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105d9190612a97565b6110679084612ab0565b611072906001612a12565b6040516331a9108f60e11b8152600481018290529091506000906001600160a01b03841690636352211e90602401602060405180830381865afa1580156110bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e19190612ac4565b60115490915062010000900460ff16156111b1576014546001600160a01b03166108fc6103e8611113346103846128cb565b61111d91906128f8565b6040518115909202916000818181858888f19350505050158015611145573d6000803e3d6000fd5b506001600160a01b0381166103e861115e3460646128cb565b61116891906128f8565b604051600081818185875af1925050503d80600081146111a4576040519150601f19603f3d011682016040523d82523d6000602084013e6111a9565b606091505b5050506111ec565b6014546040516001600160a01b03909116903480156108fc02916000818181858888f193505050501580156111ea573d6000803e3d6000fd5b505b60005b858110156112155761120333866000611eff565b8061120d81612a38565b9150506111ef565b506017546001600160a01b031663a9059cbb3361123a88670de0b6b3a76400006128cb565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a99190612ae1565b505050505050565b6112bc338383611fcd565b5050565b601c5460ff166112e25760405162461bcd60e51b8152600401610a1290612a67565b600e548111156113345760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206d696e742074686174206d616e79206174206f6e63652e00006044820152606401610a12565b6017546001600160a01b03166323b872dd336113586006546001600160a01b031690565b8460135461136691906128cb565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af11580156113ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113de9190612ae1565b5060005b818110156112bc576113fd336113f6611ebb565b6001611eff565b8061140781612a38565b9150506113e2565b611417611a4d565b6011805460ff19169055565b61142d3383611b15565b6114495760405162461bcd60e51b8152600401610a1290612867565b6114558484848461209b565b50505050565b611463611a4d565b601a610ab3828483612952565b6000818152600260205260409020546060906001600160a01b03166114ef5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610a12565b60115460009060ff16801561151257506000838152601b602052604090205460ff165b6115235761151e6120ce565b6115af565b601a80546115309061282d565b80601f016020809104026020016040519081016040528092919081815260200182805461155c9061282d565b80156115a95780601f1061157e576101008083540402835291602001916115a9565b820191906000526020600020905b81548152906001019060200180831161158c57829003601f168201915b50505050505b905060008151116115cf57604051806020016040528060008152506115fd565b806115d9846120dd565b60196040516020016115ed93929190612afe565b6040516020818303038152906040525b9392505050565b61160c611a4d565b60196112bc8282612b9e565b601c5460ff1661163a5760405162461bcd60e51b8152600401610a1290612a67565b601154610100900460ff166116885760405162461bcd60e51b815260206004820152601460248201527311d85b589b1a5b99c81a5cc8191a5cd8589b195960621b6044820152606401610a12565b60135461169d82670de0b6b3a76400006128cb565b106116ea5760405162461bcd60e51b815260206004820181905260248201527f596f75206861766520656e6f75676820666f7220612066756c6c206d696e74216044820152606401610a12565b6017546001600160a01b03166323b872dd3361170e6006546001600160a01b031690565b61172085670de0b6b3a76400006128cb565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af1158015611774573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117989190612ae1565b5060006117a3611ebb565b90506117b08260046128cb565b6117bb906064612a25565b6117c6606483612ab0565b106112bc576112bc33826001611eff565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b61180d611a4d565b601c805460ff1916911515919091179055565b611828611a4d565b6001600160a01b03811661188d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a12565b61189681611d1b565b50565b6118a1611a4d565b6017546040516370a0823160e01b81523060048201526001600160a01b039091169060009082906370a0823190602401602060405180830381865afa1580156118ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119129190612a97565b905080156112bc5760145460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af115801561196d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab39190612ae1565b5490565b80546001019055565b60006001600160e01b031982166380ac58cd60e01b14806119cf57506001600160e01b03198216635b5e139f60e01b145b806108b557506301ffc9a760e01b6001600160e01b03198316146108b5565b6000818152600260205260409020546001600160a01b03166118965760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610a12565b6006546001600160a01b03163314610d295760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a12565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611adc82610c0d565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611b2183610c0d565b9050806001600160a01b0316846001600160a01b03161480611b485750611b4881856117d7565b80611b6c5750836001600160a01b0316611b618461094d565b6001600160a01b0316145b949350505050565b826001600160a01b0316611b8782610c0d565b6001600160a01b031614611beb5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610a12565b6001600160a01b038216611c4d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610a12565b611c588383836121de565b611c63600082611aa7565b6001600160a01b0383166000908152600360205260408120805460019290611c8c908490612a25565b90915550506001600160a01b0382166000908152600360205260408120805460019290611cba908490612a12565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216611dc35760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610a12565b6000818152600260205260409020546001600160a01b031615611e285760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610a12565b611e34600083836121de565b6001600160a01b0382166000908152600360205260408120805460019290611e5d908490612a12565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000611ec6600a5490565b6040805160208101929092524290820152434060608201526080016040516020818303038152906040528051906020012060001c905090565b600b54600a5410611f525760405162461bcd60e51b815260206004820152601c60248201527f50726f6a6563742069732066696e6973686564206d696e74696e672e000000006044820152606401610a12565b6000611f5d600a5490565b600b54611f6a9190612a25565b611f749084612ab0565b9050611f84600a80546001019055565b6000611f8f8261224f565b611f9a906001612a12565b9050611fa68582611d6d565b8215611fc6576000818152601b60205260409020805460ff191660011790555b5050505050565b816001600160a01b0316836001600160a01b03160361202e5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610a12565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6120a6848484611b74565b6120b28484848461231f565b6114555760405162461bcd60e51b8152600401610a1290612c5e565b6060601880546108ca9061282d565b6060816000036121045750506040805180820190915260018152600360fc1b602082015290565b8160005b811561212e578061211881612a38565b91506121279050600a836128f8565b9150612108565b60008167ffffffffffffffff811115612149576121496126aa565b6040519080825280601f01601f191660200182016040528015612173576020820181803683370190505b5090505b8415611b6c57612188600183612a25565b9150612195600a86612ab0565b6121a0906030612a12565b60f81b8183815181106121b5576121b5612a51565b60200101906001600160f81b031916908160001a9053506121d7600a866128f8565b9450612177565b6001600160a01b03831615806121f7575060115460ff16155b8061221157506000818152601b602052604090205460ff16155b610ab35760405162461bcd60e51b815260206004820152600f60248201526e43616e27742064756d70207965742160881b6044820152606401610a12565b6000806007546008546122629190612a25565b9050600080600981612275600186612a25565b81526020019081526020016000205460000361229d57612296600184612a25565b91506122be565b600960006122ac600186612a25565b81526020019081526020016000205491505b60008581526009602052604081205490036122eb5750600084815260096020526040902081905583612301565b5060008481526009602052604090208054908290555b6007805490600061231183612a38565b909155509095945050505050565b60006001600160a01b0384163b1561241557604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612363903390899088908890600401612cb0565b6020604051808303816000875af192505050801561239e575060408051601f3d908101601f1916820190925261239b91810190612ced565b60015b6123fb573d8080156123cc576040519150601f19603f3d011682016040523d82523d6000602084013e6123d1565b606091505b5080516000036123f35760405162461bcd60e51b8152600401610a1290612c5e565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611b6c565b506001949350505050565b6001600160e01b03198116811461189657600080fd5b60006020828403121561244857600080fd5b81356115fd81612420565b60005b8381101561246e578181015183820152602001612456565b50506000910152565b6000815180845261248f816020860160208601612453565b601f01601f19169290920160200192915050565b6020815260006115fd6020830184612477565b6000602082840312156124c857600080fd5b5035919050565b6001600160a01b038116811461189657600080fd5b6000602082840312156124f657600080fd5b81356115fd816124cf565b6000806040838503121561251457600080fd5b823561251f816124cf565b946020939093013593505050565b60008060006060848603121561254257600080fd5b833561254d816124cf565b9250602084013561255d816124cf565b929592945050506040919091013590565b801515811461189657600080fd5b60006020828403121561258e57600080fd5b81356115fd8161256e565b600080604083850312156125ac57600080fd5b50508035926020909101359150565b600080602083850312156125ce57600080fd5b823567ffffffffffffffff808211156125e657600080fd5b818501915085601f8301126125fa57600080fd5b81358181111561260957600080fd5b86602082850101111561261b57600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b8181101561266557835183529284019291840191600101612649565b50909695505050505050565b6000806040838503121561268457600080fd5b823561268f816124cf565b9150602083013561269f8161256e565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156126db576126db6126aa565b604051601f8501601f19908116603f01168101908282118183101715612703576127036126aa565b8160405280935085815286868601111561271c57600080fd5b858560208301376000602087830101525050509392505050565b6000806000806080858703121561274c57600080fd5b8435612757816124cf565b93506020850135612767816124cf565b925060408501359150606085013567ffffffffffffffff81111561278a57600080fd5b8501601f8101871361279b57600080fd5b6127aa878235602084016126c0565b91505092959194509250565b6000602082840312156127c857600080fd5b813567ffffffffffffffff8111156127df57600080fd5b8201601f810184136127f057600080fd5b611b6c848235602084016126c0565b6000806040838503121561281257600080fd5b823561281d816124cf565b9150602083013561269f816124cf565b600181811c9082168061284157607f821691505b60208210810361286157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176108b5576108b56128b5565b634e487b7160e01b600052601260045260246000fd5b600082612907576129076128e2565b500490565b601f821115610ab357600081815260208120601f850160051c810160208610156129335750805b601f850160051c820191505b818110156112a95782815560010161293f565b67ffffffffffffffff83111561296a5761296a6126aa565b61297e83612978835461282d565b8361290c565b6000601f8411600181146129b2576000851561299a5750838201355b600019600387901b1c1916600186901b178355611fc6565b600083815260209020601f19861690835b828110156129e357868501358255602094850194600190920191016129c3565b5086821015612a005760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b808201808211156108b5576108b56128b5565b818103818111156108b5576108b56128b5565b600060018201612a4a57612a4a6128b5565b5060010190565b634e487b7160e01b600052603260045260246000fd5b60208082526016908201527526b4b73a34b7339034b9903737ba1030b1ba34bb329760511b604082015260600190565b600060208284031215612aa957600080fd5b5051919050565b600082612abf57612abf6128e2565b500690565b600060208284031215612ad657600080fd5b81516115fd816124cf565b600060208284031215612af357600080fd5b81516115fd8161256e565b600084516020612b118285838a01612453565b855191840191612b248184848a01612453565b8554920191600090612b358161282d565b60018281168015612b4d5760018114612b6257612b8e565b60ff1984168752821515830287019450612b8e565b896000528560002060005b84811015612b8657815489820152908301908701612b6d565b505082870194505b50929a9950505050505050505050565b815167ffffffffffffffff811115612bb857612bb86126aa565b612bcc81612bc6845461282d565b8461290c565b602080601f831160018114612c015760008415612be95750858301515b600019600386901b1c1916600185901b1785556112a9565b600085815260208120601f198616915b82811015612c3057888601518255948401946001909101908401612c11565b5085821015612c4e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612ce390830184612477565b9695505050505050565b600060208284031215612cff57600080fd5b81516115fd8161242056fea26469706673582212209e9b587c7b61f02f0e63f991f8a1f87a72823509099b4aab00700b0d70a71b2564736f6c63430008110033
Deployed Bytecode Sourcemap
290:8075:13:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6784:226;;;;;;;;;;-1:-1:-1;6784:226:13;;;;;:::i;:::-;;:::i;:::-;;;565:14:14;;558:22;540:41;;528:2;513:18;6784:226:13;;;;;;;;2391:98:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3856:167::-;;;;;;;;;;-1:-1:-1;3856:167:4;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1697:32:14;;;1679:51;;1667:2;1652:18;3856:167:4;1533:203:14;1957:73:13;;;;;;;;;;-1:-1:-1;1957:73:13;;;;;:::i;:::-;;:::i;:::-;;3388:407:4;;;;;;;;;;-1:-1:-1;3388:407:4;;;;;:::i;:::-;;:::i;883:39:13:-;;;;;;;;;;;;;;;;;;;2595:25:14;;;2583:2;2568:18;883:39:13;2449:177:14;5639:90:13;;;;;;;;;;;;;:::i;4533:327:4:-;;;;;;;;;;-1:-1:-1;4533:327:4;;;;;:::i;:::-;;:::i;1787:81:13:-;;;;;;;;;;-1:-1:-1;1787:81:13;;;;;:::i;:::-;;:::i;3419:113::-;;;;;;;;;;-1:-1:-1;3481:11:13;;;;3419:113;;3319:96;;;;;;;;;;-1:-1:-1;3319:96:13;;;;;:::i;:::-;;:::i;6567:213::-;;;;;;;;;;-1:-1:-1;6567:213:13;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;3906:32:14;;;3888:51;;3970:2;3955:18;;3948:34;;;;3861:18;6567:213:13;3714:274:14;809:28:13;;;;;;;;;;-1:-1:-1;809:28:13;;;;;;;;;;;2235:93;;;;;;;;;;-1:-1:-1;2235:93:13;;;;;:::i;:::-;;:::i;4926:179:4:-;;;;;;;;;;-1:-1:-1;4926:179:4;;;;;:::i;:::-;;:::i;2441:109:13:-;;;;;;;;;;-1:-1:-1;2441:109:13;;;;;:::i;:::-;;:::i;3106:113::-;;;;;;;;;;-1:-1:-1;3106:113:13;;;;;:::i;:::-;;:::i;2554:102::-;;;;;;;;;;-1:-1:-1;2554:102:13;;;;;:::i;:::-;;:::i;3223:92::-;;;;;;;;;;-1:-1:-1;3223:92:13;;;;;:::i;:::-;;:::i;2332:105::-;;;;;;;;;;-1:-1:-1;2332:105:13;;;;;:::i;:::-;;:::i;2111:218:4:-;;;;;;;;;;-1:-1:-1;2111:218:4;;;;;:::i;:::-;;:::i;1872:81:13:-;;;;;;;;;;-1:-1:-1;1872:81:13;;;;;:::i;:::-;;:::i;1850:204:4:-;;;;;;;;;;-1:-1:-1;1850:204:4;;;;;:::i;:::-;;:::i;1822:101:11:-;;;;;;;;;;;;;:::i;6363:200:13:-;;;;;;;;;;;;;:::i;3768:166::-;;;;;;;;;;;;;:::i;7713:650::-;;;;;;;;;;-1:-1:-1;7713:650:13;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1192:85:11:-;;;;;;;;;;-1:-1:-1;1264:6:11;;-1:-1:-1;;;;;1264:6:11;1192:85;;2114:117:13;;;;;;;;;;-1:-1:-1;2114:117:13;;;;;:::i;:::-;;:::i;2034:76::-;;;;;;;;;;-1:-1:-1;2034:76:13;;;;;:::i;:::-;;:::i;2553:102:4:-;;;;;;;;;;;;;:::i;842:37:13:-;;;;;;;;;;;;;;;;3938:842;;;;;;:::i;:::-;;:::i;4090:153:4:-;;;;;;;;;;-1:-1:-1;4090:153:4;;;;;:::i;:::-;;:::i;1080:25:13:-;;;;;;;;;;-1:-1:-1;1080:25:13;;;;-1:-1:-1;;;;;1080:25:13;;;4784:362;;;;;;;;;;-1:-1:-1;4784:362:13;;;;;:::i;:::-;;:::i;777:28::-;;;;;;;;;;-1:-1:-1;777:28:13;;;;;;;;;;;1109:24;;;;;;;;;;-1:-1:-1;1109:24:13;;;;-1:-1:-1;;;;;1109:24:13;;;2801:66;;;;;;;;;;;;;:::i;5171:315:4:-;;;;;;;;;;-1:-1:-1;5171:315:4;;;;;:::i;:::-;;:::i;2660:137:13:-;;;;;;;;;;-1:-1:-1;2660:137:13;;;;;:::i;:::-;;:::i;7014:432::-;;;;;;;;;;-1:-1:-1;7014:432:13;;;;;:::i;:::-;;:::i;2871:119::-;;;;;;;;;;-1:-1:-1;2871:119:13;;;;;:::i;:::-;;:::i;5150:485::-;;;;;;;;;;-1:-1:-1;5150:485:13;;;;;:::i;:::-;;:::i;4309:162:4:-;;;;;;;;;;-1:-1:-1;4309:162:4;;;;;:::i;:::-;;:::i;1699:84:13:-;;;;;;;;;;-1:-1:-1;1699:84:13;;;;;:::i;:::-;;:::i;2072:198:11:-;;;;;;;;;;-1:-1:-1;2072:198:11;;;;;:::i;:::-;;:::i;3536:228:13:-;;;;;;;;;;;;;:::i;6784:226::-;6877:4;-1:-1:-1;;;;;;;;;6893:36:13;;;6889:68;;-1:-1:-1;6946:4:13;;6784:226;-1:-1:-1;6784:226:13:o;6889:68::-;6969:36;6993:11;6969:23;:36::i;:::-;6962:43;6784:226;-1:-1:-1;;6784:226:13:o;2391:98:4:-;2445:13;2477:5;2470:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2391:98;:::o;3856:167::-;3932:7;3951:23;3966:7;3951:14;:23::i;:::-;-1:-1:-1;3992:24:4;;;;:15;:24;;;;;;-1:-1:-1;;;;;3992:24:4;;3856:167::o;1957:73:13:-;1085:13:11;:11;:13::i;:::-;2012:5:13::1;:13:::0;;-1:-1:-1;;;;;;2012:13:13::1;-1:-1:-1::0;;;;;2012:13:13;;;::::1;::::0;;;::::1;::::0;;1957:73::o;3388:407:4:-;3468:13;3484:23;3499:7;3484:14;:23::i;:::-;3468:39;;3531:5;-1:-1:-1;;;;;3525:11:4;:2;-1:-1:-1;;;;;3525:11:4;;3517:57;;;;-1:-1:-1;;;3517:57:4;;8616:2:14;3517:57:4;;;8598:21:14;8655:2;8635:18;;;8628:30;8694:34;8674:18;;;8667:62;-1:-1:-1;;;8745:18:14;;;8738:31;8786:19;;3517:57:4;;;;;;;;;719:10:1;-1:-1:-1;;;;;3606:21:4;;;;:62;;-1:-1:-1;3631:37:4;3648:5;719:10:1;4309:162:4;:::i;3631:37::-;3585:171;;;;-1:-1:-1;;;3585:171:4;;9018:2:14;3585:171:4;;;9000:21:14;9057:2;9037:18;;;9030:30;9096:34;9076:18;;;9069:62;9167:32;9147:18;;;9140:60;9217:19;;3585:171:4;8816:426:14;3585:171:4;3767:21;3776:2;3780:7;3767:8;:21::i;:::-;3458:337;3388:407;;:::o;5639:90:13:-;5683:7;5705:19;:9;918:14:2;;827:112;5705:19:13;5698:26;;5639:90;:::o;4533:327:4:-;4722:41;719:10:1;4755:7:4;4722:18;:41::i;:::-;4714:100;;;;-1:-1:-1;;;4714:100:4;;;;;;;:::i;:::-;4825:28;4835:4;4841:2;4845:7;4825:9;:28::i;1787:81:13:-;1085:13:11;:11;:13::i;:::-;1845:9:13::1;:18:::0;;;::::1;;;;-1:-1:-1::0;;1845:18:13;;::::1;::::0;;;::::1;::::0;;1787:81::o;3319:96::-;1085:13:11;:11;:13::i;:::-;3386:10:13::1;:24:::0;;-1:-1:-1;;;;;;3386:24:13::1;-1:-1:-1::0;;;;;3386:24:13;;;::::1;::::0;;;::::1;::::0;;3319:96::o;6567:213::-;6717:16;;6750:14;;6662:16;;;;-1:-1:-1;;;;;6717:16:13;;;;6768:5;;6737:27;;:10;:27;:::i;:::-;6736:37;;;;:::i;:::-;6709:66;;;;6567:213;;;;;:::o;2235:93::-;1085:13:11;:11;:13::i;:::-;2300:10:13::1;:23:::0;2235:93::o;4926:179:4:-;5059:39;5076:4;5082:2;5086:7;5059:39;;;;;;;;;;;;:16;:39::i;2441:109:13:-;1085:13:11;:11;:13::i;:::-;2514:14:13::1;:31:::0;2441:109::o;3106:113::-;1085:13:11;:11;:13::i;:::-;3181:15:13::1;:33:::0;3106:113::o;2554:102::-;1085:13:11;:11;:13::i;:::-;2627::13::1;:24;2643:8:::0;;2627:13;:24:::1;:::i;3223:92::-:0;1085:13:11;:11;:13::i;:::-;3288:9:13::1;:22:::0;;-1:-1:-1;;;;;;3288:22:13::1;-1:-1:-1::0;;;;;3288:22:13;;;::::1;::::0;;;::::1;::::0;;3223:92::o;2332:105::-;1085:13:11;:11;:13::i;:::-;2403::13::1;:29:::0;2332:105::o;2111:218:4:-;2183:7;2218:16;;;:7;:16;;;;;;-1:-1:-1;;;;;2218:16:4;;2244:56;;;;-1:-1:-1;;;2244:56:4;;12484:2:14;2244:56:4;;;12466:21:14;12523:2;12503:18;;;12496:30;-1:-1:-1;;;12542:18:14;;;12535:54;12606:18;;2244:56:4;12282:348:14;1872:81:13;1085:13:11;:11;:13::i;:::-;1930:9:13::1;:18:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;1930:18:13;;::::1;::::0;;;::::1;::::0;;1872:81::o;1850:204:4:-;1922:7;-1:-1:-1;;;;;1949:19:4;;1941:73;;;;-1:-1:-1;;;1941:73:4;;12837:2:14;1941:73:4;;;12819:21:14;12876:2;12856:18;;;12849:30;12915:34;12895:18;;;12888:62;-1:-1:-1;;;12966:18:14;;;12959:39;13015:19;;1941:73:4;12635:405:14;1941:73:4;-1:-1:-1;;;;;;2031:16:4;;;;;:9;:16;;;;;;;1850:204::o;1822:101:11:-;1085:13;:11;:13::i;:::-;1886:30:::1;1913:1;1886:18;:30::i;:::-;1822:101::o:0;6363:200:13:-;1085:13:11;:11;:13::i;:::-;6444:15:13::1;;6422:18;;:37;;6414:46;;;::::0;::::1;;6472:5;::::0;6479:18:::1;::::0;6466:32:::1;::::0;-1:-1:-1;;;;;6472:5:13::1;::::0;6466::::1;:32::i;:::-;6526:1;6504:18;;:23;;;;;;;:::i;:::-;;;;;;;;6557:1;6533:20;;:25;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;6363:200:13:o;3768:166::-;3817:7;3837:12;3481:11;;;;;3419:113;3837:12;3832:98;;3879:15;3866:10;;:28;;;;:::i;3832:98::-;-1:-1:-1;3922:1:13;;3768:166::o;7713:650::-;7777:16;7801:23;7827:19;7837:8;7827:9;:19::i;:::-;7801:45;;7852:30;7899:15;7885:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7885:30:13;-1:-1:-1;7852:63:13;-1:-1:-1;7942:1:13;7921:18;7983:350;8008:15;7990;:33;:66;;;;;8041:15;;8027:10;:29;;7990:66;7983:350;;;7020:4:4;7043:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7043:16:4;8066:76:13;;8103:12;;;;:::i;:::-;;;;8125:8;;8066:76;8149:13;8165:19;8173:10;8165:7;:19::i;:::-;8149:35;;8206:8;-1:-1:-1;;;;;8197:17:13;:5;-1:-1:-1;;;;;8197:17:13;;8193:113;;8259:10;8226:13;8240:15;8226:30;;;;;;;;:::i;:::-;;;;;;;;;;:43;8280:17;;;;:::i;:::-;;;;8193:113;8314:12;;;;:::i;:::-;;;;8058:275;7983:350;;;-1:-1:-1;8345:13:13;;7713:650;-1:-1:-1;;;;7713:650:13:o;2114:117::-;1085:13:11;:11;:13::i;:::-;2191:16:13::1;:35:::0;;-1:-1:-1;;;;;;2191:35:13::1;-1:-1:-1::0;;;;;2191:35:13;;;::::1;::::0;;;::::1;::::0;;2114:117::o;2034:76::-;1085:13:11;:11;:13::i;:::-;2091:5:13::1;:14:::0;2034:76::o;2553:102:4:-;2609:13;2641:7;2634:14;;;;;:::i;3938:842:13:-;3481:11;;;;3991:47;;;;-1:-1:-1;;;3991:47:13;;;;;;;:::i;:::-;4064:13;;4052:8;:25;;4044:68;;;;-1:-1:-1;;;4044:68:13;;14133:2:14;4044:68:13;;;14115:21:14;14172:2;14152:18;;;14145:30;14211:32;14191:18;;;14184:60;14261:18;;4044:68:13;13931:354:14;4044:68:13;4151:5;;4140:16;;:8;:16;:::i;:::-;4126:9;:31;;4118:65;;;;-1:-1:-1;;;4118:65:13;;14492:2:14;4118:65:13;;;14474:21:14;14531:2;14511:18;;;14504:30;-1:-1:-1;;;14550:18:14;;;14543:51;14611:18;;4118:65:13;14290:345:14;4118:65:13;4190:15;4208:12;:10;:12::i;:::-;4190:30;;4226:20;4261:10;;;;;;;;;-1:-1:-1;;;;;4261:10:13;4226:46;;4279:19;4312:8;-1:-1:-1;;;;;4312:20:13;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4302:32;;:7;:32;:::i;:::-;4301:38;;4338:1;4301:38;:::i;:::-;4371:29;;-1:-1:-1;;;4371:29:13;;;;;2595:25:14;;;4279:60:13;;-1:-1:-1;4345:23:13;;-1:-1:-1;;;;;4371:16:13;;;;;2568:18:14;;4371:29:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4411:9;;4345:55;;-1:-1:-1;4411:9:13;;;;;4407:208;;;4438:5;;-1:-1:-1;;;;;4438:5:13;4430:49;4474:4;4455:15;:9;4467:3;4455:15;:::i;:::-;4454:24;;;;:::i;:::-;4430:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4487:29:13;;4544:4;4525:15;:9;4537:3;4525:15;:::i;:::-;4524:24;;;;:::i;:::-;4487:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4407:208;;;4582:5;;4574:34;;-1:-1:-1;;;;;4582:5:13;;;;4598:9;4574:34;;;;;4582:5;4574:34;4582:5;4574:34;4598:9;4582:5;4574:34;;;;;;;;;;;;;;;;;;;;;4407:208;4625:6;4621:90;4641:8;4637:1;:12;4621:90;;;4664:40;4677:10;4689:7;4698:5;4664:12;:40::i;:::-;4651:3;;;;:::i;:::-;;;;4621:90;;;-1:-1:-1;4724:9:13;;-1:-1:-1;;;;;4724:9:13;4717:26;4744:10;4756:18;:8;4767:7;4756:18;:::i;:::-;4717:58;;-1:-1:-1;;;;;;4717:58:13;;;;;;;-1:-1:-1;;;;;3906:32:14;;;4717:58:13;;;3888:51:14;3955:18;;;3948:34;3861:18;;4717:58:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3985:795;;;;3938:842;:::o;4090:153:4:-;4184:52;719:10:1;4217:8:4;4227;4184:18;:52::i;:::-;4090:153;;:::o;4784:362:13:-;3481:11;;;;4837:47;;;;-1:-1:-1;;;4837:47:13;;;;;;;:::i;:::-;4910:13;;4898:8;:25;;4890:68;;;;-1:-1:-1;;;4890:68:13;;14133:2:14;4890:68:13;;;14115:21:14;14172:2;14152:18;;;14145:30;14211:32;14191:18;;;14184:60;14261:18;;4890:68:13;13931:354:14;4890:68:13;4972:9;;-1:-1:-1;;;;;4972:9:13;4965:30;4996:10;5008:7;1264:6:11;;-1:-1:-1;;;;;1264:6:11;;1192:85;5008:7:13;5033:8;5017:13;;:24;;;;:::i;:::-;4965:77;;-1:-1:-1;;;;;;4965:77:13;;;;;;;-1:-1:-1;;;;;15920:15:14;;;4965:77:13;;;15902:34:14;15972:15;;;;15952:18;;;15945:43;16004:18;;;15997:34;15837:18;;4965:77:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5052:6;5048:94;5068:8;5064:1;:12;5048:94;;;5091:44;5104:10;5116:12;:10;:12::i;:::-;5130:4;5091:12;:44::i;:::-;5078:3;;;;:::i;:::-;;;;5048:94;;2801:66;1085:13:11;:11;:13::i;:::-;2844:10:13::1;:18:::0;;-1:-1:-1;;2844:18:13::1;::::0;;2801:66::o;5171:315:4:-;5339:41;719:10:1;5372:7:4;5339:18;:41::i;:::-;5331:100;;;;-1:-1:-1;;;5331:100:4;;;;;;;:::i;:::-;5441:38;5455:4;5461:2;5465:7;5474:4;5441:13;:38::i;:::-;5171:315;;;;:::o;2660:137:13:-;1085:13:11;:11;:13::i;:::-;2753:18:13::1;:39;2774:18:::0;;2753;:39:::1;:::i;7014:432::-:0;7020:4:4;7043:16;;;:7;:16;;;;;;7087:13:13;;-1:-1:-1;;;;;7043:16:4;7108:76:13;;;;-1:-1:-1;;;7108:76:13;;16244:2:14;7108:76:13;;;16226:21:14;16283:2;16263:18;;;16256:30;16322:34;16302:18;;;16295:62;-1:-1:-1;;;16373:18:14;;;16366:45;16428:19;;7108:76:13;16042:411:14;7108:76:13;7223:10;;7191:28;;7223:10;;:38;;;;-1:-1:-1;7237:24:13;;;;:15;:24;;;;;;;;7223:38;7222:74;;7286:10;:8;:10::i;:::-;7222:74;;;7265:18;7222:74;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7191:105;;7340:1;7315:14;7309:28;:32;:132;;;;;;;;;;;;;;;;;7376:14;7392:18;:7;:16;:18::i;:::-;7412:14;7359:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7309:132;7302:139;7014:432;-1:-1:-1;;;7014:432:13:o;2871:119::-;1085:13:11;:11;:13::i;:::-;2952:14:13::1;:33;2969:16:::0;2952:14;:33:::1;:::i;5150:485::-:0;3481:11;;;;5215:47;;;;-1:-1:-1;;;5215:47:13;;;;;;;:::i;:::-;5276:9;;;;;;;5268:42;;;;-1:-1:-1;;;5268:42:13;;19278:2:14;5268:42:13;;;19260:21:14;19317:2;19297:18;;;19290:30;-1:-1:-1;;;19336:18:14;;;19329:50;19396:18;;5268:42:13;19076:344:14;5268:42:13;5351:13;;5324:24;:14;5341:7;5324:24;:::i;:::-;:40;5316:85;;;;-1:-1:-1;;;5316:85:13;;19627:2:14;5316:85:13;;;19609:21:14;;;19646:18;;;19639:30;19705:34;19685:18;;;19678:62;19757:18;;5316:85:13;19425:356:14;5316:85:13;5415:9;;-1:-1:-1;;;;;5415:9:13;5408:30;5439:10;5451:7;1264:6:11;;-1:-1:-1;;;;;1264:6:11;;1192:85;5451:7:13;5460:24;:14;5477:7;5460:24;:::i;:::-;5408:77;;-1:-1:-1;;;;;;5408:77:13;;;;;;;-1:-1:-1;;;;;15920:15:14;;;5408:77:13;;;15902:34:14;15972:15;;;;15952:18;;;15945:43;16004:18;;;15997:34;15837:18;;5408:77:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5491:15;5509:12;:10;:12::i;:::-;5491:30;-1:-1:-1;5555:18:13;:14;5572:1;5555:18;:::i;:::-;5548:26;;:3;:26;:::i;:::-;5531:13;5541:3;5531:7;:13;:::i;:::-;:43;5527:104;;5585:39;5598:10;5610:7;5619:4;5585:12;:39::i;4309:162:4:-;-1:-1:-1;;;;;4429:25:4;;;4406:4;4429:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4309:162::o;1699:84:13:-;1085:13:11;:11;:13::i;:::-;1758:11:13::1;:20:::0;;-1:-1:-1;;1758:20:13::1;::::0;::::1;;::::0;;;::::1;::::0;;1699:84::o;2072:198:11:-;1085:13;:11;:13::i;:::-;-1:-1:-1;;;;;2160:22:11;::::1;2152:73;;;::::0;-1:-1:-1;;;2152:73:11;;19988:2:14;2152:73:11::1;::::0;::::1;19970:21:14::0;20027:2;20007:18;;;20000:30;20066:34;20046:18;;;20039:62;-1:-1:-1;;;20117:18:14;;;20110:36;20163:19;;2152:73:11::1;19786:402:14::0;2152:73:11::1;2235:28;2254:8;2235:18;:28::i;:::-;2072:198:::0;:::o;3536:228:13:-;1085:13:11;:11;:13::i;:::-;3616:9:13::1;::::0;3650:36:::1;::::0;-1:-1:-1;;;3650:36:13;;3680:4:::1;3650:36;::::0;::::1;1679:51:14::0;-1:-1:-1;;;;;3616:9:13;;::::1;::::0;3588:18:::1;::::0;3616:9;;3650:21:::1;::::0;1652:18:14;;3650:36:13::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3632:54:::0;-1:-1:-1;3696:11:13;;3692:68:::1;;3738:5;::::0;3717:36:::1;::::0;-1:-1:-1;;;3717:36:13;;-1:-1:-1;;;;;3738:5:13;;::::1;3717:36;::::0;::::1;3888:51:14::0;3955:18;;;3948:34;;;3717:20:13;;::::1;::::0;::::1;::::0;3861:18:14;;3717:36:13::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;827:112:2:-:0;918:14;;827:112::o;945:123::-;1032:19;;1050:1;1032:19;;;945:123::o;1491:300:4:-;1593:4;-1:-1:-1;;;;;;1628:40:4;;-1:-1:-1;;;1628:40:4;;:104;;-1:-1:-1;;;;;;;1684:48:4;;-1:-1:-1;;;1684:48:4;1628:104;:156;;;-1:-1:-1;;;;;;;;;;935:40:3;;;1748:36:4;827:155:3;11578:133:4;7020:4;7043:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7043:16:4;11651:53;;;;-1:-1:-1;;;11651:53:4;;12484:2:14;11651:53:4;;;12466:21:14;12523:2;12503:18;;;12496:30;-1:-1:-1;;;12542:18:14;;;12535:54;12606:18;;11651:53:4;12282:348:14;1350:130:11;1264:6;;-1:-1:-1;;;;;1264:6:11;719:10:1;1413:23:11;1405:68;;;;-1:-1:-1;;;1405:68:11;;20395:2:14;1405:68:11;;;20377:21:14;;;20414:18;;;20407:30;20473:34;20453:18;;;20446:62;20525:18;;1405:68:11;20193:356:14;10880:171:4;10954:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;10954:29:4;-1:-1:-1;;;;;10954:29:4;;;;;;;;:24;;11007:23;10954:24;11007:14;:23::i;:::-;-1:-1:-1;;;;;10998:46:4;;;;;;;;;;;10880:171;;:::o;7238:261::-;7331:4;7347:13;7363:23;7378:7;7363:14;:23::i;:::-;7347:39;;7415:5;-1:-1:-1;;;;;7404:16:4;:7;-1:-1:-1;;;;;7404:16:4;;:52;;;;7424:32;7441:5;7448:7;7424:16;:32::i;:::-;7404:87;;;;7484:7;-1:-1:-1;;;;;7460:31:4;:20;7472:7;7460:11;:20::i;:::-;-1:-1:-1;;;;;7460:31:4;;7404:87;7396:96;7238:261;-1:-1:-1;;;;7238:261:4:o;10163:605::-;10317:4;-1:-1:-1;;;;;10290:31:4;:23;10305:7;10290:14;:23::i;:::-;-1:-1:-1;;;;;10290:31:4;;10282:81;;;;-1:-1:-1;;;10282:81:4;;20756:2:14;10282:81:4;;;20738:21:14;20795:2;20775:18;;;20768:30;20834:34;20814:18;;;20807:62;-1:-1:-1;;;20885:18:14;;;20878:35;20930:19;;10282:81:4;20554:401:14;10282:81:4;-1:-1:-1;;;;;10381:16:4;;10373:65;;;;-1:-1:-1;;;10373:65:4;;21162:2:14;10373:65:4;;;21144:21:14;21201:2;21181:18;;;21174:30;21240:34;21220:18;;;21213:62;-1:-1:-1;;;21291:18:14;;;21284:34;21335:19;;10373:65:4;20960:400:14;10373:65:4;10449:39;10470:4;10476:2;10480:7;10449:20;:39::i;:::-;10550:29;10567:1;10571:7;10550:8;:29::i;:::-;-1:-1:-1;;;;;10590:15:4;;;;;;:9;:15;;;;;:20;;10609:1;;10590:15;:20;;10609:1;;10590:20;:::i;:::-;;;;-1:-1:-1;;;;;;;10620:13:4;;;;;;:9;:13;;;;;:18;;10637:1;;10620:13;:18;;10637:1;;10620:18;:::i;:::-;;;;-1:-1:-1;;10648:16:4;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;10648:21:4;-1:-1:-1;;;;;10648:21:4;;;;;;;;;10685:27;;10648:16;;10685:27;;;;;;;3458:337;3388:407;;:::o;2424:187:11:-;2516:6;;;-1:-1:-1;;;;;2532:17:11;;;-1:-1:-1;;;;;;2532:17:11;;;;;;;2564:40;;2516:6;;;2532:17;2516:6;;2564:40;;2497:16;;2564:40;2487:124;2424:187;:::o;8789:427:4:-;-1:-1:-1;;;;;8868:16:4;;8860:61;;;;-1:-1:-1;;;8860:61:4;;21567:2:14;8860:61:4;;;21549:21:14;;;21586:18;;;21579:30;21645:34;21625:18;;;21618:62;21697:18;;8860:61:4;21365:356:14;8860:61:4;7020:4;7043:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7043:16:4;:30;8931:58;;;;-1:-1:-1;;;8931:58:4;;21928:2:14;8931:58:4;;;21910:21:14;21967:2;21947:18;;;21940:30;22006;21986:18;;;21979:58;22054:18;;8931:58:4;21726:352:14;8931:58:4;9000:45;9029:1;9033:2;9037:7;9000:20;:45::i;:::-;-1:-1:-1;;;;;9056:13:4;;;;;;:9;:13;;;;;:18;;9073:1;;9056:13;:18;;9073:1;;9056:18;:::i;:::-;;;;-1:-1:-1;;9084:16:4;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9084:21:4;-1:-1:-1;;;;;9084:21:4;;;;;;;;9121:33;;9084:16;;;9121:33;;9084:16;;9121:33;4090:153;;:::o;6195:164:13:-;6233:7;6290:19;:9;918:14:2;;827:112;6290:19:13;6273:79;;;;;;22268:19:14;;;;6311:15:13;22303:12:14;;;22296:28;6338:12:13;6328:23;22340:12:14;;;22333:28;22377:12;;6273:79:13;;;;;;;;;;;;6263:90;;;;;;6255:99;;6248:106;;6195:164;:::o;5733:458::-;5851:12;;5829:9;918:14:2;5829:34:13;5821:75;;;;-1:-1:-1;;;5821:75:13;;22602:2:14;5821:75:13;;;22584:21:14;22641:2;22621:18;;;22614:30;22680;22660:18;;;22653:58;22728:18;;5821:75:13;22400:352:14;5821:75:13;5902:17;5948:19;:9;918:14:2;;827:112;5948:19:13;5933:12;;:34;;;;:::i;:::-;5922:46;;:7;:46;:::i;:::-;5902:66;;5975:21;:9;1032:19:2;;1050:1;1032:19;;;945:123;5975:21:13;6003:17;6023:32;6045:9;6023:21;:32::i;:::-;:36;;6058:1;6023:36;:::i;:::-;6003:56;;6090:27;6096:9;6107;6090:5;:27::i;:::-;6127:9;6123:64;;;6147:26;;;;:15;:26;;;;;:33;;-1:-1:-1;;6147:33:13;6176:4;6147:33;;;6123:64;5815:376;;5733:458;;;:::o;11187:307:4:-;11337:8;-1:-1:-1;;;;;11328:17:4;:5;-1:-1:-1;;;;;11328:17:4;;11320:55;;;;-1:-1:-1;;;11320:55:4;;22959:2:14;11320:55:4;;;22941:21:14;22998:2;22978:18;;;22971:30;23037:27;23017:18;;;23010:55;23082:18;;11320:55:4;22757:349:14;11320:55:4;-1:-1:-1;;;;;11385:25:4;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;11385:46:4;;;;;;;;;;11446:41;;540::14;;;11446::4;;513:18:14;11446:41:4;;;;;;;11187:307;;;:::o;6347:305::-;6497:28;6507:4;6513:2;6517:7;6497:9;:28::i;:::-;6543:47;6566:4;6572:2;6576:7;6585:4;6543:22;:47::i;:::-;6535:110;;;;-1:-1:-1;;;6535:110:4;;;;;;;:::i;2994:108:13:-;3054:13;3084;3077:20;;;;;:::i;392:703:12:-;448:13;665:5;674:1;665:10;661:51;;-1:-1:-1;;691:10:12;;;;;;;;;;;;-1:-1:-1;;;691:10:12;;;;;392:703::o;661:51::-;736:5;721:12;775:75;782:9;;775:75;;807:8;;;;:::i;:::-;;-1:-1:-1;829:10:12;;-1:-1:-1;837:2:12;829:10;;:::i;:::-;;;775:75;;;859:19;891:6;881:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;881:17:12;;859:39;;908:150;915:10;;908:150;;941:11;951:1;941:11;;:::i;:::-;;-1:-1:-1;1009:10:12;1017:2;1009:5;:10;:::i;:::-;996:24;;:2;:24;:::i;:::-;983:39;;966:6;973;966:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;966:56:12;;;;;;;;-1:-1:-1;1036:11:12;1045:2;1036:11;;:::i;:::-;;;908:150;;7450:259:13;-1:-1:-1;;;;;7571:18:13;;;;:33;;-1:-1:-1;7594:10:13;;;;7593:11;7571:33;:62;;;-1:-1:-1;7609:24:13;;;;:15;:24;;;;;;;;7608:25;7571:62;7563:90;;;;-1:-1:-1;;;7563:90:13;;23732:2:14;7563:90:13;;;23714:21:14;23771:2;23751:18;;;23744:30;-1:-1:-1;;;23790:18:14;;;23783:45;23845:18;;7563:90:13;23530:339:14;236:530:10;314:7;329:17;359:6;;349:7;;:16;;;;:::i;:::-;329:36;-1:-1:-1;371:17:10;;419:4;371:17;424:13;436:1;329:36;424:13;:::i;:::-;419:19;;;;;;;;;;;;442:1;419:24;415:122;;465:13;477:1;465:9;:13;:::i;:::-;453:25;;415:122;;;511:4;:19;516:13;528:1;516:9;:13;:::i;:::-;511:19;;;;;;;;;;;;499:31;;415:122;547:17;;;;:4;:17;;;;;;:22;;543:184;;-1:-1:-1;607:17:10;;;;:4;:17;;;;;:29;;;588:11;543:184;;;-1:-1:-1;666:17:10;;;;:4;:17;;;;;;;691:29;;;;543:184;733:6;:8;;;:6;:8;;;:::i;:::-;;;;-1:-1:-1;755:6:10;;236:530;-1:-1:-1;;;;;236:530:10:o;12263:831:4:-;12412:4;-1:-1:-1;;;;;12432:13:4;;1465:19:0;:23;12428:660:4;;12467:71;;-1:-1:-1;;;12467:71:4;;-1:-1:-1;;;;;12467:36:4;;;;;:71;;719:10:1;;12518:4:4;;12524:7;;12533:4;;12467:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12467:71:4;;;;;;;;-1:-1:-1;;12467:71:4;;;;;;;;;;;;:::i;:::-;;;12463:573;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12705:6;:13;12722:1;12705:18;12701:321;;12747:60;;-1:-1:-1;;;12747:60:4;;;;;;;:::i;12701:321::-;12974:6;12968:13;12959:6;12955:2;12951:15;12944:38;12463:573;-1:-1:-1;;;;;;12588:51:4;-1:-1:-1;;;12588:51:4;;-1:-1:-1;12581:58:4;;12428:660;-1:-1:-1;13073:4:4;12263:831;;;;;;:::o;14:131:14:-;-1:-1:-1;;;;;;88:32:14;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:250::-;677:1;687:113;701:6;698:1;695:13;687:113;;;777:11;;;771:18;758:11;;;751:39;723:2;716:10;687:113;;;-1:-1:-1;;834:1:14;816:16;;809:27;592:250::o;847:271::-;889:3;927:5;921:12;954:6;949:3;942:19;970:76;1039:6;1032:4;1027:3;1023:14;1016:4;1009:5;1005:16;970:76;:::i;:::-;1100:2;1079:15;-1:-1:-1;;1075:29:14;1066:39;;;;1107:4;1062:50;;847:271;-1:-1:-1;;847:271:14:o;1123:220::-;1272:2;1261:9;1254:21;1235:4;1292:45;1333:2;1322:9;1318:18;1310:6;1292:45;:::i;1348:180::-;1407:6;1460:2;1448:9;1439:7;1435:23;1431:32;1428:52;;;1476:1;1473;1466:12;1428:52;-1:-1:-1;1499:23:14;;1348:180;-1:-1:-1;1348:180:14:o;1741:131::-;-1:-1:-1;;;;;1816:31:14;;1806:42;;1796:70;;1862:1;1859;1852:12;1877:247;1936:6;1989:2;1977:9;1968:7;1964:23;1960:32;1957:52;;;2005:1;2002;1995:12;1957:52;2044:9;2031:23;2063:31;2088:5;2063:31;:::i;2129:315::-;2197:6;2205;2258:2;2246:9;2237:7;2233:23;2229:32;2226:52;;;2274:1;2271;2264:12;2226:52;2313:9;2300:23;2332:31;2357:5;2332:31;:::i;:::-;2382:5;2434:2;2419:18;;;;2406:32;;-1:-1:-1;;;2129:315:14:o;2631:456::-;2708:6;2716;2724;2777:2;2765:9;2756:7;2752:23;2748:32;2745:52;;;2793:1;2790;2783:12;2745:52;2832:9;2819:23;2851:31;2876:5;2851:31;:::i;:::-;2901:5;-1:-1:-1;2958:2:14;2943:18;;2930:32;2971:33;2930:32;2971:33;:::i;:::-;2631:456;;3023:7;;-1:-1:-1;;;3077:2:14;3062:18;;;;3049:32;;2631:456::o;3092:118::-;3178:5;3171:13;3164:21;3157:5;3154:32;3144:60;;3200:1;3197;3190:12;3215:241;3271:6;3324:2;3312:9;3303:7;3299:23;3295:32;3292:52;;;3340:1;3337;3330:12;3292:52;3379:9;3366:23;3398:28;3420:5;3398:28;:::i;3461:248::-;3529:6;3537;3590:2;3578:9;3569:7;3565:23;3561:32;3558:52;;;3606:1;3603;3596:12;3558:52;-1:-1:-1;;3629:23:14;;;3699:2;3684:18;;;3671:32;;-1:-1:-1;3461:248:14:o;3993:592::-;4064:6;4072;4125:2;4113:9;4104:7;4100:23;4096:32;4093:52;;;4141:1;4138;4131:12;4093:52;4181:9;4168:23;4210:18;4251:2;4243:6;4240:14;4237:34;;;4267:1;4264;4257:12;4237:34;4305:6;4294:9;4290:22;4280:32;;4350:7;4343:4;4339:2;4335:13;4331:27;4321:55;;4372:1;4369;4362:12;4321:55;4412:2;4399:16;4438:2;4430:6;4427:14;4424:34;;;4454:1;4451;4444:12;4424:34;4499:7;4494:2;4485:6;4481:2;4477:15;4473:24;4470:37;4467:57;;;4520:1;4517;4510:12;4467:57;4551:2;4543:11;;;;;4573:6;;-1:-1:-1;3993:592:14;;-1:-1:-1;;;;3993:592:14:o;4590:632::-;4761:2;4813:21;;;4883:13;;4786:18;;;4905:22;;;4732:4;;4761:2;4984:15;;;;4958:2;4943:18;;;4732:4;5027:169;5041:6;5038:1;5035:13;5027:169;;;5102:13;;5090:26;;5171:15;;;;5136:12;;;;5063:1;5056:9;5027:169;;;-1:-1:-1;5213:3:14;;4590:632;-1:-1:-1;;;;;;4590:632:14:o;5227:382::-;5292:6;5300;5353:2;5341:9;5332:7;5328:23;5324:32;5321:52;;;5369:1;5366;5359:12;5321:52;5408:9;5395:23;5427:31;5452:5;5427:31;:::i;:::-;5477:5;-1:-1:-1;5534:2:14;5519:18;;5506:32;5547:30;5506:32;5547:30;:::i;:::-;5596:7;5586:17;;;5227:382;;;;;:::o;5614:127::-;5675:10;5670:3;5666:20;5663:1;5656:31;5706:4;5703:1;5696:15;5730:4;5727:1;5720:15;5746:631;5810:5;5840:18;5881:2;5873:6;5870:14;5867:40;;;5887:18;;:::i;:::-;5962:2;5956:9;5930:2;6016:15;;-1:-1:-1;;6012:24:14;;;6038:2;6008:33;6004:42;5992:55;;;6062:18;;;6082:22;;;6059:46;6056:72;;;6108:18;;:::i;:::-;6148:10;6144:2;6137:22;6177:6;6168:15;;6207:6;6199;6192:22;6247:3;6238:6;6233:3;6229:16;6226:25;6223:45;;;6264:1;6261;6254:12;6223:45;6314:6;6309:3;6302:4;6294:6;6290:17;6277:44;6369:1;6362:4;6353:6;6345;6341:19;6337:30;6330:41;;;;5746:631;;;;;:::o;6382:794::-;6477:6;6485;6493;6501;6554:3;6542:9;6533:7;6529:23;6525:33;6522:53;;;6571:1;6568;6561:12;6522:53;6610:9;6597:23;6629:31;6654:5;6629:31;:::i;:::-;6679:5;-1:-1:-1;6736:2:14;6721:18;;6708:32;6749:33;6708:32;6749:33;:::i;:::-;6801:7;-1:-1:-1;6855:2:14;6840:18;;6827:32;;-1:-1:-1;6910:2:14;6895:18;;6882:32;6937:18;6926:30;;6923:50;;;6969:1;6966;6959:12;6923:50;6992:22;;7045:4;7037:13;;7033:27;-1:-1:-1;7023:55:14;;7074:1;7071;7064:12;7023:55;7097:73;7162:7;7157:2;7144:16;7139:2;7135;7131:11;7097:73;:::i;:::-;7087:83;;;6382:794;;;;;;;:::o;7181:450::-;7250:6;7303:2;7291:9;7282:7;7278:23;7274:32;7271:52;;;7319:1;7316;7309:12;7271:52;7359:9;7346:23;7392:18;7384:6;7381:30;7378:50;;;7424:1;7421;7414:12;7378:50;7447:22;;7500:4;7492:13;;7488:27;-1:-1:-1;7478:55:14;;7529:1;7526;7519:12;7478:55;7552:73;7617:7;7612:2;7599:16;7594:2;7590;7586:11;7552:73;:::i;7636:388::-;7704:6;7712;7765:2;7753:9;7744:7;7740:23;7736:32;7733:52;;;7781:1;7778;7771:12;7733:52;7820:9;7807:23;7839:31;7864:5;7839:31;:::i;:::-;7889:5;-1:-1:-1;7946:2:14;7931:18;;7918:32;7959:33;7918:32;7959:33;:::i;8029:380::-;8108:1;8104:12;;;;8151;;;8172:61;;8226:4;8218:6;8214:17;8204:27;;8172:61;8279:2;8271:6;8268:14;8248:18;8245:38;8242:161;;8325:10;8320:3;8316:20;8313:1;8306:31;8360:4;8357:1;8350:15;8388:4;8385:1;8378:15;8242:161;;8029:380;;;:::o;9247:410::-;9449:2;9431:21;;;9488:2;9468:18;;;9461:30;9527:34;9522:2;9507:18;;9500:62;-1:-1:-1;;;9593:2:14;9578:18;;9571:44;9647:3;9632:19;;9247:410::o;9662:127::-;9723:10;9718:3;9714:20;9711:1;9704:31;9754:4;9751:1;9744:15;9778:4;9775:1;9768:15;9794:168;9867:9;;;9898;;9915:15;;;9909:22;;9895:37;9885:71;;9936:18;;:::i;9967:127::-;10028:10;10023:3;10019:20;10016:1;10009:31;10059:4;10056:1;10049:15;10083:4;10080:1;10073:15;10099:120;10139:1;10165;10155:35;;10170:18;;:::i;:::-;-1:-1:-1;10204:9:14;;10099:120::o;10350:545::-;10452:2;10447:3;10444:11;10441:448;;;10488:1;10513:5;10509:2;10502:17;10558:4;10554:2;10544:19;10628:2;10616:10;10612:19;10609:1;10605:27;10599:4;10595:38;10664:4;10652:10;10649:20;10646:47;;;-1:-1:-1;10687:4:14;10646:47;10742:2;10737:3;10733:12;10730:1;10726:20;10720:4;10716:31;10706:41;;10797:82;10815:2;10808:5;10805:13;10797:82;;;10860:17;;;10841:1;10830:13;10797:82;;11071:1206;11195:18;11190:3;11187:27;11184:53;;;11217:18;;:::i;:::-;11246:94;11336:3;11296:38;11328:4;11322:11;11296:38;:::i;:::-;11290:4;11246:94;:::i;:::-;11366:1;11391:2;11386:3;11383:11;11408:1;11403:616;;;;12063:1;12080:3;12077:93;;;-1:-1:-1;12136:19:14;;;12123:33;12077:93;-1:-1:-1;;11028:1:14;11024:11;;;11020:24;11016:29;11006:40;11052:1;11048:11;;;11003:57;12183:78;;11376:895;;11403:616;10297:1;10290:14;;;10334:4;10321:18;;-1:-1:-1;;11439:17:14;;;11540:9;11562:229;11576:7;11573:1;11570:14;11562:229;;;11665:19;;;11652:33;11637:49;;11772:4;11757:20;;;;11725:1;11713:14;;;;11592:12;11562:229;;;11566:3;11819;11810:7;11807:16;11804:159;;;11943:1;11939:6;11933:3;11927;11924:1;11920:11;11916:21;11912:34;11908:39;11895:9;11890:3;11886:19;11873:33;11869:79;11861:6;11854:95;11804:159;;;12006:1;12000:3;11997:1;11993:11;11989:19;11983:4;11976:33;11376:895;;11071:1206;;;:::o;13045:125::-;13110:9;;;13131:10;;;13128:36;;;13144:18;;:::i;13175:128::-;13242:9;;;13263:11;;;13260:37;;;13277:18;;:::i;13308:135::-;13347:3;13368:17;;;13365:43;;13388:18;;:::i;:::-;-1:-1:-1;13435:1:14;13424:13;;13308:135::o;13448:127::-;13509:10;13504:3;13500:20;13497:1;13490:31;13540:4;13537:1;13530:15;13564:4;13561:1;13554:15;13580:346;13782:2;13764:21;;;13821:2;13801:18;;;13794:30;-1:-1:-1;;;13855:2:14;13840:18;;13833:52;13917:2;13902:18;;13580:346::o;14640:184::-;14710:6;14763:2;14751:9;14742:7;14738:23;14734:32;14731:52;;;14779:1;14776;14769:12;14731:52;-1:-1:-1;14802:16:14;;14640:184;-1:-1:-1;14640:184:14:o;14829:112::-;14861:1;14887;14877:35;;14892:18;;:::i;:::-;-1:-1:-1;14926:9:14;;14829:112::o;14946:251::-;15016:6;15069:2;15057:9;15048:7;15044:23;15040:32;15037:52;;;15085:1;15082;15075:12;15037:52;15117:9;15111:16;15136:31;15161:5;15136:31;:::i;15412:245::-;15479:6;15532:2;15520:9;15511:7;15507:23;15503:32;15500:52;;;15548:1;15545;15538:12;15500:52;15580:9;15574:16;15599:28;15621:5;15599:28;:::i;16458:1256::-;16682:3;16720:6;16714:13;16746:4;16759:64;16816:6;16811:3;16806:2;16798:6;16794:15;16759:64;:::i;:::-;16886:13;;16845:16;;;;16908:68;16886:13;16845:16;16943:15;;;16908:68;:::i;:::-;17065:13;;16998:20;;;17038:1;;17103:36;17065:13;17103:36;:::i;:::-;17158:1;17175:18;;;17202:141;;;;17357:1;17352:337;;;;17168:521;;17202:141;-1:-1:-1;;17237:24:14;;17223:39;;17314:16;;17307:24;17293:39;;17282:51;;;-1:-1:-1;17202:141:14;;17352:337;17383:6;17380:1;17373:17;17431:2;17428:1;17418:16;17456:1;17470:169;17484:8;17481:1;17478:15;17470:169;;;17566:14;;17551:13;;;17544:37;17609:16;;;;17501:10;;17470:169;;;17474:3;;17670:8;17663:5;17659:20;17652:27;;17168:521;-1:-1:-1;17705:3:14;;16458:1256;-1:-1:-1;;;;;;;;;;16458:1256:14:o;17719:1352::-;17845:3;17839:10;17872:18;17864:6;17861:30;17858:56;;;17894:18;;:::i;:::-;17923:97;18013:6;17973:38;18005:4;17999:11;17973:38;:::i;:::-;17967:4;17923:97;:::i;:::-;18075:4;;18139:2;18128:14;;18156:1;18151:663;;;;18858:1;18875:6;18872:89;;;-1:-1:-1;18927:19:14;;;18921:26;18872:89;-1:-1:-1;;11028:1:14;11024:11;;;11020:24;11016:29;11006:40;11052:1;11048:11;;;11003:57;18974:81;;18121:944;;18151:663;10297:1;10290:14;;;10334:4;10321:18;;-1:-1:-1;;18187:20:14;;;18305:236;18319:7;18316:1;18313:14;18305:236;;;18408:19;;;18402:26;18387:42;;18500:27;;;;18468:1;18456:14;;;;18335:19;;18305:236;;;18309:3;18569:6;18560:7;18557:19;18554:201;;;18630:19;;;18624:26;-1:-1:-1;;18713:1:14;18709:14;;;18725:3;18705:24;18701:37;18697:42;18682:58;18667:74;;18554:201;-1:-1:-1;;;;;18801:1:14;18785:14;;;18781:22;18768:36;;-1:-1:-1;17719:1352:14:o;23111:414::-;23313:2;23295:21;;;23352:2;23332:18;;;23325:30;23391:34;23386:2;23371:18;;23364:62;-1:-1:-1;;;23457:2:14;23442:18;;23435:48;23515:3;23500:19;;23111:414::o;23874:489::-;-1:-1:-1;;;;;24143:15:14;;;24125:34;;24195:15;;24190:2;24175:18;;24168:43;24242:2;24227:18;;24220:34;;;24290:3;24285:2;24270:18;;24263:31;;;24068:4;;24311:46;;24337:19;;24329:6;24311:46;:::i;:::-;24303:54;23874:489;-1:-1:-1;;;;;;23874:489:14:o;24368:249::-;24437:6;24490:2;24478:9;24469:7;24465:23;24461:32;24458:52;;;24506:1;24503;24496:12;24458:52;24538:9;24532:16;24557:30;24581:5;24557:30;:::i
Swarm Source
ipfs://9e9b587c7b61f02f0e63f991f8a1f87a72823509099b4aab00700b0d70a71b25
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
AVAX | 100.00% | $22.76 | 0.025 | $0.569054 |
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.