Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 283 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Approval For... | 20296526 | 164 days ago | IN | 0 ETH | 0.00004346 | ||||
Set Approval For... | 20189504 | 179 days ago | IN | 0 ETH | 0.00030835 | ||||
Set Approval For... | 19840166 | 227 days ago | IN | 0 ETH | 0.00017385 | ||||
Set Approval For... | 18907574 | 358 days ago | IN | 0 ETH | 0.00061611 | ||||
Set Approval For... | 18384007 | 432 days ago | IN | 0 ETH | 0.00028353 | ||||
Set Approval For... | 17935214 | 494 days ago | IN | 0 ETH | 0.00148476 | ||||
Set Approval For... | 17874190 | 503 days ago | IN | 0 ETH | 0.00087422 | ||||
Set Approval For... | 17703165 | 527 days ago | IN | 0 ETH | 0.00056652 | ||||
Set Approval For... | 17154113 | 604 days ago | IN | 0 ETH | 0.00181822 | ||||
Set Approval For... | 16827095 | 650 days ago | IN | 0 ETH | 0.00122909 | ||||
Set Approval For... | 16827092 | 650 days ago | IN | 0 ETH | 0.00119625 | ||||
Set Approval For... | 16293810 | 725 days ago | IN | 0 ETH | 0.00085947 | ||||
Set Approval For... | 16287468 | 726 days ago | IN | 0 ETH | 0.00079469 | ||||
Safe Transfer Fr... | 16287405 | 726 days ago | IN | 0 ETH | 0.00111087 | ||||
Set Approval For... | 16276955 | 727 days ago | IN | 0 ETH | 0.00067997 | ||||
Set Approval For... | 16258860 | 730 days ago | IN | 0 ETH | 0.00054226 | ||||
Set Approval For... | 15894831 | 781 days ago | IN | 0 ETH | 0.00085566 | ||||
Withdraw | 15848314 | 787 days ago | IN | 0 ETH | 0.00066488 | ||||
Set Approval For... | 15848146 | 787 days ago | IN | 0 ETH | 0.00064071 | ||||
Set Approval For... | 15810208 | 793 days ago | IN | 0 ETH | 0.00051674 | ||||
Set Approval For... | 15725852 | 804 days ago | IN | 0 ETH | 0.00077025 | ||||
Set Approval For... | 15702073 | 808 days ago | IN | 0 ETH | 0.00029714 | ||||
Public Mint | 15689529 | 809 days ago | IN | 2 ETH | 0.00508887 | ||||
Set Approval For... | 15650536 | 815 days ago | IN | 0 ETH | 0.00040017 | ||||
Public Mint | 15523898 | 833 days ago | IN | 2 ETH | 0.00347298 |
Loading...
Loading
Contract Name:
Drop
Compiler Version
v0.8.14+commit.80d49f37
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: Unlicense // .----------------. .----------------. .----------------. .----------------. // | .--------------. || .--------------. || .--------------. || .--------------. | // | | _____ | || | __ | || | ______ | || | ____ | | // | | |_ _| | || | / \ | || | .' ___ | | || | .' `. | | // | | | | | || | / /\ \ | || | / .' \_| | || | / .--. \ | | // | | | | _ | || | / ____ \ | || | | | ____ | || | | | | | | | // | | _| |__/ | | || | _/ / \ \_ | || | \ `.___] _| | || | \ `--' / | | // | | |________| | || ||____| |____|| || | `._____.' | || | `.____.' | | // | | | || | | || | | || | | | // | '--------------' || '--------------' || '--------------' || '--------------' | // '----------------' '----------------' '----------------' '----------------' pragma solidity ^0.8.14; import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/utils/Strings.sol"; import "@openzeppelin/contracts/utils/Address.sol"; import "base64-sol/base64.sol"; contract Drop is ERC721, Ownable { string public nftName; string public description; uint256 public tokenIdCounter = 0; uint256 public tokenPrice; uint256 public maxSupply; string public imageUrl; string public animationUrl; string public nftUrl; bool public publicMintEnabled; uint256 private randomWord; string[] private choosableTraits; string[][] private choosableValues; string[] private randomTraits; string[][] private randomValues; uint16[] private traitsChance; uint256[] private dynamicChance; uint16[][] private valuesChance; mapping (uint => uint[]) private chosenTraits; mapping (uint => uint16[]) private traitIndexes; mapping (uint => uint8) private foundersArts; mapping (uint => bool) private hasDynamicTrait; mapping (uint => uint8) private dynamicTraits; uint256[] private dynamicTraitTokens; constructor( string memory _name, string memory _description, string memory _imageUrl, string memory _animationUrl, string memory _nftUrl, string memory _symbol, uint _tokenPrice, uint _maxSupply, string[][][] memory traits, uint16[][][] memory chances ) ERC721(_name, _symbol) { require(traits[0][0].length == traits[1].length && traits[2][0].length == traits[3].length && traits[3].length == chances[0][0].length && traits[3].length == chances[2].length, "Invalid metadata"); publicMintEnabled = false; maxSupply = _maxSupply; tokenPrice = _tokenPrice; nftName = _name; description = _description; imageUrl = _imageUrl; animationUrl = _animationUrl; nftUrl = _nftUrl; randomWord = uint(keccak256( abi.encodePacked(block.difficulty, block.timestamp, uint(blockhash(block.number-1)), uint(blockhash(block.number-2))) )); dynamicTraitTokens = new uint256[](0); choosableTraits = traits[0][0]; choosableValues = traits[1]; randomTraits = traits[2][0]; randomValues = traits[3]; traitsChance = chances[0][0]; dynamicChance = chances[1][0]; valuesChance = chances[2]; } function tokensOfOwner(address _owner) external view returns(uint256[] memory ownerTokens) { uint256 tokenCount = balanceOf(_owner); if (tokenCount == 0) { return new uint256[](1); } else { uint256[] memory result = new uint256[](tokenCount); uint256 resultIndex = 0; for (uint256 i = 1; i < tokenIdCounter + 1;) { if (ownerOf(i) == _owner) { result[resultIndex] = i; resultIndex++; } unchecked { ++i; } } return result; } } function totalSupply() public view returns (uint) { return tokenIdCounter; } function setName(string memory _name) external onlyOwner { nftName = _name; } function setDescription(string memory _description) external onlyOwner { description = _description; } function setImageUrl(string memory _imageUrl) external onlyOwner { imageUrl = _imageUrl; } function setAnimationUrl(string memory _animationUrl) external onlyOwner { animationUrl = _animationUrl; } function setNftUrl(string memory _nftUrl) external onlyOwner { nftUrl = _nftUrl; } function setTokenPrice(uint _tokenPrice) external onlyOwner { tokenPrice = _tokenPrice; } function setMaxSupply(uint _maxSupply) external onlyOwner { maxSupply = _maxSupply; } function setPublicMintEnabled(bool _publicMintEnabled) external onlyOwner { publicMintEnabled = _publicMintEnabled; } function randomMetadata(uint tokenId) private { foundersArts[tokenId] = uint8(randomWord % 10); for (uint16 i; i < traitsChance.length;) { if (uint(keccak256( abi.encodePacked(block.difficulty, block.timestamp, randomWord, i, uint(blockhash(block.number-1)) ))) % 10000 < traitsChance[i]) { if (valuesChance[i].length == 1) { traitIndexes[tokenId].push(i<<8); } else { randomWord = uint(keccak256( abi.encodePacked(uint(blockhash(block.number-1)), randomWord, block.difficulty, block.timestamp, i ))) % 10000; for (uint16 j; j < valuesChance[i].length;) { if (randomWord <= valuesChance[i][j]) { uint16 trait = uint16(j); trait |= i<<8; traitIndexes[tokenId].push(trait); break; } unchecked { ++j; } } } } unchecked { ++i; } } } function clearMonthlyTraits() public onlyOwner { for (uint256 i; i < dynamicTraitTokens.length;) { hasDynamicTrait[dynamicTraitTokens[i]] = false; unchecked { ++i; } } dynamicTraitTokens = new uint256[](0); } function randomizeMonthlyTraits(uint percentNumerator, uint percentDenominator) public onlyOwner { for (uint i; i < dynamicChance.length;) { uint256 expectation = uint(uint(dynamicChance[i] * tokenIdCounter) / uint(10000)); expectation = (expectation * percentNumerator) / percentDenominator; for (uint j; j < expectation;) { uint tokenId = (uint(keccak256( abi.encodePacked(block.difficulty, block.timestamp, randomWord, i, j) )) % tokenIdCounter) + 1; if (!hasDynamicTrait[tokenId]) { hasDynamicTrait[tokenId] = true; dynamicTraits[tokenId] = uint8(i); dynamicTraitTokens.push(tokenId); } unchecked { ++j; } } unchecked { ++i; } } } function publicMint(uint16[] calldata traits) external payable { require(publicMintEnabled, "Public minting is disabled"); require(msg.sender == tx.origin, "Contracts cannot mint"); require(tokenIdCounter < maxSupply, "Total supply reached"); require(tokenPrice <= msg.value, "Not enough funds"); tokenIdCounter += 1; chosenTraits[tokenIdCounter] = traits; randomMetadata(tokenIdCounter); _mint(_msgSender(), tokenIdCounter); } function ownersMint(uint16[] calldata traits, address _address) external onlyOwner { require(tokenIdCounter < maxSupply, "Total supply reached"); tokenIdCounter += 1; chosenTraits[tokenIdCounter] = traits; randomMetadata(tokenIdCounter); _mint(_address, tokenIdCounter); } function tokenURI(uint256 tokenId) public view virtual override(ERC721) returns (string memory) { string memory encodedMetadata = ''; for (uint i; i < traitIndexes[tokenId].length;) { encodedMetadata = string(abi.encodePacked( encodedMetadata, '{"trait_type":"', randomTraits[uint8(traitIndexes[tokenId][i]>>8)], '", "value":"', randomValues[uint8(traitIndexes[tokenId][i]>>8)][uint8(traitIndexes[tokenId][i])], '"}', i == traitIndexes[tokenId].length ? '' : ',') ); unchecked { ++i; } } for (uint i; i < choosableTraits.length;) { encodedMetadata = string(abi.encodePacked( encodedMetadata, '{"trait_type":"', choosableTraits[i], '", "value":"', choosableValues[i][chosenTraits[tokenId][i]], '"}', i == choosableTraits.length - 1 ? '' : ',') ); unchecked { ++i; } } if (hasDynamicTrait[tokenId]) { encodedMetadata = string(abi.encodePacked( encodedMetadata, ',{"trait_type":"', "Dynamic Monthly Trait", '", "value":"', randomTraits[dynamicTraits[tokenId]], '"}') ); } encodedMetadata = string(abi.encodePacked( encodedMetadata, ',{"trait_type":"', "Founders Art", '", "value":"', Strings.toString(foundersArts[tokenId]), '"}') ); string memory encodedUris = string(abi.encodePacked( '", "nft_url": "', nftUrl, Strings.toString(tokenId), '", "image": "', imageUrl, '", "animation_url": "', animationUrl) ); string memory encoded = string( abi.encodePacked( 'data:application/json;base64,', Base64.encode( bytes( abi.encodePacked( '{"name":"', nftName, ' #', Strings.toString(tokenId), encodedUris, '", "attributes": [', encodedMetadata, '] }' ) ) ) ) ); return encoded; } function withdraw() public onlyOwner { Address.sendValue(payable(owner()), address(this).balance); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/ERC721.sol) pragma solidity ^0.8.0; import "./IERC721.sol"; import "./IERC721Receiver.sol"; import "./extensions/IERC721Metadata.sol"; import "../../utils/Address.sol"; import "../../utils/Context.sol"; import "../../utils/Strings.sol"; import "../../utils/introspection/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: balance query for the zero address"); return _balances[owner]; } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } /** * @dev See {IERC721Metadata-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } /** * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each * token will be the concatenation of the `baseURI` and the `tokenId`. Empty * by default, can be 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 owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { _setApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * `_data` is additional data, it has no specified format and it is sent in call to `to`. * * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. * implement alternative mechanisms to perform token transfer, such as signature-based. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeTransfer( address from, address to, uint256 tokenId, bytes memory _data ) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), * and stop existing when they are burned (`_burn`). */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || 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 a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev Approve `operator` to operate on all of `owner` tokens * * Emits a {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC721: approve to caller"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver.onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/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 Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0; /// @title Base64 /// @author Brecht Devos - <[email protected]> /// @notice Provides functions for encoding/decoding base64 library Base64 { string internal constant TABLE_ENCODE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; bytes internal constant TABLE_DECODE = hex"0000000000000000000000000000000000000000000000000000000000000000" hex"00000000000000000000003e0000003f3435363738393a3b3c3d000000000000" hex"00000102030405060708090a0b0c0d0e0f101112131415161718190000000000" hex"001a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132330000000000"; function encode(bytes memory data) internal pure returns (string memory) { if (data.length == 0) return ''; // load the table into memory string memory table = TABLE_ENCODE; // multiply by 4/3 rounded up uint256 encodedLen = 4 * ((data.length + 2) / 3); // add some extra buffer at the end required for the writing string memory result = new string(encodedLen + 32); assembly { // set the actual output length mstore(result, encodedLen) // prepare the lookup table let tablePtr := add(table, 1) // input ptr let dataPtr := data let endPtr := add(dataPtr, mload(data)) // result ptr, jump over length let resultPtr := add(result, 32) // run over the input, 3 bytes at a time for {} lt(dataPtr, endPtr) {} { // read 3 bytes dataPtr := add(dataPtr, 3) let input := mload(dataPtr) // write 4 characters mstore8(resultPtr, mload(add(tablePtr, and(shr(18, input), 0x3F)))) resultPtr := add(resultPtr, 1) mstore8(resultPtr, mload(add(tablePtr, and(shr(12, input), 0x3F)))) resultPtr := add(resultPtr, 1) mstore8(resultPtr, mload(add(tablePtr, and(shr( 6, input), 0x3F)))) resultPtr := add(resultPtr, 1) mstore8(resultPtr, mload(add(tablePtr, and( input, 0x3F)))) resultPtr := add(resultPtr, 1) } // padding with '=' switch mod(mload(data), 3) case 1 { mstore(sub(resultPtr, 2), shl(240, 0x3d3d)) } case 2 { mstore(sub(resultPtr, 1), shl(248, 0x3d)) } } return result; } function decode(string memory _data) internal pure returns (bytes memory) { bytes memory data = bytes(_data); if (data.length == 0) return new bytes(0); require(data.length % 4 == 0, "invalid base64 decoder input"); // load the table into memory bytes memory table = TABLE_DECODE; // every 4 characters represent 3 bytes uint256 decodedLen = (data.length / 4) * 3; // add some extra buffer at the end required for the writing bytes memory result = new bytes(decodedLen + 32); assembly { // padding with '=' let lastBytes := mload(add(data, mload(data))) if eq(and(lastBytes, 0xFF), 0x3d) { decodedLen := sub(decodedLen, 1) if eq(and(lastBytes, 0xFFFF), 0x3d3d) { decodedLen := sub(decodedLen, 1) } } // set the actual output length mstore(result, decodedLen) // prepare the lookup table let tablePtr := add(table, 1) // input ptr let dataPtr := data let endPtr := add(dataPtr, mload(data)) // result ptr, jump over length let resultPtr := add(result, 32) // run over the input, 4 characters at a time for {} lt(dataPtr, endPtr) {} { // read 4 characters dataPtr := add(dataPtr, 4) let input := mload(dataPtr) // write 3 bytes let output := add( add( shl(18, and(mload(add(tablePtr, and(shr(24, input), 0xFF))), 0xFF)), shl(12, and(mload(add(tablePtr, and(shr(16, input), 0xFF))), 0xFF))), add( shl( 6, and(mload(add(tablePtr, and(shr( 8, input), 0xFF))), 0xFF)), and(mload(add(tablePtr, and( input , 0xFF))), 0xFF) ) ) mstore(resultPtr, shl(232, output)) resultPtr := add(resultPtr, 3) } } return result; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; import "../../utils/introspection/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 be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev 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 (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 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 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 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); }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_description","type":"string"},{"internalType":"string","name":"_imageUrl","type":"string"},{"internalType":"string","name":"_animationUrl","type":"string"},{"internalType":"string","name":"_nftUrl","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint256","name":"_tokenPrice","type":"uint256"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"},{"internalType":"string[][][]","name":"traits","type":"string[][][]"},{"internalType":"uint16[][][]","name":"chances","type":"uint16[][][]"}],"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":[],"name":"animationUrl","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"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":"clearMonthlyTraits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"description","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"imageUrl","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftUrl","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":[{"internalType":"uint16[]","name":"traits","type":"uint16[]"},{"internalType":"address","name":"_address","type":"address"}],"name":"ownersMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16[]","name":"traits","type":"uint16[]"}],"name":"publicMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"publicMintEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentNumerator","type":"uint256"},{"internalType":"uint256","name":"percentDenominator","type":"uint256"}],"name":"randomizeMonthlyTraits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_animationUrl","type":"string"}],"name":"setAnimationUrl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_description","type":"string"}],"name":"setDescription","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_imageUrl","type":"string"}],"name":"setImageUrl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"}],"name":"setName","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_nftUrl","type":"string"}],"name":"setNftUrl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_publicMintEnabled","type":"bool"}],"name":"setPublicMintEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenPrice","type":"uint256"}],"name":"setTokenPrice","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":[],"name":"tokenIdCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"_owner","type":"address"}],"name":"tokensOfOwner","outputs":[{"internalType":"uint256[]","name":"ownerTokens","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":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405260006009553480156200001657600080fd5b5060405162006f4138038062006f4183398181016040528101906200003c91906200129c565b89858160009080519060200190620000569291906200068c565b5080600190805190602001906200006f9291906200068c565b5050506200009262000086620005be60201b60201c565b620005c660201b60201c565b81600181518110620000a957620000a86200148a565b5b60200260200101515182600081518110620000c957620000c86200148a565b5b6020026020010151600081518110620000e757620000e66200148a565b5b6020026020010151511480156200015957508160038151811062000110576200010f6200148a565b5b6020026020010151518260028151811062000130576200012f6200148a565b5b60200260200101516000815181106200014e576200014d6200148a565b5b602002602001015151145b8015620001c15750806000815181106200017857620001776200148a565b5b60200260200101516000815181106200019657620001956200148a565b5b60200260200101515182600381518110620001b657620001b56200148a565b5b602002602001015151145b80156200020b575080600281518110620001e057620001df6200148a565b5b602002602001015151826003815181106200020057620001ff6200148a565b5b602002602001015151145b6200024d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000244906200151a565b60405180910390fd5b6000600f60006101000a81548160ff02191690831515021790555082600b8190555083600a8190555089600790805190602001906200028e9291906200068c565b508860089080519060200190620002a79291906200068c565b5087600c9080519060200190620002c09291906200068c565b5086600d9080519060200190620002d99291906200068c565b5085600e9080519060200190620002f29291906200068c565b5044426001436200030491906200156b565b4060001c6002436200031791906200156b565b4060001c604051602001620003309493929190620015cb565b6040516020818303038152906040528051906020012060001c601081905550600067ffffffffffffffff8111156200036d576200036c62000b06565b5b6040519080825280602002602001820160405280156200039c5781602001602082028036833780820191505090505b50601d9080519060200190620003b49291906200071d565b5081600081518110620003cc57620003cb6200148a565b5b6020026020010151600081518110620003ea57620003e96200148a565b5b602002602001015160119080519060200190620004099291906200076f565b50816001815181106200042157620004206200148a565b5b60200260200101516012908051906020019062000440929190620007d6565b50816002815181106200045857620004576200148a565b5b60200260200101516000815181106200047657620004756200148a565b5b602002602001015160139080519060200190620004959291906200076f565b5081600381518110620004ad57620004ac6200148a565b5b602002602001015160149080519060200190620004cc929190620007d6565b5080600081518110620004e457620004e36200148a565b5b60200260200101516000815181106200050257620005016200148a565b5b602002602001015160159080519060200190620005219291906200083d565b50806001815181106200053957620005386200148a565b5b60200260200101516000815181106200055757620005566200148a565b5b60200260200101516016908051906020019062000576929190620008ee565b50806002815181106200058e576200058d6200148a565b5b602002602001015160179080519060200190620005ad92919062000946565b505050505050505050505062001685565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200069a9062001650565b90600052602060002090601f016020900481019282620006be57600085556200070a565b82601f10620006d957805160ff19168380011785556200070a565b828001600101855582156200070a579182015b8281111562000709578251825591602001919060010190620006ec565b5b509050620007199190620009ad565b5090565b8280548282559060005260206000209081019282156200075c579160200282015b828111156200075b5782518255916020019190600101906200073e565b5b5090506200076b9190620009ad565b5090565b828054828255906000526020600020908101928215620007c3579160200282015b82811115620007c2578251829080519060200190620007b19291906200068c565b509160200191906001019062000790565b5b509050620007d29190620009cc565b5090565b8280548282559060005260206000209081019282156200082a579160200282015b8281111562000829578251829080519060200190620008189291906200076f565b5091602001919060010190620007f7565b5b509050620008399190620009f4565b5090565b82805482825590600052602060002090600f01601090048101928215620008db5791602002820160005b83821115620008a957835183826101000a81548161ffff021916908361ffff160217905550926020019260020160208160010104928301926001030262000867565b8015620008d95782816101000a81549061ffff0219169055600201602081600101049283019260010302620008a9565b505b509050620008ea9190620009ad565b5090565b82805482825590600052602060002090810192821562000933579160200282015b8281111562000932578251829061ffff169055916020019190600101906200090f565b5b509050620009429190620009ad565b5090565b8280548282559060005260206000209081019282156200099a579160200282015b8281111562000999578251829080519060200190620009889291906200083d565b509160200191906001019062000967565b5b509050620009a9919062000a1c565b5090565b5b80821115620009c8576000816000905550600101620009ae565b5090565b5b80821115620009f05760008181620009e6919062000a44565b50600101620009cd565b5090565b5b8082111562000a18576000818162000a0e919062000a8a565b50600101620009f5565b5090565b5b8082111562000a40576000818162000a36919062000aad565b5060010162000a1d565b5090565b50805462000a529062001650565b6000825580601f1062000a66575062000a87565b601f01602090049060005260206000209081019062000a869190620009ad565b5b50565b508054600082559060005260206000209081019062000aaa9190620009cc565b50565b50805460008255600f01601090049060005260206000209081019062000ad49190620009ad565b50565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000b408262000af5565b810181811067ffffffffffffffff8211171562000b625762000b6162000b06565b5b80604052505050565b600062000b7762000ad7565b905062000b85828262000b35565b919050565b600067ffffffffffffffff82111562000ba85762000ba762000b06565b5b62000bb38262000af5565b9050602081019050919050565b60005b8381101562000be057808201518184015260208101905062000bc3565b8381111562000bf0576000848401525b50505050565b600062000c0d62000c078462000b8a565b62000b6b565b90508281526020810184848401111562000c2c5762000c2b62000af0565b5b62000c3984828562000bc0565b509392505050565b600082601f83011262000c595762000c5862000aeb565b5b815162000c6b84826020860162000bf6565b91505092915050565b6000819050919050565b62000c898162000c74565b811462000c9557600080fd5b50565b60008151905062000ca98162000c7e565b92915050565b600067ffffffffffffffff82111562000ccd5762000ccc62000b06565b5b602082029050602081019050919050565b600080fd5b600067ffffffffffffffff82111562000d015762000d0062000b06565b5b602082029050602081019050919050565b600067ffffffffffffffff82111562000d305762000d2f62000b06565b5b602082029050602081019050919050565b600062000d5862000d528462000d12565b62000b6b565b9050808382526020820190506020840283018581111562000d7e5762000d7d62000cde565b5b835b8181101562000dcc57805167ffffffffffffffff81111562000da75762000da662000aeb565b5b80860162000db6898262000c41565b8552602085019450505060208101905062000d80565b5050509392505050565b600082601f83011262000dee5762000ded62000aeb565b5b815162000e0084826020860162000d41565b91505092915050565b600062000e2062000e1a8462000ce3565b62000b6b565b9050808382526020820190506020840283018581111562000e465762000e4562000cde565b5b835b8181101562000e9457805167ffffffffffffffff81111562000e6f5762000e6e62000aeb565b5b80860162000e7e898262000dd6565b8552602085019450505060208101905062000e48565b5050509392505050565b600082601f83011262000eb65762000eb562000aeb565b5b815162000ec884826020860162000e09565b91505092915050565b600062000ee862000ee28462000caf565b62000b6b565b9050808382526020820190506020840283018581111562000f0e5762000f0d62000cde565b5b835b8181101562000f5c57805167ffffffffffffffff81111562000f375762000f3662000aeb565b5b80860162000f46898262000e9e565b8552602085019450505060208101905062000f10565b5050509392505050565b600082601f83011262000f7e5762000f7d62000aeb565b5b815162000f9084826020860162000ed1565b91505092915050565b600067ffffffffffffffff82111562000fb75762000fb662000b06565b5b602082029050602081019050919050565b600067ffffffffffffffff82111562000fe65762000fe562000b06565b5b602082029050602081019050919050565b600067ffffffffffffffff82111562001015576200101462000b06565b5b602082029050602081019050919050565b600061ffff82169050919050565b6200103f8162001026565b81146200104b57600080fd5b50565b6000815190506200105f8162001034565b92915050565b60006200107c620010768462000ff7565b62000b6b565b90508083825260208201905060208402830185811115620010a257620010a162000cde565b5b835b81811015620010cf5780620010ba88826200104e565b845260208401935050602081019050620010a4565b5050509392505050565b600082601f830112620010f157620010f062000aeb565b5b81516200110384826020860162001065565b91505092915050565b6000620011236200111d8462000fc8565b62000b6b565b9050808382526020820190506020840283018581111562001149576200114862000cde565b5b835b818110156200119757805167ffffffffffffffff81111562001172576200117162000aeb565b5b808601620011818982620010d9565b855260208501945050506020810190506200114b565b5050509392505050565b600082601f830112620011b957620011b862000aeb565b5b8151620011cb8482602086016200110c565b91505092915050565b6000620011eb620011e58462000f99565b62000b6b565b9050808382526020820190506020840283018581111562001211576200121062000cde565b5b835b818110156200125f57805167ffffffffffffffff8111156200123a576200123962000aeb565b5b808601620012498982620011a1565b8552602085019450505060208101905062001213565b5050509392505050565b600082601f83011262001281576200128062000aeb565b5b815162001293848260208601620011d4565b91505092915050565b6000806000806000806000806000806101408b8d031215620012c357620012c262000ae1565b5b60008b015167ffffffffffffffff811115620012e457620012e362000ae6565b5b620012f28d828e0162000c41565b9a505060208b015167ffffffffffffffff81111562001316576200131562000ae6565b5b620013248d828e0162000c41565b99505060408b015167ffffffffffffffff81111562001348576200134762000ae6565b5b620013568d828e0162000c41565b98505060608b015167ffffffffffffffff8111156200137a576200137962000ae6565b5b620013888d828e0162000c41565b97505060808b015167ffffffffffffffff811115620013ac57620013ab62000ae6565b5b620013ba8d828e0162000c41565b96505060a08b015167ffffffffffffffff811115620013de57620013dd62000ae6565b5b620013ec8d828e0162000c41565b95505060c0620013ff8d828e0162000c98565b94505060e0620014128d828e0162000c98565b9350506101008b015167ffffffffffffffff81111562001437576200143662000ae6565b5b620014458d828e0162000f66565b9250506101208b015167ffffffffffffffff8111156200146a576200146962000ae6565b5b620014788d828e0162001269565b9150509295989b9194979a5092959850565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082825260208201905092915050565b7f496e76616c6964206d6574616461746100000000000000000000000000000000600082015250565b600062001502601083620014b9565b91506200150f82620014ca565b602082019050919050565b600060208201905081810360008301526200153581620014f3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620015788262000c74565b9150620015858362000c74565b9250828210156200159b576200159a6200153c565b5b828203905092915050565b6000819050919050565b620015c5620015bf8262000c74565b620015a6565b82525050565b6000620015d98287620015b0565b602082019150620015eb8286620015b0565b602082019150620015fd8285620015b0565b6020820191506200160f8284620015b0565b60208201915081905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200166957607f821691505b6020821081036200167f576200167e62001621565b5b50919050565b6158ac80620016956000396000f3fe60806040526004361061023a5760003560e01c8063715018a61161012e578063aba83150116100ab578063d5abeb011161006f578063d5abeb0114610839578063dde3dd2214610864578063e0d283e61461088d578063e985e9c5146108a4578063f2fde38b146108e15761023a565b8063aba8315014610756578063b88d4fde14610781578063c47f0027146107aa578063c87b56dd146107d3578063c967dd1c146108105761023a565b80638da5cb5b116100f25780638da5cb5b1461068357806390c3f38f146106ae57806395d89b41146106d757806398bdf6f514610702578063a22cb4651461072d5761023a565b8063715018a6146105b05780637284e416146105c75780637ff9b596146105f2578063818668d71461061d5780638462151c146106465761023a565b806328e56c5e116101bc57806351e379ad1161018057806351e379ad146104c85780636352211e146104e45780636a61e5fc146105215780636f8b44b01461054a57806370a08231146105735761023a565b806328e56c5e1461040b5780632abff1f214610434578063397b5b241461045d5780633ccfd60b1461048857806342842e0e1461049f5761023a565b80630f4161aa116102035780630f4161aa14610338578063131cdcf21461036357806318160ddd1461038e5780631e4c6972146103b957806323b872dd146103e25761023a565b80628bfb001461023f57806301ffc9a71461026a57806306fdde03146102a7578063081812fc146102d2578063095ea7b31461030f575b600080fd5b34801561024b57600080fd5b5061025461090a565b604051610261919061391c565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c91906139aa565b610998565b60405161029e91906139f2565b60405180910390f35b3480156102b357600080fd5b506102bc610a7a565b6040516102c9919061391c565b60405180910390f35b3480156102de57600080fd5b506102f960048036038101906102f49190613a43565b610b0c565b6040516103069190613ab1565b60405180910390f35b34801561031b57600080fd5b5061033660048036038101906103319190613af8565b610b91565b005b34801561034457600080fd5b5061034d610ca8565b60405161035a91906139f2565b60405180910390f35b34801561036f57600080fd5b50610378610cbb565b604051610385919061391c565b60405180910390f35b34801561039a57600080fd5b506103a3610d49565b6040516103b09190613b47565b60405180910390f35b3480156103c557600080fd5b506103e060048036038101906103db9190613c97565b610d53565b005b3480156103ee57600080fd5b5061040960048036038101906104049190613ce0565b610de9565b005b34801561041757600080fd5b50610432600480360381019061042d9190613c97565b610e49565b005b34801561044057600080fd5b5061045b60048036038101906104569190613c97565b610edf565b005b34801561046957600080fd5b50610472610f75565b60405161047f919061391c565b60405180910390f35b34801561049457600080fd5b5061049d611003565b005b3480156104ab57600080fd5b506104c660048036038101906104c19190613ce0565b611092565b005b6104e260048036038101906104dd9190613d93565b6110b2565b005b3480156104f057600080fd5b5061050b60048036038101906105069190613a43565b61125b565b6040516105189190613ab1565b60405180910390f35b34801561052d57600080fd5b5061054860048036038101906105439190613a43565b61130c565b005b34801561055657600080fd5b50610571600480360381019061056c9190613a43565b611392565b005b34801561057f57600080fd5b5061059a60048036038101906105959190613de0565b611418565b6040516105a79190613b47565b60405180910390f35b3480156105bc57600080fd5b506105c56114cf565b005b3480156105d357600080fd5b506105dc611557565b6040516105e9919061391c565b60405180910390f35b3480156105fe57600080fd5b506106076115e5565b6040516106149190613b47565b60405180910390f35b34801561062957600080fd5b50610644600480360381019061063f9190613e39565b6115eb565b005b34801561065257600080fd5b5061066d60048036038101906106689190613de0565b611684565b60405161067a9190613f24565b60405180910390f35b34801561068f57600080fd5b506106986117da565b6040516106a59190613ab1565b60405180910390f35b3480156106ba57600080fd5b506106d560048036038101906106d09190613c97565b611804565b005b3480156106e357600080fd5b506106ec61189a565b6040516106f9919061391c565b60405180910390f35b34801561070e57600080fd5b5061071761192c565b6040516107249190613b47565b60405180910390f35b34801561073957600080fd5b50610754600480360381019061074f9190613f46565b611932565b005b34801561076257600080fd5b5061076b611948565b604051610778919061391c565b60405180910390f35b34801561078d57600080fd5b506107a860048036038101906107a39190614027565b6119d6565b005b3480156107b657600080fd5b506107d160048036038101906107cc9190613c97565b611a38565b005b3480156107df57600080fd5b506107fa60048036038101906107f59190613a43565b611ace565b604051610807919061391c565b60405180910390f35b34801561081c57600080fd5b50610837600480360381019061083291906140aa565b611f88565b005b34801561084557600080fd5b5061084e6120a5565b60405161085b9190613b47565b60405180910390f35b34801561087057600080fd5b5061088b6004803603810190610886919061410a565b6120ab565b005b34801561089957600080fd5b506108a26122ae565b005b3480156108b057600080fd5b506108cb60048036038101906108c6919061414a565b6123f2565b6040516108d891906139f2565b60405180910390f35b3480156108ed57600080fd5b5061090860048036038101906109039190613de0565b612486565b005b60078054610917906141b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610943906141b9565b80156109905780601f1061096557610100808354040283529160200191610990565b820191906000526020600020905b81548152906001019060200180831161097357829003601f168201915b505050505081565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610a6357507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a735750610a728261257d565b5b9050919050565b606060008054610a89906141b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610ab5906141b9565b8015610b025780601f10610ad757610100808354040283529160200191610b02565b820191906000526020600020905b815481529060010190602001808311610ae557829003601f168201915b5050505050905090565b6000610b17826125e7565b610b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4d9061425c565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610b9c8261125b565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c03906142ee565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610c2b612653565b73ffffffffffffffffffffffffffffffffffffffff161480610c5a5750610c5981610c54612653565b6123f2565b5b610c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9090614380565b60405180910390fd5b610ca3838361265b565b505050565b600f60009054906101000a900460ff1681565b600e8054610cc8906141b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610cf4906141b9565b8015610d415780601f10610d1657610100808354040283529160200191610d41565b820191906000526020600020905b815481529060010190602001808311610d2457829003601f168201915b505050505081565b6000600954905090565b610d5b612653565b73ffffffffffffffffffffffffffffffffffffffff16610d796117da565b73ffffffffffffffffffffffffffffffffffffffff1614610dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc6906143ec565b60405180910390fd5b80600e9080519060200190610de592919061373c565b5050565b610dfa610df4612653565b82612714565b610e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e309061447e565b60405180910390fd5b610e448383836127f2565b505050565b610e51612653565b73ffffffffffffffffffffffffffffffffffffffff16610e6f6117da565b73ffffffffffffffffffffffffffffffffffffffff1614610ec5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebc906143ec565b60405180910390fd5b80600d9080519060200190610edb92919061373c565b5050565b610ee7612653565b73ffffffffffffffffffffffffffffffffffffffff16610f056117da565b73ffffffffffffffffffffffffffffffffffffffff1614610f5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f52906143ec565b60405180910390fd5b80600c9080519060200190610f7192919061373c565b5050565b600d8054610f82906141b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610fae906141b9565b8015610ffb5780601f10610fd057610100808354040283529160200191610ffb565b820191906000526020600020905b815481529060010190602001808311610fde57829003601f168201915b505050505081565b61100b612653565b73ffffffffffffffffffffffffffffffffffffffff166110296117da565b73ffffffffffffffffffffffffffffffffffffffff161461107f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611076906143ec565b60405180910390fd5b61109061108a6117da565b47612a58565b565b6110ad838383604051806020016040528060008152506119d6565b505050565b600f60009054906101000a900460ff16611101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f8906144ea565b60405180910390fd5b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461116f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116690614556565b60405180910390fd5b600b54600954106111b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ac906145c2565b60405180910390fd5b34600a5411156111fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f19061462e565b60405180910390fd5b60016009600082825461120d919061467d565b92505081905550818160186000600954815260200190815260200160002091906112389291906137c2565b50611244600954612b4c565b61125761124f612653565b600954612e49565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fa90614745565b60405180910390fd5b80915050919050565b611314612653565b73ffffffffffffffffffffffffffffffffffffffff166113326117da565b73ffffffffffffffffffffffffffffffffffffffff1614611388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137f906143ec565b60405180910390fd5b80600a8190555050565b61139a612653565b73ffffffffffffffffffffffffffffffffffffffff166113b86117da565b73ffffffffffffffffffffffffffffffffffffffff161461140e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611405906143ec565b60405180910390fd5b80600b8190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147f906147d7565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114d7612653565b73ffffffffffffffffffffffffffffffffffffffff166114f56117da565b73ffffffffffffffffffffffffffffffffffffffff161461154b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611542906143ec565b60405180910390fd5b6115556000613022565b565b60088054611564906141b9565b80601f0160208091040260200160405190810160405280929190818152602001828054611590906141b9565b80156115dd5780601f106115b2576101008083540402835291602001916115dd565b820191906000526020600020905b8154815290600101906020018083116115c057829003601f168201915b505050505081565b600a5481565b6115f3612653565b73ffffffffffffffffffffffffffffffffffffffff166116116117da565b73ffffffffffffffffffffffffffffffffffffffff1614611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165e906143ec565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b6060600061169183611418565b9050600081036116ed57600167ffffffffffffffff8111156116b6576116b5613b6c565b5b6040519080825280602002602001820160405280156116e45781602001602082028036833780820191505090505b509150506117d5565b60008167ffffffffffffffff81111561170957611708613b6c565b5b6040519080825280602002602001820160405280156117375781602001602082028036833780820191505090505b509050600080600190505b6001600954611751919061467d565b8110156117cd578573ffffffffffffffffffffffffffffffffffffffff166117788261125b565b73ffffffffffffffffffffffffffffffffffffffff16036117c257808383815181106117a7576117a66147f7565b5b60200260200101818152505081806117be90614826565b9250505b806001019050611742565b508193505050505b919050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61180c612653565b73ffffffffffffffffffffffffffffffffffffffff1661182a6117da565b73ffffffffffffffffffffffffffffffffffffffff1614611880576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611877906143ec565b60405180910390fd5b806008908051906020019061189692919061373c565b5050565b6060600180546118a9906141b9565b80601f01602080910402602001604051908101604052809291908181526020018280546118d5906141b9565b80156119225780601f106118f757610100808354040283529160200191611922565b820191906000526020600020905b81548152906001019060200180831161190557829003601f168201915b5050505050905090565b60095481565b61194461193d612653565b83836130e8565b5050565b600c8054611955906141b9565b80601f0160208091040260200160405190810160405280929190818152602001828054611981906141b9565b80156119ce5780601f106119a3576101008083540402835291602001916119ce565b820191906000526020600020905b8154815290600101906020018083116119b157829003601f168201915b505050505081565b6119e76119e1612653565b83612714565b611a26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1d9061447e565b60405180910390fd5b611a3284848484613254565b50505050565b611a40612653565b73ffffffffffffffffffffffffffffffffffffffff16611a5e6117da565b73ffffffffffffffffffffffffffffffffffffffff1614611ab4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aab906143ec565b60405180910390fd5b8060079080519060200190611aca92919061373c565b5050565b6060600060405180602001604052806000815250905060005b6019600085815260200190815260200160002080549050811015611ce7578160136008601960008881526020019081526020016000208481548110611b2f57611b2e6147f7565b5b90600052602060002090601091828204019190066002029054906101000a900461ffff1661ffff16901c60ff1681548110611b6d57611b6c6147f7565b5b9060005260206000200160146008601960008981526020019081526020016000208581548110611ba057611b9f6147f7565b5b90600052602060002090601091828204019190066002029054906101000a900461ffff1661ffff16901c60ff1681548110611bde57611bdd6147f7565b5b90600052602060002001601960008881526020019081526020016000208481548110611c0d57611c0c6147f7565b5b90600052602060002090601091828204019190066002029054906101000a900461ffff1660ff1681548110611c4557611c446147f7565b5b9060005260206000200160196000888152602001908152602001600020805490508414611ca7576040518060400160405280600181526020017f2c00000000000000000000000000000000000000000000000000000000000000815250611cb8565b604051806020016040528060008152505b604051602001611ccb9493929190614a22565b6040516020818303038152906040529150806001019050611ae7565b5060005b601180549050811015611e13578160118281548110611d0d57611d0c6147f7565b5b9060005260206000200160128381548110611d2b57611d2a6147f7565b5b90600052602060002001601860008881526020019081526020016000208481548110611d5a57611d596147f7565b5b906000526020600020015481548110611d7657611d756147f7565b5b906000526020600020016001601180549050611d929190614a81565b8414611dd3576040518060400160405280600181526020017f2c00000000000000000000000000000000000000000000000000000000000000815250611de4565b604051806020016040528060008152505b604051602001611df79493929190614a22565b6040516020818303038152906040529150806001019050611ceb565b50601b600084815260200190815260200160002060009054906101000a900460ff1615611e9f57806013601c600086815260200190815260200160002060009054906101000a900460ff1660ff1681548110611e7257611e716147f7565b5b90600052602060002001604051602001611e8d929190614b4d565b60405160208183030381529060405290505b80611ecc601a600086815260200190815260200160002060009054906101000a900460ff1660ff166132b0565b604051602001611edd929190614be9565b60405160208183030381529060405290506000600e611efb856132b0565b600c600d604051602001611f129493929190614d1d565b60405160208183030381529060405290506000611f5c6007611f33876132b0565b8486604051602001611f489493929190614eac565b604051602081830303815290604052613410565b604051602001611f6c9190614f62565b6040516020818303038152906040529050809350505050919050565b611f90612653565b73ffffffffffffffffffffffffffffffffffffffff16611fae6117da565b73ffffffffffffffffffffffffffffffffffffffff1614612004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffb906143ec565b60405180910390fd5b600b546009541061204a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612041906145c2565b60405180910390fd5b60016009600082825461205d919061467d565b92505081905550828260186000600954815260200190815260200160002091906120889291906137c2565b50612094600954612b4c565b6120a081600954612e49565b505050565b600b5481565b6120b3612653565b73ffffffffffffffffffffffffffffffffffffffff166120d16117da565b73ffffffffffffffffffffffffffffffffffffffff1614612127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211e906143ec565b60405180910390fd5b60005b6016805490508110156122a957600061271060095460168481548110612153576121526147f7565b5b90600052602060002001546121689190614f84565b612172919061500d565b90508284826121819190614f84565b61218b919061500d565b905060005b8181101561229c5760006001600954444260105488876040516020016121ba95949392919061505f565b6040516020818303038152906040528051906020012060001c6121dd91906150be565b6121e7919061467d565b9050601b600082815260200190815260200160002060009054906101000a900460ff16612290576001601b600083815260200190815260200160002060006101000a81548160ff02191690831515021790555083601c600083815260200190815260200160002060006101000a81548160ff021916908360ff160217905550601d8190806001815401808255809150506001900390600052602060002001600090919091909150555b81600101915050612190565b508160010191505061212a565b505050565b6122b6612653565b73ffffffffffffffffffffffffffffffffffffffff166122d46117da565b73ffffffffffffffffffffffffffffffffffffffff161461232a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612321906143ec565b60405180910390fd5b60005b601d8054905081101561238f576000601b6000601d8481548110612354576123536147f7565b5b9060005260206000200154815260200190815260200160002060006101000a81548160ff02191690831515021790555080600101905061232d565b50600067ffffffffffffffff8111156123ab576123aa613b6c565b5b6040519080825280602002602001820160405280156123d95781602001602082028036833780820191505090505b50601d90805190602001906123ef929190613819565b50565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61248e612653565b73ffffffffffffffffffffffffffffffffffffffff166124ac6117da565b73ffffffffffffffffffffffffffffffffffffffff1614612502576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f9906143ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256890615161565b60405180910390fd5b61257a81613022565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166126ce8361125b565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061271f826125e7565b61275e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612755906151f3565b60405180910390fd5b60006127698361125b565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806127ab57506127aa81856123f2565b5b806127e957508373ffffffffffffffffffffffffffffffffffffffff166127d184610b0c565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166128128261125b565b73ffffffffffffffffffffffffffffffffffffffff1614612868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285f90615285565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ce90615317565b60405180910390fd5b6128e2838383613588565b6128ed60008261265b565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461293d9190614a81565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612994919061467d565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612a5383838361358d565b505050565b80471015612a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9290615383565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612ac1906153d4565b60006040518083038185875af1925050503d8060008114612afe576040519150601f19603f3d011682016040523d82523d6000602084013e612b03565b606091505b5050905080612b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3e9061545b565b60405180910390fd5b505050565b600a601054612b5b91906150be565b601a600083815260200190815260200160002060006101000a81548160ff021916908360ff16021790555060005b6015805490508161ffff161015612e455760158161ffff1681548110612bb257612bb16147f7565b5b90600052602060002090601091828204019190066002029054906101000a900461ffff1661ffff16612710444260105485600143612bf09190614a81565b4060001c604051602001612c089594939291906154bf565b6040516020818303038152906040528051906020012060001c612c2b91906150be565b1015612e3a57600160178261ffff1681548110612c4b57612c4a6147f7565b5b906000526020600020018054905003612cc6576019600083815260200190815260200160002060088261ffff16901b90806001815401808255809150506001900390600052602060002090601091828204019190066002029091909190916101000a81548161ffff021916908361ffff160217905550612e39565b612710600143612cd69190614a81565b4060001c601054444285604051602001612cf495949392919061551e565b6040516020818303038152906040528051906020012060001c612d1791906150be565b60108190555060005b60178261ffff1681548110612d3857612d376147f7565b5b90600052602060002001805490508161ffff161015612e375760178261ffff1681548110612d6957612d686147f7565b5b906000526020600020018161ffff1681548110612d8957612d886147f7565b5b90600052602060002090601091828204019190066002029054906101000a900461ffff1661ffff1660105411612e2c57600081905060088361ffff16901b81179050601960008581526020019081526020016000208190806001815401808255809150506001900390600052602060002090601091828204019190066002029091909190916101000a81548161ffff021916908361ffff16021790555050612e37565b806001019050612d20565b505b5b806001019050612b89565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eaf906155c9565b60405180910390fd5b612ec1816125e7565b15612f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef890615635565b60405180910390fd5b612f0d60008383613588565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f5d919061467d565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461301e6000838361358d565b5050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161314d906156a1565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161324791906139f2565b60405180910390a3505050565b61325f8484846127f2565b61326b84848484613592565b6132aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132a190615733565b60405180910390fd5b50505050565b6060600082036132f7576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061340b565b600082905060005b6000821461332957808061331290614826565b915050600a82613322919061500d565b91506132ff565b60008167ffffffffffffffff81111561334557613344613b6c565b5b6040519080825280601f01601f1916602001820160405280156133775781602001600182028036833780820191505090505b5090505b60008514613404576001826133909190614a81565b9150600a8561339f91906150be565b60306133ab919061467d565b60f81b8183815181106133c1576133c06147f7565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856133fd919061500d565b945061337b565b8093505050505b919050565b6060600082510361343257604051806020016040528060008152509050613583565b60006040518060600160405280604081526020016158376040913990506000600360028551613461919061467d565b61346b919061500d565b60046134779190614f84565b90506000602082613488919061467d565b67ffffffffffffffff8111156134a1576134a0613b6c565b5b6040519080825280601f01601f1916602001820160405280156134d35781602001600182028036833780820191505090505b509050818152600183018586518101602084015b81831015613542576003830192508251603f8160121c168501518253600182019150603f81600c1c168501518253600182019150603f8160061c168501518253600182019150603f81168501518253600182019150506134e7565b60038951066001811461355c576002811461356c57613577565b613d3d60f01b6002830352613577565b603d60f81b60018303525b50505050508093505050505b919050565b505050565b505050565b60006135b38473ffffffffffffffffffffffffffffffffffffffff16613719565b1561370c578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026135dc612653565b8786866040518563ffffffff1660e01b81526004016135fe94939291906157a8565b6020604051808303816000875af192505050801561363a57506040513d601f19601f820116820180604052508101906136379190615809565b60015b6136bc573d806000811461366a576040519150601f19603f3d011682016040523d82523d6000602084013e61366f565b606091505b5060008151036136b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136ab90615733565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050613711565b600190505b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b828054613748906141b9565b90600052602060002090601f01602090048101928261376a57600085556137b1565b82601f1061378357805160ff19168380011785556137b1565b828001600101855582156137b1579182015b828111156137b0578251825591602001919060010190613795565b5b5090506137be9190613866565b5090565b828054828255906000526020600020908101928215613808579160200282015b8281111561380757823561ffff16829061ffff169055916020019190600101906137e2565b5b5090506138159190613866565b5090565b828054828255906000526020600020908101928215613855579160200282015b82811115613854578251825591602001919060010190613839565b5b5090506138629190613866565b5090565b5b8082111561387f576000816000905550600101613867565b5090565b600081519050919050565b600082825260208201905092915050565b60005b838110156138bd5780820151818401526020810190506138a2565b838111156138cc576000848401525b50505050565b6000601f19601f8301169050919050565b60006138ee82613883565b6138f8818561388e565b935061390881856020860161389f565b613911816138d2565b840191505092915050565b6000602082019050818103600083015261393681846138e3565b905092915050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61398781613952565b811461399257600080fd5b50565b6000813590506139a48161397e565b92915050565b6000602082840312156139c0576139bf613948565b5b60006139ce84828501613995565b91505092915050565b60008115159050919050565b6139ec816139d7565b82525050565b6000602082019050613a0760008301846139e3565b92915050565b6000819050919050565b613a2081613a0d565b8114613a2b57600080fd5b50565b600081359050613a3d81613a17565b92915050565b600060208284031215613a5957613a58613948565b5b6000613a6784828501613a2e565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613a9b82613a70565b9050919050565b613aab81613a90565b82525050565b6000602082019050613ac66000830184613aa2565b92915050565b613ad581613a90565b8114613ae057600080fd5b50565b600081359050613af281613acc565b92915050565b60008060408385031215613b0f57613b0e613948565b5b6000613b1d85828601613ae3565b9250506020613b2e85828601613a2e565b9150509250929050565b613b4181613a0d565b82525050565b6000602082019050613b5c6000830184613b38565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613ba4826138d2565b810181811067ffffffffffffffff82111715613bc357613bc2613b6c565b5b80604052505050565b6000613bd661393e565b9050613be28282613b9b565b919050565b600067ffffffffffffffff821115613c0257613c01613b6c565b5b613c0b826138d2565b9050602081019050919050565b82818337600083830152505050565b6000613c3a613c3584613be7565b613bcc565b905082815260208101848484011115613c5657613c55613b67565b5b613c61848285613c18565b509392505050565b600082601f830112613c7e57613c7d613b62565b5b8135613c8e848260208601613c27565b91505092915050565b600060208284031215613cad57613cac613948565b5b600082013567ffffffffffffffff811115613ccb57613cca61394d565b5b613cd784828501613c69565b91505092915050565b600080600060608486031215613cf957613cf8613948565b5b6000613d0786828701613ae3565b9350506020613d1886828701613ae3565b9250506040613d2986828701613a2e565b9150509250925092565b600080fd5b600080fd5b60008083601f840112613d5357613d52613b62565b5b8235905067ffffffffffffffff811115613d7057613d6f613d33565b5b602083019150836020820283011115613d8c57613d8b613d38565b5b9250929050565b60008060208385031215613daa57613da9613948565b5b600083013567ffffffffffffffff811115613dc857613dc761394d565b5b613dd485828601613d3d565b92509250509250929050565b600060208284031215613df657613df5613948565b5b6000613e0484828501613ae3565b91505092915050565b613e16816139d7565b8114613e2157600080fd5b50565b600081359050613e3381613e0d565b92915050565b600060208284031215613e4f57613e4e613948565b5b6000613e5d84828501613e24565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613e9b81613a0d565b82525050565b6000613ead8383613e92565b60208301905092915050565b6000602082019050919050565b6000613ed182613e66565b613edb8185613e71565b9350613ee683613e82565b8060005b83811015613f17578151613efe8882613ea1565b9750613f0983613eb9565b925050600181019050613eea565b5085935050505092915050565b60006020820190508181036000830152613f3e8184613ec6565b905092915050565b60008060408385031215613f5d57613f5c613948565b5b6000613f6b85828601613ae3565b9250506020613f7c85828601613e24565b9150509250929050565b600067ffffffffffffffff821115613fa157613fa0613b6c565b5b613faa826138d2565b9050602081019050919050565b6000613fca613fc584613f86565b613bcc565b905082815260208101848484011115613fe657613fe5613b67565b5b613ff1848285613c18565b509392505050565b600082601f83011261400e5761400d613b62565b5b813561401e848260208601613fb7565b91505092915050565b6000806000806080858703121561404157614040613948565b5b600061404f87828801613ae3565b945050602061406087828801613ae3565b935050604061407187828801613a2e565b925050606085013567ffffffffffffffff8111156140925761409161394d565b5b61409e87828801613ff9565b91505092959194509250565b6000806000604084860312156140c3576140c2613948565b5b600084013567ffffffffffffffff8111156140e1576140e061394d565b5b6140ed86828701613d3d565b9350935050602061410086828701613ae3565b9150509250925092565b6000806040838503121561412157614120613948565b5b600061412f85828601613a2e565b925050602061414085828601613a2e565b9150509250929050565b6000806040838503121561416157614160613948565b5b600061416f85828601613ae3565b925050602061418085828601613ae3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806141d157607f821691505b6020821081036141e4576141e361418a565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000614246602c8361388e565b9150614251826141ea565b604082019050919050565b6000602082019050818103600083015261427581614239565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006142d860218361388e565b91506142e38261427c565b604082019050919050565b60006020820190508181036000830152614307816142cb565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b600061436a60388361388e565b91506143758261430e565b604082019050919050565b600060208201905081810360008301526143998161435d565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006143d660208361388e565b91506143e1826143a0565b602082019050919050565b60006020820190508181036000830152614405816143c9565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b600061446860318361388e565b91506144738261440c565b604082019050919050565b600060208201905081810360008301526144978161445b565b9050919050565b7f5075626c6963206d696e74696e672069732064697361626c6564000000000000600082015250565b60006144d4601a8361388e565b91506144df8261449e565b602082019050919050565b60006020820190508181036000830152614503816144c7565b9050919050565b7f436f6e7472616374732063616e6e6f74206d696e740000000000000000000000600082015250565b600061454060158361388e565b915061454b8261450a565b602082019050919050565b6000602082019050818103600083015261456f81614533565b9050919050565b7f546f74616c20737570706c792072656163686564000000000000000000000000600082015250565b60006145ac60148361388e565b91506145b782614576565b602082019050919050565b600060208201905081810360008301526145db8161459f565b9050919050565b7f4e6f7420656e6f7567682066756e647300000000000000000000000000000000600082015250565b600061461860108361388e565b9150614623826145e2565b602082019050919050565b600060208201905081810360008301526146478161460b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061468882613a0d565b915061469383613a0d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156146c8576146c761464e565b5b828201905092915050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b600061472f60298361388e565b915061473a826146d3565b604082019050919050565b6000602082019050818103600083015261475e81614722565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b60006147c1602a8361388e565b91506147cc82614765565b604082019050919050565b600060208201905081810360008301526147f0816147b4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061483182613a0d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036148635761486261464e565b5b600182019050919050565b600081905092915050565b600061488482613883565b61488e818561486e565b935061489e81856020860161389f565b80840191505092915050565b7f7b2274726169745f74797065223a220000000000000000000000000000000000600082015250565b60006148e0600f8361486e565b91506148eb826148aa565b600f82019050919050565b60008190508160005260206000209050919050565b60008154614918816141b9565b614922818661486e565b9450600182166000811461493d576001811461494e57614981565b60ff19831686528186019350614981565b614957856148f6565b60005b838110156149795781548189015260018201915060208101905061495a565b838801955050505b50505092915050565b7f222c202276616c7565223a220000000000000000000000000000000000000000600082015250565b60006149c0600c8361486e565b91506149cb8261498a565b600c82019050919050565b7f227d000000000000000000000000000000000000000000000000000000000000600082015250565b6000614a0c60028361486e565b9150614a17826149d6565b600282019050919050565b6000614a2e8287614879565b9150614a39826148d3565b9150614a45828661490b565b9150614a50826149b3565b9150614a5c828561490b565b9150614a67826149ff565b9150614a738284614879565b915081905095945050505050565b6000614a8c82613a0d565b9150614a9783613a0d565b925082821015614aaa57614aa961464e565b5b828203905092915050565b7f2c7b2274726169745f74797065223a2200000000000000000000000000000000600082015250565b6000614aeb60108361486e565b9150614af682614ab5565b601082019050919050565b7f44796e616d6963204d6f6e74686c792054726169740000000000000000000000600082015250565b6000614b3760158361486e565b9150614b4282614b01565b601582019050919050565b6000614b598285614879565b9150614b6482614ade565b9150614b6f82614b2a565b9150614b7a826149b3565b9150614b86828461490b565b9150614b91826149ff565b91508190509392505050565b7f466f756e64657273204172740000000000000000000000000000000000000000600082015250565b6000614bd3600c8361486e565b9150614bde82614b9d565b600c82019050919050565b6000614bf58285614879565b9150614c0082614ade565b9150614c0b82614bc6565b9150614c16826149b3565b9150614c228284614879565b9150614c2d826149ff565b91508190509392505050565b7f222c20226e66745f75726c223a20220000000000000000000000000000000000600082015250565b6000614c6f600f8361486e565b9150614c7a82614c39565b600f82019050919050565b7f222c2022696d616765223a202200000000000000000000000000000000000000600082015250565b6000614cbb600d8361486e565b9150614cc682614c85565b600d82019050919050565b7f222c2022616e696d6174696f6e5f75726c223a20220000000000000000000000600082015250565b6000614d0760158361486e565b9150614d1282614cd1565b601582019050919050565b6000614d2882614c62565b9150614d34828761490b565b9150614d408286614879565b9150614d4b82614cae565b9150614d57828561490b565b9150614d6282614cfa565b9150614d6e828461490b565b915081905095945050505050565b7f7b226e616d65223a220000000000000000000000000000000000000000000000600082015250565b6000614db260098361486e565b9150614dbd82614d7c565b600982019050919050565b7f2023000000000000000000000000000000000000000000000000000000000000600082015250565b6000614dfe60028361486e565b9150614e0982614dc8565b600282019050919050565b7f222c202261747472696275746573223a205b0000000000000000000000000000600082015250565b6000614e4a60128361486e565b9150614e5582614e14565b601282019050919050565b7f5d207d0000000000000000000000000000000000000000000000000000000000600082015250565b6000614e9660038361486e565b9150614ea182614e60565b600382019050919050565b6000614eb782614da5565b9150614ec3828761490b565b9150614ece82614df1565b9150614eda8286614879565b9150614ee68285614879565b9150614ef182614e3d565b9150614efd8284614879565b9150614f0882614e89565b915081905095945050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b6000614f4c601d8361486e565b9150614f5782614f16565b601d82019050919050565b6000614f6d82614f3f565b9150614f798284614879565b915081905092915050565b6000614f8f82613a0d565b9150614f9a83613a0d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614fd357614fd261464e565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061501882613a0d565b915061502383613a0d565b92508261503357615032614fde565b5b828204905092915050565b6000819050919050565b61505961505482613a0d565b61503e565b82525050565b600061506b8288615048565b60208201915061507b8287615048565b60208201915061508b8286615048565b60208201915061509b8285615048565b6020820191506150ab8284615048565b6020820191508190509695505050505050565b60006150c982613a0d565b91506150d483613a0d565b9250826150e4576150e3614fde565b5b828206905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061514b60268361388e565b9150615156826150ef565b604082019050919050565b6000602082019050818103600083015261517a8161513e565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b60006151dd602c8361388e565b91506151e882615181565b604082019050919050565b6000602082019050818103600083015261520c816151d0565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b600061526f60258361388e565b915061527a82615213565b604082019050919050565b6000602082019050818103600083015261529e81615262565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061530160248361388e565b915061530c826152a5565b604082019050919050565b60006020820190508181036000830152615330816152f4565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b600061536d601d8361388e565b915061537882615337565b602082019050919050565b6000602082019050818103600083015261539c81615360565b9050919050565b600081905092915050565b50565b60006153be6000836153a3565b91506153c9826153ae565b600082019050919050565b60006153df826153b1565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000615445603a8361388e565b9150615450826153e9565b604082019050919050565b6000602082019050818103600083015261547481615438565b9050919050565b600061ffff82169050919050565b60008160f01b9050919050565b60006154a182615489565b9050919050565b6154b96154b48261547b565b615496565b82525050565b60006154cb8288615048565b6020820191506154db8287615048565b6020820191506154eb8286615048565b6020820191506154fb82856154a8565b60028201915061550b8284615048565b6020820191508190509695505050505050565b600061552a8288615048565b60208201915061553a8287615048565b60208201915061554a8286615048565b60208201915061555a8285615048565b60208201915061556a82846154a8565b6002820191508190509695505050505050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006155b360208361388e565b91506155be8261557d565b602082019050919050565b600060208201905081810360008301526155e2816155a6565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b600061561f601c8361388e565b915061562a826155e9565b602082019050919050565b6000602082019050818103600083015261564e81615612565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b600061568b60198361388e565b915061569682615655565b602082019050919050565b600060208201905081810360008301526156ba8161567e565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b600061571d60328361388e565b9150615728826156c1565b604082019050919050565b6000602082019050818103600083015261574c81615710565b9050919050565b600081519050919050565b600082825260208201905092915050565b600061577a82615753565b615784818561575e565b935061579481856020860161389f565b61579d816138d2565b840191505092915050565b60006080820190506157bd6000830187613aa2565b6157ca6020830186613aa2565b6157d76040830185613b38565b81810360608301526157e9818461576f565b905095945050505050565b6000815190506158038161397e565b92915050565b60006020828403121561581f5761581e613948565b5b600061582d848285016157f4565b9150509291505056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220549a5d8b82652b5654885a9694e61a4845c2eb10678ced3d37f623730514431f64736f6c634300080e003300000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000003a00000000000000000000000000000000000000000000000001bc16d674ec8000000000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000144000000000000000000000000000000000000000000000000000000000000000124c41474f2050617373204f6666696369616c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005e4c41474f20776f726b73206469726563746c792077697468206172746973747320746f20636f6d6d697373696f6e206f726967696e616c204e465473206578636c75736976656c7920666f72204c41474f2050617373206d656d626572730000000000000000000000000000000000000000000000000000000000000000006a68747470733a2f2f7265732e636c6f7564696e6172792e636f6d2f6c61676f2f696d6167652f75706c6f61642f76313635343138373537352f4c61676f2532304d696e74253230466f756e6465722532304172742f47726f75705f31345f325f7168396736732e73766700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007368747470733a2f2f7265732e636c6f7564696e6172792e636f6d2f6c61676f2f766964656f2f75706c6f61642f76313635333034383130392f4c61676f2532304e46542532304172742f3232303532305f4c41474f5f466f756e646572735f3130383078313038305f6f6b617871702e6d703400000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a68747470733a2f2f6d696e742e6c61676f6672616d652e636f6d2f6d792d6e66743f746f6b656e49643d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044c41474f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000058000000000000000000000000000000000000000000000000000000000000008e0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000b4672616d65205368617065000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b4672616d6520436f6c6f7200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000094163636573736f727900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000653717561726500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007526f756e646564000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000005426c61636b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005576869746500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074e61747572616c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000044e6f6e6500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000643616d657261000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002c0000000000000000000000000000000000000000000000000000000000000000a496e6e6f766174696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001241727469737420436f6d6d697373696f6e73000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064576656e74730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4172742054726176656c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000134e4654204e6574776f726b205374616b696e67000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011436f6e63696572676520536572766963650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009496e737572616e63650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a47656e32204672616d650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000002c00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000054000000000000000000000000000000000000000000000000000000000000005c0000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000359657300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000a3320706572207965617200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a3620706572207965617200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b31322070657220796561720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000a3120706572207965617200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a3320706572207965617200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a34207065722079656172000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000a3120706572207965617200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a3220706572207965617200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a332070657220796561720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000359657300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000035965730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000011496e7375726520436f6c6c656374696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000359657300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000bb80000000000000000000000000000000000000000000000000000000000001b5800000000000000000000000000000000000000000000000000000000000004b000000000000000000000000000000000000000000000000000000000000000c80000000000000000000000000000000000000000000000000000000000000dac00000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000001f4000000000000000000000000000000000000000000000000000000000000012c000000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002c00000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000003800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000001770000000000000000000000000000000000000000000000000000000000000245400000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000177000000000000000000000000000000000000000000000000000000000000023280000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000013880000000000000000000000000000000000000000000000000000000000002328000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000002710
Deployed Bytecode
0x60806040526004361061023a5760003560e01c8063715018a61161012e578063aba83150116100ab578063d5abeb011161006f578063d5abeb0114610839578063dde3dd2214610864578063e0d283e61461088d578063e985e9c5146108a4578063f2fde38b146108e15761023a565b8063aba8315014610756578063b88d4fde14610781578063c47f0027146107aa578063c87b56dd146107d3578063c967dd1c146108105761023a565b80638da5cb5b116100f25780638da5cb5b1461068357806390c3f38f146106ae57806395d89b41146106d757806398bdf6f514610702578063a22cb4651461072d5761023a565b8063715018a6146105b05780637284e416146105c75780637ff9b596146105f2578063818668d71461061d5780638462151c146106465761023a565b806328e56c5e116101bc57806351e379ad1161018057806351e379ad146104c85780636352211e146104e45780636a61e5fc146105215780636f8b44b01461054a57806370a08231146105735761023a565b806328e56c5e1461040b5780632abff1f214610434578063397b5b241461045d5780633ccfd60b1461048857806342842e0e1461049f5761023a565b80630f4161aa116102035780630f4161aa14610338578063131cdcf21461036357806318160ddd1461038e5780631e4c6972146103b957806323b872dd146103e25761023a565b80628bfb001461023f57806301ffc9a71461026a57806306fdde03146102a7578063081812fc146102d2578063095ea7b31461030f575b600080fd5b34801561024b57600080fd5b5061025461090a565b604051610261919061391c565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c91906139aa565b610998565b60405161029e91906139f2565b60405180910390f35b3480156102b357600080fd5b506102bc610a7a565b6040516102c9919061391c565b60405180910390f35b3480156102de57600080fd5b506102f960048036038101906102f49190613a43565b610b0c565b6040516103069190613ab1565b60405180910390f35b34801561031b57600080fd5b5061033660048036038101906103319190613af8565b610b91565b005b34801561034457600080fd5b5061034d610ca8565b60405161035a91906139f2565b60405180910390f35b34801561036f57600080fd5b50610378610cbb565b604051610385919061391c565b60405180910390f35b34801561039a57600080fd5b506103a3610d49565b6040516103b09190613b47565b60405180910390f35b3480156103c557600080fd5b506103e060048036038101906103db9190613c97565b610d53565b005b3480156103ee57600080fd5b5061040960048036038101906104049190613ce0565b610de9565b005b34801561041757600080fd5b50610432600480360381019061042d9190613c97565b610e49565b005b34801561044057600080fd5b5061045b60048036038101906104569190613c97565b610edf565b005b34801561046957600080fd5b50610472610f75565b60405161047f919061391c565b60405180910390f35b34801561049457600080fd5b5061049d611003565b005b3480156104ab57600080fd5b506104c660048036038101906104c19190613ce0565b611092565b005b6104e260048036038101906104dd9190613d93565b6110b2565b005b3480156104f057600080fd5b5061050b60048036038101906105069190613a43565b61125b565b6040516105189190613ab1565b60405180910390f35b34801561052d57600080fd5b5061054860048036038101906105439190613a43565b61130c565b005b34801561055657600080fd5b50610571600480360381019061056c9190613a43565b611392565b005b34801561057f57600080fd5b5061059a60048036038101906105959190613de0565b611418565b6040516105a79190613b47565b60405180910390f35b3480156105bc57600080fd5b506105c56114cf565b005b3480156105d357600080fd5b506105dc611557565b6040516105e9919061391c565b60405180910390f35b3480156105fe57600080fd5b506106076115e5565b6040516106149190613b47565b60405180910390f35b34801561062957600080fd5b50610644600480360381019061063f9190613e39565b6115eb565b005b34801561065257600080fd5b5061066d60048036038101906106689190613de0565b611684565b60405161067a9190613f24565b60405180910390f35b34801561068f57600080fd5b506106986117da565b6040516106a59190613ab1565b60405180910390f35b3480156106ba57600080fd5b506106d560048036038101906106d09190613c97565b611804565b005b3480156106e357600080fd5b506106ec61189a565b6040516106f9919061391c565b60405180910390f35b34801561070e57600080fd5b5061071761192c565b6040516107249190613b47565b60405180910390f35b34801561073957600080fd5b50610754600480360381019061074f9190613f46565b611932565b005b34801561076257600080fd5b5061076b611948565b604051610778919061391c565b60405180910390f35b34801561078d57600080fd5b506107a860048036038101906107a39190614027565b6119d6565b005b3480156107b657600080fd5b506107d160048036038101906107cc9190613c97565b611a38565b005b3480156107df57600080fd5b506107fa60048036038101906107f59190613a43565b611ace565b604051610807919061391c565b60405180910390f35b34801561081c57600080fd5b50610837600480360381019061083291906140aa565b611f88565b005b34801561084557600080fd5b5061084e6120a5565b60405161085b9190613b47565b60405180910390f35b34801561087057600080fd5b5061088b6004803603810190610886919061410a565b6120ab565b005b34801561089957600080fd5b506108a26122ae565b005b3480156108b057600080fd5b506108cb60048036038101906108c6919061414a565b6123f2565b6040516108d891906139f2565b60405180910390f35b3480156108ed57600080fd5b5061090860048036038101906109039190613de0565b612486565b005b60078054610917906141b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610943906141b9565b80156109905780601f1061096557610100808354040283529160200191610990565b820191906000526020600020905b81548152906001019060200180831161097357829003601f168201915b505050505081565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610a6357507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610a735750610a728261257d565b5b9050919050565b606060008054610a89906141b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610ab5906141b9565b8015610b025780601f10610ad757610100808354040283529160200191610b02565b820191906000526020600020905b815481529060010190602001808311610ae557829003601f168201915b5050505050905090565b6000610b17826125e7565b610b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4d9061425c565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610b9c8261125b565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c03906142ee565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610c2b612653565b73ffffffffffffffffffffffffffffffffffffffff161480610c5a5750610c5981610c54612653565b6123f2565b5b610c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9090614380565b60405180910390fd5b610ca3838361265b565b505050565b600f60009054906101000a900460ff1681565b600e8054610cc8906141b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610cf4906141b9565b8015610d415780601f10610d1657610100808354040283529160200191610d41565b820191906000526020600020905b815481529060010190602001808311610d2457829003601f168201915b505050505081565b6000600954905090565b610d5b612653565b73ffffffffffffffffffffffffffffffffffffffff16610d796117da565b73ffffffffffffffffffffffffffffffffffffffff1614610dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc6906143ec565b60405180910390fd5b80600e9080519060200190610de592919061373c565b5050565b610dfa610df4612653565b82612714565b610e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e309061447e565b60405180910390fd5b610e448383836127f2565b505050565b610e51612653565b73ffffffffffffffffffffffffffffffffffffffff16610e6f6117da565b73ffffffffffffffffffffffffffffffffffffffff1614610ec5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebc906143ec565b60405180910390fd5b80600d9080519060200190610edb92919061373c565b5050565b610ee7612653565b73ffffffffffffffffffffffffffffffffffffffff16610f056117da565b73ffffffffffffffffffffffffffffffffffffffff1614610f5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f52906143ec565b60405180910390fd5b80600c9080519060200190610f7192919061373c565b5050565b600d8054610f82906141b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610fae906141b9565b8015610ffb5780601f10610fd057610100808354040283529160200191610ffb565b820191906000526020600020905b815481529060010190602001808311610fde57829003601f168201915b505050505081565b61100b612653565b73ffffffffffffffffffffffffffffffffffffffff166110296117da565b73ffffffffffffffffffffffffffffffffffffffff161461107f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611076906143ec565b60405180910390fd5b61109061108a6117da565b47612a58565b565b6110ad838383604051806020016040528060008152506119d6565b505050565b600f60009054906101000a900460ff16611101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f8906144ea565b60405180910390fd5b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461116f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116690614556565b60405180910390fd5b600b54600954106111b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ac906145c2565b60405180910390fd5b34600a5411156111fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f19061462e565b60405180910390fd5b60016009600082825461120d919061467d565b92505081905550818160186000600954815260200190815260200160002091906112389291906137c2565b50611244600954612b4c565b61125761124f612653565b600954612e49565b5050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fa90614745565b60405180910390fd5b80915050919050565b611314612653565b73ffffffffffffffffffffffffffffffffffffffff166113326117da565b73ffffffffffffffffffffffffffffffffffffffff1614611388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137f906143ec565b60405180910390fd5b80600a8190555050565b61139a612653565b73ffffffffffffffffffffffffffffffffffffffff166113b86117da565b73ffffffffffffffffffffffffffffffffffffffff161461140e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611405906143ec565b60405180910390fd5b80600b8190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147f906147d7565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114d7612653565b73ffffffffffffffffffffffffffffffffffffffff166114f56117da565b73ffffffffffffffffffffffffffffffffffffffff161461154b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611542906143ec565b60405180910390fd5b6115556000613022565b565b60088054611564906141b9565b80601f0160208091040260200160405190810160405280929190818152602001828054611590906141b9565b80156115dd5780601f106115b2576101008083540402835291602001916115dd565b820191906000526020600020905b8154815290600101906020018083116115c057829003601f168201915b505050505081565b600a5481565b6115f3612653565b73ffffffffffffffffffffffffffffffffffffffff166116116117da565b73ffffffffffffffffffffffffffffffffffffffff1614611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165e906143ec565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b6060600061169183611418565b9050600081036116ed57600167ffffffffffffffff8111156116b6576116b5613b6c565b5b6040519080825280602002602001820160405280156116e45781602001602082028036833780820191505090505b509150506117d5565b60008167ffffffffffffffff81111561170957611708613b6c565b5b6040519080825280602002602001820160405280156117375781602001602082028036833780820191505090505b509050600080600190505b6001600954611751919061467d565b8110156117cd578573ffffffffffffffffffffffffffffffffffffffff166117788261125b565b73ffffffffffffffffffffffffffffffffffffffff16036117c257808383815181106117a7576117a66147f7565b5b60200260200101818152505081806117be90614826565b9250505b806001019050611742565b508193505050505b919050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61180c612653565b73ffffffffffffffffffffffffffffffffffffffff1661182a6117da565b73ffffffffffffffffffffffffffffffffffffffff1614611880576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611877906143ec565b60405180910390fd5b806008908051906020019061189692919061373c565b5050565b6060600180546118a9906141b9565b80601f01602080910402602001604051908101604052809291908181526020018280546118d5906141b9565b80156119225780601f106118f757610100808354040283529160200191611922565b820191906000526020600020905b81548152906001019060200180831161190557829003601f168201915b5050505050905090565b60095481565b61194461193d612653565b83836130e8565b5050565b600c8054611955906141b9565b80601f0160208091040260200160405190810160405280929190818152602001828054611981906141b9565b80156119ce5780601f106119a3576101008083540402835291602001916119ce565b820191906000526020600020905b8154815290600101906020018083116119b157829003601f168201915b505050505081565b6119e76119e1612653565b83612714565b611a26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1d9061447e565b60405180910390fd5b611a3284848484613254565b50505050565b611a40612653565b73ffffffffffffffffffffffffffffffffffffffff16611a5e6117da565b73ffffffffffffffffffffffffffffffffffffffff1614611ab4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aab906143ec565b60405180910390fd5b8060079080519060200190611aca92919061373c565b5050565b6060600060405180602001604052806000815250905060005b6019600085815260200190815260200160002080549050811015611ce7578160136008601960008881526020019081526020016000208481548110611b2f57611b2e6147f7565b5b90600052602060002090601091828204019190066002029054906101000a900461ffff1661ffff16901c60ff1681548110611b6d57611b6c6147f7565b5b9060005260206000200160146008601960008981526020019081526020016000208581548110611ba057611b9f6147f7565b5b90600052602060002090601091828204019190066002029054906101000a900461ffff1661ffff16901c60ff1681548110611bde57611bdd6147f7565b5b90600052602060002001601960008881526020019081526020016000208481548110611c0d57611c0c6147f7565b5b90600052602060002090601091828204019190066002029054906101000a900461ffff1660ff1681548110611c4557611c446147f7565b5b9060005260206000200160196000888152602001908152602001600020805490508414611ca7576040518060400160405280600181526020017f2c00000000000000000000000000000000000000000000000000000000000000815250611cb8565b604051806020016040528060008152505b604051602001611ccb9493929190614a22565b6040516020818303038152906040529150806001019050611ae7565b5060005b601180549050811015611e13578160118281548110611d0d57611d0c6147f7565b5b9060005260206000200160128381548110611d2b57611d2a6147f7565b5b90600052602060002001601860008881526020019081526020016000208481548110611d5a57611d596147f7565b5b906000526020600020015481548110611d7657611d756147f7565b5b906000526020600020016001601180549050611d929190614a81565b8414611dd3576040518060400160405280600181526020017f2c00000000000000000000000000000000000000000000000000000000000000815250611de4565b604051806020016040528060008152505b604051602001611df79493929190614a22565b6040516020818303038152906040529150806001019050611ceb565b50601b600084815260200190815260200160002060009054906101000a900460ff1615611e9f57806013601c600086815260200190815260200160002060009054906101000a900460ff1660ff1681548110611e7257611e716147f7565b5b90600052602060002001604051602001611e8d929190614b4d565b60405160208183030381529060405290505b80611ecc601a600086815260200190815260200160002060009054906101000a900460ff1660ff166132b0565b604051602001611edd929190614be9565b60405160208183030381529060405290506000600e611efb856132b0565b600c600d604051602001611f129493929190614d1d565b60405160208183030381529060405290506000611f5c6007611f33876132b0565b8486604051602001611f489493929190614eac565b604051602081830303815290604052613410565b604051602001611f6c9190614f62565b6040516020818303038152906040529050809350505050919050565b611f90612653565b73ffffffffffffffffffffffffffffffffffffffff16611fae6117da565b73ffffffffffffffffffffffffffffffffffffffff1614612004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ffb906143ec565b60405180910390fd5b600b546009541061204a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612041906145c2565b60405180910390fd5b60016009600082825461205d919061467d565b92505081905550828260186000600954815260200190815260200160002091906120889291906137c2565b50612094600954612b4c565b6120a081600954612e49565b505050565b600b5481565b6120b3612653565b73ffffffffffffffffffffffffffffffffffffffff166120d16117da565b73ffffffffffffffffffffffffffffffffffffffff1614612127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211e906143ec565b60405180910390fd5b60005b6016805490508110156122a957600061271060095460168481548110612153576121526147f7565b5b90600052602060002001546121689190614f84565b612172919061500d565b90508284826121819190614f84565b61218b919061500d565b905060005b8181101561229c5760006001600954444260105488876040516020016121ba95949392919061505f565b6040516020818303038152906040528051906020012060001c6121dd91906150be565b6121e7919061467d565b9050601b600082815260200190815260200160002060009054906101000a900460ff16612290576001601b600083815260200190815260200160002060006101000a81548160ff02191690831515021790555083601c600083815260200190815260200160002060006101000a81548160ff021916908360ff160217905550601d8190806001815401808255809150506001900390600052602060002001600090919091909150555b81600101915050612190565b508160010191505061212a565b505050565b6122b6612653565b73ffffffffffffffffffffffffffffffffffffffff166122d46117da565b73ffffffffffffffffffffffffffffffffffffffff161461232a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612321906143ec565b60405180910390fd5b60005b601d8054905081101561238f576000601b6000601d8481548110612354576123536147f7565b5b9060005260206000200154815260200190815260200160002060006101000a81548160ff02191690831515021790555080600101905061232d565b50600067ffffffffffffffff8111156123ab576123aa613b6c565b5b6040519080825280602002602001820160405280156123d95781602001602082028036833780820191505090505b50601d90805190602001906123ef929190613819565b50565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61248e612653565b73ffffffffffffffffffffffffffffffffffffffff166124ac6117da565b73ffffffffffffffffffffffffffffffffffffffff1614612502576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f9906143ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256890615161565b60405180910390fd5b61257a81613022565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166126ce8361125b565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061271f826125e7565b61275e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612755906151f3565b60405180910390fd5b60006127698361125b565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806127ab57506127aa81856123f2565b5b806127e957508373ffffffffffffffffffffffffffffffffffffffff166127d184610b0c565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166128128261125b565b73ffffffffffffffffffffffffffffffffffffffff1614612868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285f90615285565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128ce90615317565b60405180910390fd5b6128e2838383613588565b6128ed60008261265b565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461293d9190614a81565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612994919061467d565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612a5383838361358d565b505050565b80471015612a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9290615383565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612ac1906153d4565b60006040518083038185875af1925050503d8060008114612afe576040519150601f19603f3d011682016040523d82523d6000602084013e612b03565b606091505b5050905080612b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3e9061545b565b60405180910390fd5b505050565b600a601054612b5b91906150be565b601a600083815260200190815260200160002060006101000a81548160ff021916908360ff16021790555060005b6015805490508161ffff161015612e455760158161ffff1681548110612bb257612bb16147f7565b5b90600052602060002090601091828204019190066002029054906101000a900461ffff1661ffff16612710444260105485600143612bf09190614a81565b4060001c604051602001612c089594939291906154bf565b6040516020818303038152906040528051906020012060001c612c2b91906150be565b1015612e3a57600160178261ffff1681548110612c4b57612c4a6147f7565b5b906000526020600020018054905003612cc6576019600083815260200190815260200160002060088261ffff16901b90806001815401808255809150506001900390600052602060002090601091828204019190066002029091909190916101000a81548161ffff021916908361ffff160217905550612e39565b612710600143612cd69190614a81565b4060001c601054444285604051602001612cf495949392919061551e565b6040516020818303038152906040528051906020012060001c612d1791906150be565b60108190555060005b60178261ffff1681548110612d3857612d376147f7565b5b90600052602060002001805490508161ffff161015612e375760178261ffff1681548110612d6957612d686147f7565b5b906000526020600020018161ffff1681548110612d8957612d886147f7565b5b90600052602060002090601091828204019190066002029054906101000a900461ffff1661ffff1660105411612e2c57600081905060088361ffff16901b81179050601960008581526020019081526020016000208190806001815401808255809150506001900390600052602060002090601091828204019190066002029091909190916101000a81548161ffff021916908361ffff16021790555050612e37565b806001019050612d20565b505b5b806001019050612b89565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eaf906155c9565b60405180910390fd5b612ec1816125e7565b15612f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef890615635565b60405180910390fd5b612f0d60008383613588565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f5d919061467d565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461301e6000838361358d565b5050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161314d906156a1565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161324791906139f2565b60405180910390a3505050565b61325f8484846127f2565b61326b84848484613592565b6132aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132a190615733565b60405180910390fd5b50505050565b6060600082036132f7576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061340b565b600082905060005b6000821461332957808061331290614826565b915050600a82613322919061500d565b91506132ff565b60008167ffffffffffffffff81111561334557613344613b6c565b5b6040519080825280601f01601f1916602001820160405280156133775781602001600182028036833780820191505090505b5090505b60008514613404576001826133909190614a81565b9150600a8561339f91906150be565b60306133ab919061467d565b60f81b8183815181106133c1576133c06147f7565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856133fd919061500d565b945061337b565b8093505050505b919050565b6060600082510361343257604051806020016040528060008152509050613583565b60006040518060600160405280604081526020016158376040913990506000600360028551613461919061467d565b61346b919061500d565b60046134779190614f84565b90506000602082613488919061467d565b67ffffffffffffffff8111156134a1576134a0613b6c565b5b6040519080825280601f01601f1916602001820160405280156134d35781602001600182028036833780820191505090505b509050818152600183018586518101602084015b81831015613542576003830192508251603f8160121c168501518253600182019150603f81600c1c168501518253600182019150603f8160061c168501518253600182019150603f81168501518253600182019150506134e7565b60038951066001811461355c576002811461356c57613577565b613d3d60f01b6002830352613577565b603d60f81b60018303525b50505050508093505050505b919050565b505050565b505050565b60006135b38473ffffffffffffffffffffffffffffffffffffffff16613719565b1561370c578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026135dc612653565b8786866040518563ffffffff1660e01b81526004016135fe94939291906157a8565b6020604051808303816000875af192505050801561363a57506040513d601f19601f820116820180604052508101906136379190615809565b60015b6136bc573d806000811461366a576040519150601f19603f3d011682016040523d82523d6000602084013e61366f565b606091505b5060008151036136b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136ab90615733565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050613711565b600190505b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b828054613748906141b9565b90600052602060002090601f01602090048101928261376a57600085556137b1565b82601f1061378357805160ff19168380011785556137b1565b828001600101855582156137b1579182015b828111156137b0578251825591602001919060010190613795565b5b5090506137be9190613866565b5090565b828054828255906000526020600020908101928215613808579160200282015b8281111561380757823561ffff16829061ffff169055916020019190600101906137e2565b5b5090506138159190613866565b5090565b828054828255906000526020600020908101928215613855579160200282015b82811115613854578251825591602001919060010190613839565b5b5090506138629190613866565b5090565b5b8082111561387f576000816000905550600101613867565b5090565b600081519050919050565b600082825260208201905092915050565b60005b838110156138bd5780820151818401526020810190506138a2565b838111156138cc576000848401525b50505050565b6000601f19601f8301169050919050565b60006138ee82613883565b6138f8818561388e565b935061390881856020860161389f565b613911816138d2565b840191505092915050565b6000602082019050818103600083015261393681846138e3565b905092915050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61398781613952565b811461399257600080fd5b50565b6000813590506139a48161397e565b92915050565b6000602082840312156139c0576139bf613948565b5b60006139ce84828501613995565b91505092915050565b60008115159050919050565b6139ec816139d7565b82525050565b6000602082019050613a0760008301846139e3565b92915050565b6000819050919050565b613a2081613a0d565b8114613a2b57600080fd5b50565b600081359050613a3d81613a17565b92915050565b600060208284031215613a5957613a58613948565b5b6000613a6784828501613a2e565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613a9b82613a70565b9050919050565b613aab81613a90565b82525050565b6000602082019050613ac66000830184613aa2565b92915050565b613ad581613a90565b8114613ae057600080fd5b50565b600081359050613af281613acc565b92915050565b60008060408385031215613b0f57613b0e613948565b5b6000613b1d85828601613ae3565b9250506020613b2e85828601613a2e565b9150509250929050565b613b4181613a0d565b82525050565b6000602082019050613b5c6000830184613b38565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613ba4826138d2565b810181811067ffffffffffffffff82111715613bc357613bc2613b6c565b5b80604052505050565b6000613bd661393e565b9050613be28282613b9b565b919050565b600067ffffffffffffffff821115613c0257613c01613b6c565b5b613c0b826138d2565b9050602081019050919050565b82818337600083830152505050565b6000613c3a613c3584613be7565b613bcc565b905082815260208101848484011115613c5657613c55613b67565b5b613c61848285613c18565b509392505050565b600082601f830112613c7e57613c7d613b62565b5b8135613c8e848260208601613c27565b91505092915050565b600060208284031215613cad57613cac613948565b5b600082013567ffffffffffffffff811115613ccb57613cca61394d565b5b613cd784828501613c69565b91505092915050565b600080600060608486031215613cf957613cf8613948565b5b6000613d0786828701613ae3565b9350506020613d1886828701613ae3565b9250506040613d2986828701613a2e565b9150509250925092565b600080fd5b600080fd5b60008083601f840112613d5357613d52613b62565b5b8235905067ffffffffffffffff811115613d7057613d6f613d33565b5b602083019150836020820283011115613d8c57613d8b613d38565b5b9250929050565b60008060208385031215613daa57613da9613948565b5b600083013567ffffffffffffffff811115613dc857613dc761394d565b5b613dd485828601613d3d565b92509250509250929050565b600060208284031215613df657613df5613948565b5b6000613e0484828501613ae3565b91505092915050565b613e16816139d7565b8114613e2157600080fd5b50565b600081359050613e3381613e0d565b92915050565b600060208284031215613e4f57613e4e613948565b5b6000613e5d84828501613e24565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613e9b81613a0d565b82525050565b6000613ead8383613e92565b60208301905092915050565b6000602082019050919050565b6000613ed182613e66565b613edb8185613e71565b9350613ee683613e82565b8060005b83811015613f17578151613efe8882613ea1565b9750613f0983613eb9565b925050600181019050613eea565b5085935050505092915050565b60006020820190508181036000830152613f3e8184613ec6565b905092915050565b60008060408385031215613f5d57613f5c613948565b5b6000613f6b85828601613ae3565b9250506020613f7c85828601613e24565b9150509250929050565b600067ffffffffffffffff821115613fa157613fa0613b6c565b5b613faa826138d2565b9050602081019050919050565b6000613fca613fc584613f86565b613bcc565b905082815260208101848484011115613fe657613fe5613b67565b5b613ff1848285613c18565b509392505050565b600082601f83011261400e5761400d613b62565b5b813561401e848260208601613fb7565b91505092915050565b6000806000806080858703121561404157614040613948565b5b600061404f87828801613ae3565b945050602061406087828801613ae3565b935050604061407187828801613a2e565b925050606085013567ffffffffffffffff8111156140925761409161394d565b5b61409e87828801613ff9565b91505092959194509250565b6000806000604084860312156140c3576140c2613948565b5b600084013567ffffffffffffffff8111156140e1576140e061394d565b5b6140ed86828701613d3d565b9350935050602061410086828701613ae3565b9150509250925092565b6000806040838503121561412157614120613948565b5b600061412f85828601613a2e565b925050602061414085828601613a2e565b9150509250929050565b6000806040838503121561416157614160613948565b5b600061416f85828601613ae3565b925050602061418085828601613ae3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806141d157607f821691505b6020821081036141e4576141e361418a565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000614246602c8361388e565b9150614251826141ea565b604082019050919050565b6000602082019050818103600083015261427581614239565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006142d860218361388e565b91506142e38261427c565b604082019050919050565b60006020820190508181036000830152614307816142cb565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b600061436a60388361388e565b91506143758261430e565b604082019050919050565b600060208201905081810360008301526143998161435d565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006143d660208361388e565b91506143e1826143a0565b602082019050919050565b60006020820190508181036000830152614405816143c9565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b600061446860318361388e565b91506144738261440c565b604082019050919050565b600060208201905081810360008301526144978161445b565b9050919050565b7f5075626c6963206d696e74696e672069732064697361626c6564000000000000600082015250565b60006144d4601a8361388e565b91506144df8261449e565b602082019050919050565b60006020820190508181036000830152614503816144c7565b9050919050565b7f436f6e7472616374732063616e6e6f74206d696e740000000000000000000000600082015250565b600061454060158361388e565b915061454b8261450a565b602082019050919050565b6000602082019050818103600083015261456f81614533565b9050919050565b7f546f74616c20737570706c792072656163686564000000000000000000000000600082015250565b60006145ac60148361388e565b91506145b782614576565b602082019050919050565b600060208201905081810360008301526145db8161459f565b9050919050565b7f4e6f7420656e6f7567682066756e647300000000000000000000000000000000600082015250565b600061461860108361388e565b9150614623826145e2565b602082019050919050565b600060208201905081810360008301526146478161460b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061468882613a0d565b915061469383613a0d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156146c8576146c761464e565b5b828201905092915050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b600061472f60298361388e565b915061473a826146d3565b604082019050919050565b6000602082019050818103600083015261475e81614722565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b60006147c1602a8361388e565b91506147cc82614765565b604082019050919050565b600060208201905081810360008301526147f0816147b4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061483182613a0d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036148635761486261464e565b5b600182019050919050565b600081905092915050565b600061488482613883565b61488e818561486e565b935061489e81856020860161389f565b80840191505092915050565b7f7b2274726169745f74797065223a220000000000000000000000000000000000600082015250565b60006148e0600f8361486e565b91506148eb826148aa565b600f82019050919050565b60008190508160005260206000209050919050565b60008154614918816141b9565b614922818661486e565b9450600182166000811461493d576001811461494e57614981565b60ff19831686528186019350614981565b614957856148f6565b60005b838110156149795781548189015260018201915060208101905061495a565b838801955050505b50505092915050565b7f222c202276616c7565223a220000000000000000000000000000000000000000600082015250565b60006149c0600c8361486e565b91506149cb8261498a565b600c82019050919050565b7f227d000000000000000000000000000000000000000000000000000000000000600082015250565b6000614a0c60028361486e565b9150614a17826149d6565b600282019050919050565b6000614a2e8287614879565b9150614a39826148d3565b9150614a45828661490b565b9150614a50826149b3565b9150614a5c828561490b565b9150614a67826149ff565b9150614a738284614879565b915081905095945050505050565b6000614a8c82613a0d565b9150614a9783613a0d565b925082821015614aaa57614aa961464e565b5b828203905092915050565b7f2c7b2274726169745f74797065223a2200000000000000000000000000000000600082015250565b6000614aeb60108361486e565b9150614af682614ab5565b601082019050919050565b7f44796e616d6963204d6f6e74686c792054726169740000000000000000000000600082015250565b6000614b3760158361486e565b9150614b4282614b01565b601582019050919050565b6000614b598285614879565b9150614b6482614ade565b9150614b6f82614b2a565b9150614b7a826149b3565b9150614b86828461490b565b9150614b91826149ff565b91508190509392505050565b7f466f756e64657273204172740000000000000000000000000000000000000000600082015250565b6000614bd3600c8361486e565b9150614bde82614b9d565b600c82019050919050565b6000614bf58285614879565b9150614c0082614ade565b9150614c0b82614bc6565b9150614c16826149b3565b9150614c228284614879565b9150614c2d826149ff565b91508190509392505050565b7f222c20226e66745f75726c223a20220000000000000000000000000000000000600082015250565b6000614c6f600f8361486e565b9150614c7a82614c39565b600f82019050919050565b7f222c2022696d616765223a202200000000000000000000000000000000000000600082015250565b6000614cbb600d8361486e565b9150614cc682614c85565b600d82019050919050565b7f222c2022616e696d6174696f6e5f75726c223a20220000000000000000000000600082015250565b6000614d0760158361486e565b9150614d1282614cd1565b601582019050919050565b6000614d2882614c62565b9150614d34828761490b565b9150614d408286614879565b9150614d4b82614cae565b9150614d57828561490b565b9150614d6282614cfa565b9150614d6e828461490b565b915081905095945050505050565b7f7b226e616d65223a220000000000000000000000000000000000000000000000600082015250565b6000614db260098361486e565b9150614dbd82614d7c565b600982019050919050565b7f2023000000000000000000000000000000000000000000000000000000000000600082015250565b6000614dfe60028361486e565b9150614e0982614dc8565b600282019050919050565b7f222c202261747472696275746573223a205b0000000000000000000000000000600082015250565b6000614e4a60128361486e565b9150614e5582614e14565b601282019050919050565b7f5d207d0000000000000000000000000000000000000000000000000000000000600082015250565b6000614e9660038361486e565b9150614ea182614e60565b600382019050919050565b6000614eb782614da5565b9150614ec3828761490b565b9150614ece82614df1565b9150614eda8286614879565b9150614ee68285614879565b9150614ef182614e3d565b9150614efd8284614879565b9150614f0882614e89565b915081905095945050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b6000614f4c601d8361486e565b9150614f5782614f16565b601d82019050919050565b6000614f6d82614f3f565b9150614f798284614879565b915081905092915050565b6000614f8f82613a0d565b9150614f9a83613a0d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614fd357614fd261464e565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061501882613a0d565b915061502383613a0d565b92508261503357615032614fde565b5b828204905092915050565b6000819050919050565b61505961505482613a0d565b61503e565b82525050565b600061506b8288615048565b60208201915061507b8287615048565b60208201915061508b8286615048565b60208201915061509b8285615048565b6020820191506150ab8284615048565b6020820191508190509695505050505050565b60006150c982613a0d565b91506150d483613a0d565b9250826150e4576150e3614fde565b5b828206905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061514b60268361388e565b9150615156826150ef565b604082019050919050565b6000602082019050818103600083015261517a8161513e565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b60006151dd602c8361388e565b91506151e882615181565b604082019050919050565b6000602082019050818103600083015261520c816151d0565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b600061526f60258361388e565b915061527a82615213565b604082019050919050565b6000602082019050818103600083015261529e81615262565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061530160248361388e565b915061530c826152a5565b604082019050919050565b60006020820190508181036000830152615330816152f4565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b600061536d601d8361388e565b915061537882615337565b602082019050919050565b6000602082019050818103600083015261539c81615360565b9050919050565b600081905092915050565b50565b60006153be6000836153a3565b91506153c9826153ae565b600082019050919050565b60006153df826153b1565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000615445603a8361388e565b9150615450826153e9565b604082019050919050565b6000602082019050818103600083015261547481615438565b9050919050565b600061ffff82169050919050565b60008160f01b9050919050565b60006154a182615489565b9050919050565b6154b96154b48261547b565b615496565b82525050565b60006154cb8288615048565b6020820191506154db8287615048565b6020820191506154eb8286615048565b6020820191506154fb82856154a8565b60028201915061550b8284615048565b6020820191508190509695505050505050565b600061552a8288615048565b60208201915061553a8287615048565b60208201915061554a8286615048565b60208201915061555a8285615048565b60208201915061556a82846154a8565b6002820191508190509695505050505050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006155b360208361388e565b91506155be8261557d565b602082019050919050565b600060208201905081810360008301526155e2816155a6565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b600061561f601c8361388e565b915061562a826155e9565b602082019050919050565b6000602082019050818103600083015261564e81615612565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b600061568b60198361388e565b915061569682615655565b602082019050919050565b600060208201905081810360008301526156ba8161567e565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b600061571d60328361388e565b9150615728826156c1565b604082019050919050565b6000602082019050818103600083015261574c81615710565b9050919050565b600081519050919050565b600082825260208201905092915050565b600061577a82615753565b615784818561575e565b935061579481856020860161389f565b61579d816138d2565b840191505092915050565b60006080820190506157bd6000830187613aa2565b6157ca6020830186613aa2565b6157d76040830185613b38565b81810360608301526157e9818461576f565b905095945050505050565b6000815190506158038161397e565b92915050565b60006020828403121561581f5761581e613948565b5b600061582d848285016157f4565b9150509291505056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220549a5d8b82652b5654885a9694e61a4845c2eb10678ced3d37f623730514431f64736f6c634300080e0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000003a00000000000000000000000000000000000000000000000001bc16d674ec8000000000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000144000000000000000000000000000000000000000000000000000000000000000124c41474f2050617373204f6666696369616c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005e4c41474f20776f726b73206469726563746c792077697468206172746973747320746f20636f6d6d697373696f6e206f726967696e616c204e465473206578636c75736976656c7920666f72204c41474f2050617373206d656d626572730000000000000000000000000000000000000000000000000000000000000000006a68747470733a2f2f7265732e636c6f7564696e6172792e636f6d2f6c61676f2f696d6167652f75706c6f61642f76313635343138373537352f4c61676f2532304d696e74253230466f756e6465722532304172742f47726f75705f31345f325f7168396736732e73766700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007368747470733a2f2f7265732e636c6f7564696e6172792e636f6d2f6c61676f2f766964656f2f75706c6f61642f76313635333034383130392f4c61676f2532304e46542532304172742f3232303532305f4c41474f5f466f756e646572735f3130383078313038305f6f6b617871702e6d703400000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a68747470733a2f2f6d696e742e6c61676f6672616d652e636f6d2f6d792d6e66743f746f6b656e49643d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044c41474f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000058000000000000000000000000000000000000000000000000000000000000008e0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000b4672616d65205368617065000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b4672616d6520436f6c6f7200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000094163636573736f727900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000653717561726500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007526f756e646564000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000005426c61636b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005576869746500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074e61747572616c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000044e6f6e6500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000643616d657261000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002c0000000000000000000000000000000000000000000000000000000000000000a496e6e6f766174696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001241727469737420436f6d6d697373696f6e73000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064576656e74730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a4172742054726176656c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000134e4654204e6574776f726b205374616b696e67000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011436f6e63696572676520536572766963650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009496e737572616e63650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a47656e32204672616d650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000002c00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000054000000000000000000000000000000000000000000000000000000000000005c0000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000006c000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000359657300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000a3320706572207965617200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a3620706572207965617200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b31322070657220796561720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000a3120706572207965617200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a3320706572207965617200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a34207065722079656172000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000a3120706572207965617200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a3220706572207965617200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a332070657220796561720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000359657300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000035965730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000011496e7375726520436f6c6c656374696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000359657300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000bb80000000000000000000000000000000000000000000000000000000000001b5800000000000000000000000000000000000000000000000000000000000004b000000000000000000000000000000000000000000000000000000000000000c80000000000000000000000000000000000000000000000000000000000000dac00000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000001f4000000000000000000000000000000000000000000000000000000000000012c000000000000000000000000000000000000000000000000000000000000002800000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002c00000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000003800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000001770000000000000000000000000000000000000000000000000000000000000245400000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000177000000000000000000000000000000000000000000000000000000000000023280000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000013880000000000000000000000000000000000000000000000000000000000002328000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000002710
-----Decoded View---------------
Arg [0] : _name (string): LAGO Pass Official
Arg [1] : _description (string): LAGO works directly with artists to commission original NFTs exclusively for LAGO Pass members
Arg [2] : _imageUrl (string): https://res.cloudinary.com/lago/image/upload/v1654187575/Lago%20Mint%20Founder%20Art/Group_14_2_qh9g6s.svg
Arg [3] : _animationUrl (string): https://res.cloudinary.com/lago/video/upload/v1653048109/Lago%20NFT%20Art/220520_LAGO_Founders_1080x1080_okaxqp.mp4
Arg [4] : _nftUrl (string): https://mint.lagoframe.com/my-nft?tokenId=
Arg [5] : _symbol (string): LAGO
Arg [6] : _tokenPrice (uint256): 2000000000000000000
Arg [7] : _maxSupply (uint256): 1000
Arg [8] : traits (string[][][]): System.Collections.Generic.List`1[System.Collections.Generic.List`1[System.String]],System.Collections.Generic.List`1[System.Collections.Generic.List`1[System.String]],System.Collections.Generic.List`1[System.Collections.Generic.List`1[System.String]],System.Collections.Generic.List`1[System.Collections.Generic.List`1[System.String]]
Arg [9] : chances (uint16[][][]): System.Collections.Generic.List`1[System.Collections.Generic.List`1[System.Numerics.BigInteger]],System.Collections.Generic.List`1[System.Collections.Generic.List`1[System.Numerics.BigInteger]],System.Collections.Generic.List`1[System.Collections.Generic.List`1[System.Numerics.BigInteger]]
-----Encoded View---------------
219 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000180
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000200
Arg [3] : 00000000000000000000000000000000000000000000000000000000000002a0
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000340
Arg [5] : 00000000000000000000000000000000000000000000000000000000000003a0
Arg [6] : 0000000000000000000000000000000000000000000000001bc16d674ec80000
Arg [7] : 00000000000000000000000000000000000000000000000000000000000003e8
Arg [8] : 00000000000000000000000000000000000000000000000000000000000003e0
Arg [9] : 0000000000000000000000000000000000000000000000000000000000001440
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [11] : 4c41474f2050617373204f6666696369616c0000000000000000000000000000
Arg [12] : 000000000000000000000000000000000000000000000000000000000000005e
Arg [13] : 4c41474f20776f726b73206469726563746c7920776974682061727469737473
Arg [14] : 20746f20636f6d6d697373696f6e206f726967696e616c204e46547320657863
Arg [15] : 6c75736976656c7920666f72204c41474f2050617373206d656d626572730000
Arg [16] : 000000000000000000000000000000000000000000000000000000000000006a
Arg [17] : 68747470733a2f2f7265732e636c6f7564696e6172792e636f6d2f6c61676f2f
Arg [18] : 696d6167652f75706c6f61642f76313635343138373537352f4c61676f253230
Arg [19] : 4d696e74253230466f756e6465722532304172742f47726f75705f31345f325f
Arg [20] : 7168396736732e73766700000000000000000000000000000000000000000000
Arg [21] : 0000000000000000000000000000000000000000000000000000000000000073
Arg [22] : 68747470733a2f2f7265732e636c6f7564696e6172792e636f6d2f6c61676f2f
Arg [23] : 766964656f2f75706c6f61642f76313635333034383130392f4c61676f253230
Arg [24] : 4e46542532304172742f3232303532305f4c41474f5f466f756e646572735f31
Arg [25] : 30383078313038305f6f6b617871702e6d703400000000000000000000000000
Arg [26] : 000000000000000000000000000000000000000000000000000000000000002a
Arg [27] : 68747470733a2f2f6d696e742e6c61676f6672616d652e636f6d2f6d792d6e66
Arg [28] : 743f746f6b656e49643d00000000000000000000000000000000000000000000
Arg [29] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [30] : 4c41474f00000000000000000000000000000000000000000000000000000000
Arg [31] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [32] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [33] : 0000000000000000000000000000000000000000000000000000000000000200
Arg [34] : 0000000000000000000000000000000000000000000000000000000000000580
Arg [35] : 00000000000000000000000000000000000000000000000000000000000008e0
Arg [36] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [37] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [38] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [39] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [40] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [41] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [42] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [43] : 4672616d65205368617065000000000000000000000000000000000000000000
Arg [44] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [45] : 4672616d6520436f6c6f72000000000000000000000000000000000000000000
Arg [46] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [47] : 4163636573736f72790000000000000000000000000000000000000000000000
Arg [48] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [49] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [50] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [51] : 0000000000000000000000000000000000000000000000000000000000000280
Arg [52] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [53] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [54] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [55] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [56] : 5371756172650000000000000000000000000000000000000000000000000000
Arg [57] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [58] : 526f756e64656400000000000000000000000000000000000000000000000000
Arg [59] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [60] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [61] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [62] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [63] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [64] : 426c61636b000000000000000000000000000000000000000000000000000000
Arg [65] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [66] : 5768697465000000000000000000000000000000000000000000000000000000
Arg [67] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [68] : 4e61747572616c00000000000000000000000000000000000000000000000000
Arg [69] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [70] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [71] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [72] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [73] : 4e6f6e6500000000000000000000000000000000000000000000000000000000
Arg [74] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [75] : 43616d6572610000000000000000000000000000000000000000000000000000
Arg [76] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [77] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [78] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [79] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [80] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [81] : 0000000000000000000000000000000000000000000000000000000000000180
Arg [82] : 00000000000000000000000000000000000000000000000000000000000001c0
Arg [83] : 0000000000000000000000000000000000000000000000000000000000000200
Arg [84] : 0000000000000000000000000000000000000000000000000000000000000240
Arg [85] : 0000000000000000000000000000000000000000000000000000000000000280
Arg [86] : 00000000000000000000000000000000000000000000000000000000000002c0
Arg [87] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [88] : 496e6e6f766174696f6e00000000000000000000000000000000000000000000
Arg [89] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [90] : 41727469737420436f6d6d697373696f6e730000000000000000000000000000
Arg [91] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [92] : 4576656e74730000000000000000000000000000000000000000000000000000
Arg [93] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [94] : 4172742054726176656c00000000000000000000000000000000000000000000
Arg [95] : 0000000000000000000000000000000000000000000000000000000000000013
Arg [96] : 4e4654204e6574776f726b205374616b696e6700000000000000000000000000
Arg [97] : 0000000000000000000000000000000000000000000000000000000000000011
Arg [98] : 436f6e6369657267652053657276696365000000000000000000000000000000
Arg [99] : 0000000000000000000000000000000000000000000000000000000000000009
Arg [100] : 496e737572616e63650000000000000000000000000000000000000000000000
Arg [101] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [102] : 47656e32204672616d6500000000000000000000000000000000000000000000
Arg [103] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [104] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [105] : 0000000000000000000000000000000000000000000000000000000000000180
Arg [106] : 00000000000000000000000000000000000000000000000000000000000002c0
Arg [107] : 0000000000000000000000000000000000000000000000000000000000000400
Arg [108] : 0000000000000000000000000000000000000000000000000000000000000540
Arg [109] : 00000000000000000000000000000000000000000000000000000000000005c0
Arg [110] : 0000000000000000000000000000000000000000000000000000000000000640
Arg [111] : 00000000000000000000000000000000000000000000000000000000000006c0
Arg [112] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [113] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [114] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [115] : 5965730000000000000000000000000000000000000000000000000000000000
Arg [116] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [117] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [118] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [119] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [120] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [121] : 3320706572207965617200000000000000000000000000000000000000000000
Arg [122] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [123] : 3620706572207965617200000000000000000000000000000000000000000000
Arg [124] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [125] : 3132207065722079656172000000000000000000000000000000000000000000
Arg [126] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [127] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [128] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [129] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [130] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [131] : 3120706572207965617200000000000000000000000000000000000000000000
Arg [132] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [133] : 3320706572207965617200000000000000000000000000000000000000000000
Arg [134] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [135] : 3420706572207965617200000000000000000000000000000000000000000000
Arg [136] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [137] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [138] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [139] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [140] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [141] : 3120706572207965617200000000000000000000000000000000000000000000
Arg [142] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [143] : 3220706572207965617200000000000000000000000000000000000000000000
Arg [144] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [145] : 3320706572207965617200000000000000000000000000000000000000000000
Arg [146] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [147] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [148] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [149] : 5965730000000000000000000000000000000000000000000000000000000000
Arg [150] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [151] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [152] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [153] : 5965730000000000000000000000000000000000000000000000000000000000
Arg [154] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [155] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [156] : 0000000000000000000000000000000000000000000000000000000000000011
Arg [157] : 496e7375726520436f6c6c656374696f6e000000000000000000000000000000
Arg [158] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [159] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [160] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [161] : 5965730000000000000000000000000000000000000000000000000000000000
Arg [162] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [163] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [164] : 00000000000000000000000000000000000000000000000000000000000001c0
Arg [165] : 0000000000000000000000000000000000000000000000000000000000000320
Arg [166] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [167] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [168] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [169] : 0000000000000000000000000000000000000000000000000000000000000bb8
Arg [170] : 0000000000000000000000000000000000000000000000000000000000001b58
Arg [171] : 00000000000000000000000000000000000000000000000000000000000004b0
Arg [172] : 00000000000000000000000000000000000000000000000000000000000000c8
Arg [173] : 0000000000000000000000000000000000000000000000000000000000000dac
Arg [174] : 00000000000000000000000000000000000000000000000000000000000001f4
Arg [175] : 00000000000000000000000000000000000000000000000000000000000000c8
Arg [176] : 00000000000000000000000000000000000000000000000000000000000003e8
Arg [177] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [178] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [179] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [180] : 00000000000000000000000000000000000000000000000000000000000000c8
Arg [181] : 00000000000000000000000000000000000000000000000000000000000001f4
Arg [182] : 000000000000000000000000000000000000000000000000000000000000012c
Arg [183] : 0000000000000000000000000000000000000000000000000000000000000028
Arg [184] : 00000000000000000000000000000000000000000000000000000000000003e8
Arg [185] : 0000000000000000000000000000000000000000000000000000000000000064
Arg [186] : 0000000000000000000000000000000000000000000000000000000000000064
Arg [187] : 0000000000000000000000000000000000000000000000000000000000000064
Arg [188] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [189] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [190] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [191] : 00000000000000000000000000000000000000000000000000000000000001c0
Arg [192] : 0000000000000000000000000000000000000000000000000000000000000240
Arg [193] : 00000000000000000000000000000000000000000000000000000000000002c0
Arg [194] : 0000000000000000000000000000000000000000000000000000000000000300
Arg [195] : 0000000000000000000000000000000000000000000000000000000000000340
Arg [196] : 0000000000000000000000000000000000000000000000000000000000000380
Arg [197] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [198] : 0000000000000000000000000000000000000000000000000000000000002710
Arg [199] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [200] : 0000000000000000000000000000000000000000000000000000000000001770
Arg [201] : 0000000000000000000000000000000000000000000000000000000000002454
Arg [202] : 0000000000000000000000000000000000000000000000000000000000002710
Arg [203] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [204] : 0000000000000000000000000000000000000000000000000000000000001770
Arg [205] : 0000000000000000000000000000000000000000000000000000000000002328
Arg [206] : 0000000000000000000000000000000000000000000000000000000000002710
Arg [207] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [208] : 0000000000000000000000000000000000000000000000000000000000001388
Arg [209] : 0000000000000000000000000000000000000000000000000000000000002328
Arg [210] : 0000000000000000000000000000000000000000000000000000000000002710
Arg [211] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [212] : 0000000000000000000000000000000000000000000000000000000000002710
Arg [213] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [214] : 0000000000000000000000000000000000000000000000000000000000002710
Arg [215] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [216] : 0000000000000000000000000000000000000000000000000000000000002710
Arg [217] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [218] : 0000000000000000000000000000000000000000000000000000000000002710
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.