Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0.1104 ETH
Eth Value
$398.10 (@ $3,605.93/ETH)More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 65 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Approval For... | 19224868 | 287 days ago | IN | 0 ETH | 0.00082441 | ||||
Mint | 18802137 | 347 days ago | IN | 0.0207 ETH | 0.01334591 | ||||
Mint | 18646036 | 369 days ago | IN | 0.0138 ETH | 0.00547717 | ||||
Mint | 18638080 | 370 days ago | IN | 0.0069 ETH | 0.00273627 | ||||
Mint | 17971427 | 463 days ago | IN | 0.0069 ETH | 0.01011231 | ||||
Mint | 17971422 | 463 days ago | IN | 0 ETH | 0.00282486 | ||||
Mint | 16809399 | 627 days ago | IN | 0 ETH | 0.00089247 | ||||
Mint | 16716149 | 640 days ago | IN | 0 ETH | 0.00098851 | ||||
Mint | 16716124 | 640 days ago | IN | 0 ETH | 0.00097676 | ||||
Add Artist Mint ... | 16665633 | 647 days ago | IN | 0 ETH | 0.00129169 | ||||
Safe Transfer Fr... | 16514633 | 668 days ago | IN | 0 ETH | 0.00226885 | ||||
Mint | 16463019 | 675 days ago | IN | 0.0069 ETH | 0.00237395 | ||||
Safe Transfer Fr... | 16308735 | 697 days ago | IN | 0 ETH | 0.00153631 | ||||
Mint | 16239399 | 706 days ago | IN | 0.0069 ETH | 0.00198186 | ||||
Safe Transfer Fr... | 16114834 | 724 days ago | IN | 0 ETH | 0.00131364 | ||||
Mint | 16100152 | 726 days ago | IN | 0.0069 ETH | 0.00198789 | ||||
Set Approval For... | 16075392 | 729 days ago | IN | 0 ETH | 0.00053283 | ||||
Mint | 16070613 | 730 days ago | IN | 0 ETH | 0.00933236 | ||||
Set Is Revealed | 16068768 | 730 days ago | IN | 0 ETH | 0.00058815 | ||||
Set Contract URI | 16062489 | 731 days ago | IN | 0 ETH | 0.00038526 | ||||
Mint | 16061986 | 731 days ago | IN | 0.0069 ETH | 0.00045938 | ||||
Mint | 16061982 | 731 days ago | IN | 0.0069 ETH | 0.00047817 | ||||
Mint | 16061573 | 731 days ago | IN | 0 ETH | 0.00177374 | ||||
Mint | 16061262 | 731 days ago | IN | 0.0069 ETH | 0.00198063 | ||||
Mint | 16057943 | 732 days ago | IN | 0.0138 ETH | 0.00319301 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
SusSeagulls
Compiler Version
v0.8.9+commit.e5eed63a
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡▄▄▄¡¡¡ // ¡█▓█▀¡▄▄▐▌▐█▀▓¡¡¡¡¡▓█▀▀¡¡▄▓▌¡╥▓▄¡¡╥██m¡¡▓░¡█∩▓▄¡¡█m¡¡▐█▄╨⌡¡¡ // ¡▀█▌¡¡█▌║█╨█▄┐¡¡¡¡¡J▀█▄┐¡█▓▄¡███µ¡█▌A▄Hw█░¡█░██¡¡█▌¡¡¡└╨██µ¡ // ¡¡;╨█▌█▌e█▒┘▀█▄¡¡¡¡¡;└▓█¡█▒¡¡████¡█▌╫██¡█▌███╝█▓▌▀█▓▌¡▄▄▄█▒¡ // ¡╙███╨╙██▀▀h▓█▌¡¡¡¡¡▀██▀¡▀▀▀▀▀┐¡▀▒¡▀▀▀▀┐¡╨┘¡¡¡¡¡¡¡¡¡¡¡┘╨╨¡¡¡ // ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ // A generative collection of 6,666 suspicious seagulls // by @cryptoboop // dev @jahhweh // SPDX-License-Identifier: CC0-1.0 pragma solidity ^0.8.0; interface IERC165 { function supportsInterface(bytes4 interfaceId) external view returns (bool); } interface IERC721 is IERC165 { event Transfer( address indexed from, address indexed to, uint256 indexed tokenId ); event Approval( address indexed owner, address indexed approved, uint256 indexed tokenId ); event ApprovalForAll( address indexed owner, address indexed operator, bool approved ); function balanceOf(address owner) external view returns (uint256 balance); function ownerOf(uint256 tokenId) external view returns (address owner); function safeTransferFrom( address from, address to, uint256 tokenId ) external; function transferFrom( address from, address to, uint256 tokenId ) external; function approve(address to, uint256 tokenId) external; function getApproved(uint256 tokenId) external view returns (address operator); function setApprovalForAll(address operator, bool _approved) external; function isApprovedForAll(address owner, address operator) external view returns (bool); function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; } interface IERC2981 is IERC165 { function royaltyInfo(uint256 _tokenId, uint256 _salePrice) external view returns (address receiver, uint256 royaltyAmount); } interface IERC721Enumerable is IERC721 { function totalSupply() external view returns (uint256); function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); function tokenByIndex(uint256 index) external view returns (uint256); } abstract contract ERC165 is IERC165 { function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; function toString(uint256 value) internal pure returns (string memory) { 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); } 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); } 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); } } library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } 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" ); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } 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" ); } 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); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall( target, data, "Address: low-level static call failed" ); } 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); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall( target, data, "Address: low-level delegate call failed" ); } 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); } function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } interface IERC721Metadata is IERC721 { function name() external view returns (string memory); function symbol() external view returns (string memory); function tokenURI(uint256 tokenId) external view returns (string memory); } interface IERC721Receiver { function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; string private _name; string private _symbol; mapping(uint256 => address) private _owners; mapping(address => uint256) private _balances; mapping(uint256 => address) private _tokenApprovals; mapping(address => mapping(address => bool)) private _operatorApprovals; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } function balanceOf(address owner) public view virtual override returns (uint256) { require( owner != address(0), "ERC721: balance query for the zero address" ); return _balances[owner]; } 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; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } 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())) : ""; } function _baseURI() internal view virtual returns (string memory) { return ""; } 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); } function getApproved(uint256 tokenId) public view virtual override returns (address) { require( _exists(tokenId), "ERC721: approved query for nonexistent token" ); return _tokenApprovals[tokenId]; } function setApprovalForAll(address operator, bool approved) public virtual override { require(operator != _msgSender(), "ERC721: approve to caller"); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_msgSender(), operator, approved); } function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } function transferFrom( address from, address to, uint256 tokenId ) public virtual override { require( _isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved" ); _transfer(from, to, tokenId); } function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } 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); } 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" ); } function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require( _exists(tokenId), "ERC721: operator query for nonexistent token" ); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } 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" ); } 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); } 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); } function _transfer( address from, address to, uint256 tokenId ) internal virtual { require( ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own" ); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); } function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } 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; } } function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} } abstract contract ERC721Enumerable is ERC721, IERC721Enumerable { mapping(address => mapping(uint256 => uint256)) private _ownedTokens; mapping(uint256 => uint256) private _ownedTokensIndex; uint256[] private _allTokens; mapping(uint256 => uint256) private _allTokensIndex; function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) { return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId); } function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) { require( index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds" ); return _ownedTokens[owner][index]; } function totalSupply() public view virtual override returns (uint256) { return _allTokens.length; } function tokenByIndex(uint256 index) public view virtual override returns (uint256) { require( index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds" ); return _allTokens[index]; } function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual override { super._beforeTokenTransfer(from, to, tokenId); if (from == address(0)) { _addTokenToAllTokensEnumeration(tokenId); } else if (from != to) { _removeTokenFromOwnerEnumeration(from, tokenId); } if (to == address(0)) { _removeTokenFromAllTokensEnumeration(tokenId); } else if (to != from) { _addTokenToOwnerEnumeration(to, tokenId); } } function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private { uint256 length = ERC721.balanceOf(to); _ownedTokens[to][length] = tokenId; _ownedTokensIndex[tokenId] = length; } function _addTokenToAllTokensEnumeration(uint256 tokenId) private { _allTokensIndex[tokenId] = _allTokens.length; _allTokens.push(tokenId); } function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private { uint256 lastTokenIndex = ERC721.balanceOf(from) - 1; uint256 tokenIndex = _ownedTokensIndex[tokenId]; if (tokenIndex != lastTokenIndex) { uint256 lastTokenId = _ownedTokens[from][lastTokenIndex]; _ownedTokens[from][tokenIndex] = lastTokenId; _ownedTokensIndex[lastTokenId] = tokenIndex; } delete _ownedTokensIndex[tokenId]; delete _ownedTokens[from][lastTokenIndex]; } function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private { uint256 lastTokenIndex = _allTokens.length - 1; uint256 tokenIndex = _allTokensIndex[tokenId]; uint256 lastTokenId = _allTokens[lastTokenIndex]; _allTokens[tokenIndex] = lastTokenId; _allTokensIndex[lastTokenId] = tokenIndex; delete _allTokensIndex[tokenId]; _allTokens.pop(); } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { _setOwner(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // 57656C6C206C6F6F6B7920686572652C2069662069742069736E2774205375737379204D63537573736572746F6E2E2E2E207768617420796F7520646F696E2073757373696E2061726F756E6420646F776E20686572653F contract SusSeagulls is ERC721, ERC721Enumerable, Ownable { using Strings for uint256; string baseURI; string public baseExtension = ".json"; uint256 public freeMint = 0.0 ether; uint256 public cost = 0.0069 ether; uint256 public maxSupply = 6666; uint256 public reservedSupply = 66; uint256 public timeDeployed; uint256 public allowMintingAfter = 0; bool public isPaused = true; bool public isRevealed = false; string public notRevealedUri; mapping(address => bool) public ArtistMintList; mapping(address => bool) public FrensMintList; uint96 royaltyFeesInBips; string public contractURI; address royaltyReceiver; constructor( string memory _name, string memory _symbol, uint256 _cost, uint256 _maxSupply, uint256 _reservedSupply, uint256 _allowMintingOn, string memory _initBaseURI, string memory _initNotRevealedUri, uint96 _royaltyFeesInBips, string memory _contractURI ) ERC721(_name, _symbol) { if (_allowMintingOn > block.timestamp) { allowMintingAfter = _allowMintingOn - block.timestamp; } cost = _cost; maxSupply = _maxSupply; reservedSupply = _reservedSupply; timeDeployed = block.timestamp; royaltyReceiver = msg.sender; setBaseURI(_initBaseURI); setNotRevealedURI(_initNotRevealedUri); royaltyFeesInBips = _royaltyFeesInBips; contractURI = _contractURI; } function _baseURI() internal view virtual override returns (string memory) { return baseURI; } function mint(address _to, uint256 _mintAmount) public payable { require( block.timestamp >= timeDeployed + allowMintingAfter, "Minting is still turned off" ); uint256 supply = totalSupply(); require(!isPaused, "Minting is currently paused"); require(_mintAmount > 0, "Mint must be greater than zero"); require(supply + _mintAmount <= maxSupply - reservedSupply, "Only reserved mints are left"); if (msg.sender != owner()) { if (ArtistMintList[msg.sender] == true) { require(ArtistMintList[msg.sender] = true, "You did not contribute to this project as an artist"); require(_mintAmount == 5, "You must mint exactly 5"); require(msg.value >= freeMint * _mintAmount, "Payment must be exactly 0 eth"); ArtistMintList[msg.sender] = false; } else if (FrensMintList[msg.sender] == true) { require(FrensMintList[msg.sender] = true, "You are not on the frens list"); require(_mintAmount == 1, "You must mint exactly 1"); require(msg.value >= freeMint * _mintAmount, "Payment must be exactly 0 eth"); FrensMintList[msg.sender] = false; } else { require(msg.value >= cost * _mintAmount, "Not enough eth"); } } for (uint256 i = 1; i <= _mintAmount; i++) { _safeMint(_to, supply + i); } } function mintReserved(uint256 _mintAmount) public onlyOwner { uint256 supply = totalSupply(); require(!isPaused); require(_mintAmount > 0); require(supply + _mintAmount <= maxSupply); for (uint256 i = 1; i <= _mintAmount; i++) { _safeMint(msg.sender, supply + i); } } function walletOfOwner(address _owner) public view returns (uint256[] memory) { uint256 ownerTokenCount = balanceOf(_owner); uint256[] memory tokenIds = new uint256[](ownerTokenCount); for (uint256 i; i < ownerTokenCount; i++) { tokenIds[i] = tokenOfOwnerByIndex(_owner, i); } return tokenIds; } function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require( _exists(tokenId), "ERC721Metadata: URI query for nonexistent token" ); if (isRevealed == false) { return notRevealedUri; } string memory currentBaseURI = _baseURI(); return bytes(currentBaseURI).length > 0 ? string( abi.encodePacked( currentBaseURI, tokenId.toString(), baseExtension ) ) : ""; } function setIsRevealed(bool _state) public onlyOwner { isRevealed = _state; } function setCost(uint256 _newCost) public onlyOwner { cost = _newCost; } function setReservedSupply(uint256 _setReservedSupply) public onlyOwner { reservedSupply = _setReservedSupply; } function setNotRevealedURI(string memory _notRevealedURI) public onlyOwner { notRevealedUri = _notRevealedURI; } function setBaseURI(string memory _newBaseURI) public onlyOwner { baseURI = _newBaseURI; } function setBaseExtension(string memory _newBaseExtension) public onlyOwner { baseExtension = _newBaseExtension; } function setIsPaused(bool _state) public onlyOwner { isPaused = _state; } function addArtistMintList(address _user) public onlyOwner { ArtistMintList[_user] = true; } function removeArtistMintList(address _user) public onlyOwner { ArtistMintList[_user] = false; } function addFrensMintList(address _user) public onlyOwner { FrensMintList[_user] = true; } function removeFrensMintList(address _user) public onlyOwner { FrensMintList[_user] = false; } function withdraw() public payable onlyOwner { (bool success, ) = payable(msg.sender).call{ value: address(this).balance }(""); require(success); } function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal override(ERC721, ERC721Enumerable) { super._beforeTokenTransfer(from, to, tokenId); } function supportsInterface(bytes4 interfaceId) public view override(ERC721, ERC721Enumerable) returns (bool) { return interfaceId == 0x2a55205a || super.supportsInterface(interfaceId); } function royaltyInfo(uint256 _tokenId, uint256 _cost) external view returns (address receiver, uint256 royaltyAmount) { return (royaltyReceiver, calculateRoyalty(_cost)); } function calculateRoyalty(uint256 _cost) public view returns (uint256) { return (_cost / 10000) * royaltyFeesInBips; } function setRoyaltyInfo(address _royaltyReceiver, uint96 _royaltyFeesInBips) public onlyOwner { royaltyReceiver = _royaltyReceiver; royaltyFeesInBips = _royaltyFeesInBips; } function setContractURI(string calldata _contractURI) public onlyOwner { contractURI = _contractURI; } }
{ "remappings": [], "optimizer": { "enabled": false, "runs": 200 }, "evmVersion": "london", "libraries": {}, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint256","name":"_cost","type":"uint256"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"},{"internalType":"uint256","name":"_reservedSupply","type":"uint256"},{"internalType":"uint256","name":"_allowMintingOn","type":"uint256"},{"internalType":"string","name":"_initBaseURI","type":"string"},{"internalType":"string","name":"_initNotRevealedUri","type":"string"},{"internalType":"uint96","name":"_royaltyFeesInBips","type":"uint96"},{"internalType":"string","name":"_contractURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ArtistMintList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"FrensMintList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"addArtistMintList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"addFrensMintList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"allowMintingAfter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_cost","type":"uint256"}],"name":"calculateRoyalty","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freeMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isRevealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mintReserved","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"notRevealedUri","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":"address","name":"_user","type":"address"}],"name":"removeArtistMintList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"removeFrensMintList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reservedSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_cost","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseExtension","type":"string"}],"name":"setBaseExtension","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_contractURI","type":"string"}],"name":"setContractURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setIsPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setIsRevealed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_notRevealedURI","type":"string"}],"name":"setNotRevealedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_setReservedSupply","type":"uint256"}],"name":"setReservedSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_royaltyReceiver","type":"address"},{"internalType":"uint96","name":"_royaltyFeesInBips","type":"uint96"}],"name":"setRoyaltyInfo","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":"timeDeployed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","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":[],"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":[{"internalType":"address","name":"_owner","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"}]
Contract Creation Code
60806040526040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600c90805190602001906200005192919062000476565b506000600d556618838370f34000600e55611a0a600f55604260105560006012556001601360006101000a81548160ff0219169083151502179055506000601360016101000a81548160ff021916908315150217905550348015620000b557600080fd5b50604051620064c6380380620064c68339818101604052810190620000db919062000747565b89898160009080519060200190620000f592919062000476565b5080600190805190602001906200010e92919062000476565b50505062000131620001256200022860201b60201c565b6200023060201b60201c565b428511156200014f57428562000148919062000907565b6012819055505b87600e8190555086600f81905550856010819055504260118190555033601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001bd84620002f660201b60201c565b620001ce83620003a160201b60201c565b81601760006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555080601890805190602001906200021792919062000476565b505050505050505050505062000a2a565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620003066200022860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200032c6200044c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000385576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200037c90620009a3565b60405180910390fd5b80600b90805190602001906200039d92919062000476565b5050565b620003b16200022860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620003d76200044c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000430576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200042790620009a3565b60405180910390fd5b80601490805190602001906200044892919062000476565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8280546200048490620009f4565b90600052602060002090601f016020900481019282620004a85760008555620004f4565b82601f10620004c357805160ff1916838001178555620004f4565b82800160010185558215620004f4579182015b82811115620004f3578251825591602001919060010190620004d6565b5b50905062000503919062000507565b5090565b5b808211156200052257600081600090555060010162000508565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200058f8262000544565b810181811067ffffffffffffffff82111715620005b157620005b062000555565b5b80604052505050565b6000620005c662000526565b9050620005d4828262000584565b919050565b600067ffffffffffffffff821115620005f757620005f662000555565b5b620006028262000544565b9050602081019050919050565b60005b838110156200062f57808201518184015260208101905062000612565b838111156200063f576000848401525b50505050565b60006200065c6200065684620005d9565b620005ba565b9050828152602081018484840111156200067b576200067a6200053f565b5b620006888482856200060f565b509392505050565b600082601f830112620006a857620006a76200053a565b5b8151620006ba84826020860162000645565b91505092915050565b6000819050919050565b620006d881620006c3565b8114620006e457600080fd5b50565b600081519050620006f881620006cd565b92915050565b60006bffffffffffffffffffffffff82169050919050565b6200072181620006fe565b81146200072d57600080fd5b50565b600081519050620007418162000716565b92915050565b6000806000806000806000806000806101408b8d0312156200076e576200076d62000530565b5b60008b015167ffffffffffffffff8111156200078f576200078e62000535565b5b6200079d8d828e0162000690565b9a505060208b015167ffffffffffffffff811115620007c157620007c062000535565b5b620007cf8d828e0162000690565b9950506040620007e28d828e01620006e7565b9850506060620007f58d828e01620006e7565b9750506080620008088d828e01620006e7565b96505060a06200081b8d828e01620006e7565b95505060c08b015167ffffffffffffffff8111156200083f576200083e62000535565b5b6200084d8d828e0162000690565b94505060e08b015167ffffffffffffffff81111562000871576200087062000535565b5b6200087f8d828e0162000690565b935050610100620008938d828e0162000730565b9250506101208b015167ffffffffffffffff811115620008b857620008b762000535565b5b620008c68d828e0162000690565b9150509295989b9194979a5092959850565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200091482620006c3565b91506200092183620006c3565b925082821015620009375762000936620008d8565b5b828203905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200098b60208362000942565b9150620009988262000953565b602082019050919050565b60006020820190508181036000830152620009be816200097c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a0d57607f821691505b6020821081141562000a245762000a23620009c5565b5b50919050565b615a8c8062000a3a6000396000f3fe6080604052600436106102e45760003560e01c806355f804b311610190578063af850043116100dc578063d6eb510211610095578063e985e9c51161006f578063e985e9c514610b41578063f2c4ce1e14610b7e578063f2fde38b14610ba7578063fc9525f014610bd0576102e4565b8063d6eb510214610ab0578063da3ef23f14610aed578063e8a3d48514610b16576102e4565b8063af850043146109a0578063b187bd26146109c9578063b88d4fde146109f4578063c668286214610a1d578063c87b56dd14610a48578063d5abeb0114610a85576102e4565b80638da5cb5b116101495780639a5d140b116101235780639a5d140b146108e8578063a22cb46514610911578063a2e696131461093a578063aa3b1b3014610977576102e4565b80638da5cb5b14610869578063938e3d7b1461089457806395d89b41146108bd576102e4565b806355f804b3146107595780635b70ea9f146107825780636352211e146107ad57806370a08231146107ea578063715018a614610827578063872bdcdb1461083e576102e4565b80632a55205a1161024f578063438b63001161020857806349a5980a116101e257806349a5980a1461069f5780634f6ccce7146106c857806354214f69146107055780635428ba7e14610730576102e4565b8063438b63001461060e57806344a0d68a1461064b57806344d19d2b14610674576102e4565b80632a55205a146105075780632f745c59146105455780632f9928d5146105825780633ccfd60b146105bf57806340c10f19146105c957806342842e0e146105e5576102e4565b806313faede6116102a157806313faede61461040b57806318160ddd1461043657806319188c35146104615780631e13f86b1461048c57806323b872dd146104b5578063240976bf146104de576102e4565b806301ffc9a7146102e957806302fa7c471461032657806306fdde031461034f578063081812fc1461037a578063081c8c44146103b7578063095ea7b3146103e2575b600080fd5b3480156102f557600080fd5b50610310600480360381019061030b9190613e8e565b610bf9565b60405161031d9190613ed6565b60405180910390f35b34801561033257600080fd5b5061034d60048036038101906103489190613f93565b610c3b565b005b34801561035b57600080fd5b50610364610d2d565b604051610371919061406c565b60405180910390f35b34801561038657600080fd5b506103a1600480360381019061039c91906140c4565b610dbf565b6040516103ae9190614100565b60405180910390f35b3480156103c357600080fd5b506103cc610e44565b6040516103d9919061406c565b60405180910390f35b3480156103ee57600080fd5b506104096004803603810190610404919061411b565b610ed2565b005b34801561041757600080fd5b50610420610fea565b60405161042d919061416a565b60405180910390f35b34801561044257600080fd5b5061044b610ff0565b604051610458919061416a565b60405180910390f35b34801561046d57600080fd5b50610476610ffd565b604051610483919061416a565b60405180910390f35b34801561049857600080fd5b506104b360048036038101906104ae91906140c4565b611003565b005b3480156104c157600080fd5b506104dc60048036038101906104d79190614185565b611089565b005b3480156104ea57600080fd5b5061050560048036038101906105009190614204565b6110e9565b005b34801561051357600080fd5b5061052e60048036038101906105299190614231565b611182565b60405161053c929190614271565b60405180910390f35b34801561055157600080fd5b5061056c6004803603810190610567919061411b565b6111bc565b604051610579919061416a565b60405180910390f35b34801561058e57600080fd5b506105a960048036038101906105a4919061429a565b611261565b6040516105b69190613ed6565b60405180910390f35b6105c7611281565b005b6105e360048036038101906105de919061411b565b611376565b005b3480156105f157600080fd5b5061060c60048036038101906106079190614185565b61194b565b005b34801561061a57600080fd5b506106356004803603810190610630919061429a565b61196b565b6040516106429190614385565b60405180910390f35b34801561065757600080fd5b50610672600480360381019061066d91906140c4565b611a19565b005b34801561068057600080fd5b50610689611a9f565b604051610696919061416a565b60405180910390f35b3480156106ab57600080fd5b506106c660048036038101906106c19190614204565b611aa5565b005b3480156106d457600080fd5b506106ef60048036038101906106ea91906140c4565b611b3e565b6040516106fc919061416a565b60405180910390f35b34801561071157600080fd5b5061071a611baf565b6040516107279190613ed6565b60405180910390f35b34801561073c57600080fd5b506107576004803603810190610752919061429a565b611bc2565b005b34801561076557600080fd5b50610780600480360381019061077b91906144dc565b611c99565b005b34801561078e57600080fd5b50610797611d2f565b6040516107a4919061416a565b60405180910390f35b3480156107b957600080fd5b506107d460048036038101906107cf91906140c4565b611d35565b6040516107e19190614100565b60405180910390f35b3480156107f657600080fd5b50610811600480360381019061080c919061429a565b611de7565b60405161081e919061416a565b60405180910390f35b34801561083357600080fd5b5061083c611e9f565b005b34801561084a57600080fd5b50610853611f27565b604051610860919061416a565b60405180910390f35b34801561087557600080fd5b5061087e611f2d565b60405161088b9190614100565b60405180910390f35b3480156108a057600080fd5b506108bb60048036038101906108b69190614585565b611f57565b005b3480156108c957600080fd5b506108d2611fe9565b6040516108df919061406c565b60405180910390f35b3480156108f457600080fd5b5061090f600480360381019061090a91906140c4565b61207b565b005b34801561091d57600080fd5b50610938600480360381019061093391906145d2565b61217f565b005b34801561094657600080fd5b50610961600480360381019061095c91906140c4565b612300565b60405161096e919061416a565b60405180910390f35b34801561098357600080fd5b5061099e6004803603810190610999919061429a565b61234a565b005b3480156109ac57600080fd5b506109c760048036038101906109c2919061429a565b612421565b005b3480156109d557600080fd5b506109de6124f8565b6040516109eb9190613ed6565b60405180910390f35b348015610a0057600080fd5b50610a1b6004803603810190610a1691906146b3565b61250b565b005b348015610a2957600080fd5b50610a3261256d565b604051610a3f919061406c565b60405180910390f35b348015610a5457600080fd5b50610a6f6004803603810190610a6a91906140c4565b6125fb565b604051610a7c919061406c565b60405180910390f35b348015610a9157600080fd5b50610a9a612754565b604051610aa7919061416a565b60405180910390f35b348015610abc57600080fd5b50610ad76004803603810190610ad2919061429a565b61275a565b604051610ae49190613ed6565b60405180910390f35b348015610af957600080fd5b50610b146004803603810190610b0f91906144dc565b61277a565b005b348015610b2257600080fd5b50610b2b612810565b604051610b38919061406c565b60405180910390f35b348015610b4d57600080fd5b50610b686004803603810190610b639190614736565b61289e565b604051610b759190613ed6565b60405180910390f35b348015610b8a57600080fd5b50610ba56004803603810190610ba091906144dc565b612932565b005b348015610bb357600080fd5b50610bce6004803603810190610bc9919061429a565b6129c8565b005b348015610bdc57600080fd5b50610bf76004803603810190610bf2919061429a565b612ac0565b005b6000632a55205a60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610c345750610c3382612b97565b5b9050919050565b610c43612c11565b73ffffffffffffffffffffffffffffffffffffffff16610c61611f2d565b73ffffffffffffffffffffffffffffffffffffffff1614610cb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cae906147c2565b60405180910390fd5b81601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055505050565b606060008054610d3c90614811565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6890614811565b8015610db55780601f10610d8a57610100808354040283529160200191610db5565b820191906000526020600020905b815481529060010190602001808311610d9857829003601f168201915b5050505050905090565b6000610dca82612c19565b610e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e00906148b5565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60148054610e5190614811565b80601f0160208091040260200160405190810160405280929190818152602001828054610e7d90614811565b8015610eca5780601f10610e9f57610100808354040283529160200191610eca565b820191906000526020600020905b815481529060010190602001808311610ead57829003601f168201915b505050505081565b6000610edd82611d35565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4590614947565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610f6d612c11565b73ffffffffffffffffffffffffffffffffffffffff161480610f9c5750610f9b81610f96612c11565b61289e565b5b610fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd2906149d9565b60405180910390fd5b610fe58383612c85565b505050565b600e5481565b6000600880549050905090565b60115481565b61100b612c11565b73ffffffffffffffffffffffffffffffffffffffff16611029611f2d565b73ffffffffffffffffffffffffffffffffffffffff161461107f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611076906147c2565b60405180910390fd5b8060108190555050565b61109a611094612c11565b82612d3e565b6110d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d090614a6b565b60405180910390fd5b6110e4838383612e1c565b505050565b6110f1612c11565b73ffffffffffffffffffffffffffffffffffffffff1661110f611f2d565b73ffffffffffffffffffffffffffffffffffffffff1614611165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115c906147c2565b60405180910390fd5b80601360006101000a81548160ff02191690831515021790555050565b600080601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166111b184612300565b915091509250929050565b60006111c783611de7565b8210611208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ff90614afd565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b60166020528060005260406000206000915054906101000a900460ff1681565b611289612c11565b73ffffffffffffffffffffffffffffffffffffffff166112a7611f2d565b73ffffffffffffffffffffffffffffffffffffffff16146112fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f4906147c2565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161132390614b4e565b60006040518083038185875af1925050503d8060008114611360576040519150601f19603f3d011682016040523d82523d6000602084013e611365565b606091505b505090508061137357600080fd5b50565b6012546011546113869190614b92565b4210156113c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bf90614c34565b60405180910390fd5b60006113d2610ff0565b9050601360009054906101000a900460ff1615611424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141b90614ca0565b60405180910390fd5b60008211611467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145e90614d0c565b60405180910390fd5b601054600f546114779190614d2c565b82826114839190614b92565b11156114c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bb90614dac565b60405180910390fd5b6114cc611f2d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461190f5760011515601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156116dd576001601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790556115ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e490614e3e565b60405180910390fd5b60058214611630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162790614eaa565b60405180910390fd5b81600d5461163e9190614eca565b341015611680576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167790614f70565b60405180910390fd5b6000601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061190e565b60011515601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156118bc576001601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790556117cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c390614fdc565b60405180910390fd5b6001821461180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180690615048565b60405180910390fd5b81600d5461181d9190614eca565b34101561185f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185690614f70565b60405180910390fd5b6000601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061190d565b81600e546118ca9190614eca565b34101561190c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611903906150b4565b60405180910390fd5b5b5b5b6000600190505b8281116119455761193284828461192d9190614b92565b613078565b808061193d906150d4565b915050611916565b50505050565b6119668383836040518060200160405280600081525061250b565b505050565b6060600061197883611de7565b905060008167ffffffffffffffff811115611996576119956143b1565b5b6040519080825280602002602001820160405280156119c45781602001602082028036833780820191505090505b50905060005b82811015611a0e576119dc85826111bc565b8282815181106119ef576119ee61511d565b5b6020026020010181815250508080611a06906150d4565b9150506119ca565b508092505050919050565b611a21612c11565b73ffffffffffffffffffffffffffffffffffffffff16611a3f611f2d565b73ffffffffffffffffffffffffffffffffffffffff1614611a95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8c906147c2565b60405180910390fd5b80600e8190555050565b60105481565b611aad612c11565b73ffffffffffffffffffffffffffffffffffffffff16611acb611f2d565b73ffffffffffffffffffffffffffffffffffffffff1614611b21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b18906147c2565b60405180910390fd5b80601360016101000a81548160ff02191690831515021790555050565b6000611b48610ff0565b8210611b89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b80906151be565b60405180910390fd5b60088281548110611b9d57611b9c61511d565b5b90600052602060002001549050919050565b601360019054906101000a900460ff1681565b611bca612c11565b73ffffffffffffffffffffffffffffffffffffffff16611be8611f2d565b73ffffffffffffffffffffffffffffffffffffffff1614611c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c35906147c2565b60405180910390fd5b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611ca1612c11565b73ffffffffffffffffffffffffffffffffffffffff16611cbf611f2d565b73ffffffffffffffffffffffffffffffffffffffff1614611d15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0c906147c2565b60405180910390fd5b80600b9080519060200190611d2b929190613cf9565b5050565b600d5481565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611dde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd590615250565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4f906152e2565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611ea7612c11565b73ffffffffffffffffffffffffffffffffffffffff16611ec5611f2d565b73ffffffffffffffffffffffffffffffffffffffff1614611f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f12906147c2565b60405180910390fd5b611f256000613096565b565b60125481565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611f5f612c11565b73ffffffffffffffffffffffffffffffffffffffff16611f7d611f2d565b73ffffffffffffffffffffffffffffffffffffffff1614611fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fca906147c2565b60405180910390fd5b818160189190611fe4929190613d7f565b505050565b606060018054611ff890614811565b80601f016020809104026020016040519081016040528092919081815260200182805461202490614811565b80156120715780601f1061204657610100808354040283529160200191612071565b820191906000526020600020905b81548152906001019060200180831161205457829003601f168201915b5050505050905090565b612083612c11565b73ffffffffffffffffffffffffffffffffffffffff166120a1611f2d565b73ffffffffffffffffffffffffffffffffffffffff16146120f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ee906147c2565b60405180910390fd5b6000612101610ff0565b9050601360009054906101000a900460ff161561211d57600080fd5b6000821161212a57600080fd5b600f5482826121399190614b92565b111561214457600080fd5b6000600190505b82811161217a576121673382846121629190614b92565b613078565b8080612172906150d4565b91505061214b565b505050565b612187612c11565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ec9061534e565b60405180910390fd5b8060056000612202612c11565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166122af612c11565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516122f49190613ed6565b60405180910390a35050565b6000601760009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff1661271083612339919061539d565b6123439190614eca565b9050919050565b612352612c11565b73ffffffffffffffffffffffffffffffffffffffff16612370611f2d565b73ffffffffffffffffffffffffffffffffffffffff16146123c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bd906147c2565b60405180910390fd5b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b612429612c11565b73ffffffffffffffffffffffffffffffffffffffff16612447611f2d565b73ffffffffffffffffffffffffffffffffffffffff161461249d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612494906147c2565b60405180910390fd5b6001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601360009054906101000a900460ff1681565b61251c612516612c11565b83612d3e565b61255b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255290614a6b565b60405180910390fd5b6125678484848461315c565b50505050565b600c805461257a90614811565b80601f01602080910402602001604051908101604052809291908181526020018280546125a690614811565b80156125f35780601f106125c8576101008083540402835291602001916125f3565b820191906000526020600020905b8154815290600101906020018083116125d657829003601f168201915b505050505081565b606061260682612c19565b612645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263c90615440565b60405180910390fd5b60001515601360019054906101000a900460ff16151514156126f3576014805461266e90614811565b80601f016020809104026020016040519081016040528092919081815260200182805461269a90614811565b80156126e75780601f106126bc576101008083540402835291602001916126e7565b820191906000526020600020905b8154815290600101906020018083116126ca57829003601f168201915b5050505050905061274f565b60006126fd6131b8565b9050600081511161271d576040518060200160405280600081525061274b565b806127278461324a565b600c60405160200161273b93929190615530565b6040516020818303038152906040525b9150505b919050565b600f5481565b60156020528060005260406000206000915054906101000a900460ff1681565b612782612c11565b73ffffffffffffffffffffffffffffffffffffffff166127a0611f2d565b73ffffffffffffffffffffffffffffffffffffffff16146127f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ed906147c2565b60405180910390fd5b80600c908051906020019061280c929190613cf9565b5050565b6018805461281d90614811565b80601f016020809104026020016040519081016040528092919081815260200182805461284990614811565b80156128965780601f1061286b57610100808354040283529160200191612896565b820191906000526020600020905b81548152906001019060200180831161287957829003601f168201915b505050505081565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61293a612c11565b73ffffffffffffffffffffffffffffffffffffffff16612958611f2d565b73ffffffffffffffffffffffffffffffffffffffff16146129ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a5906147c2565b60405180910390fd5b80601490805190602001906129c4929190613cf9565b5050565b6129d0612c11565b73ffffffffffffffffffffffffffffffffffffffff166129ee611f2d565b73ffffffffffffffffffffffffffffffffffffffff1614612a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3b906147c2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612ab4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aab906155d3565b60405180910390fd5b612abd81613096565b50565b612ac8612c11565b73ffffffffffffffffffffffffffffffffffffffff16612ae6611f2d565b73ffffffffffffffffffffffffffffffffffffffff1614612b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b33906147c2565b60405180910390fd5b6001601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612c0a5750612c09826133ab565b5b9050919050565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16612cf883611d35565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000612d4982612c19565b612d88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7f90615665565b60405180910390fd5b6000612d9383611d35565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612e0257508373ffffffffffffffffffffffffffffffffffffffff16612dea84610dbf565b73ffffffffffffffffffffffffffffffffffffffff16145b80612e135750612e12818561289e565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612e3c82611d35565b73ffffffffffffffffffffffffffffffffffffffff1614612e92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e89906156f7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef990615789565b60405180910390fd5b612f0d83838361348d565b612f18600082612c85565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f689190614d2c565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612fbf9190614b92565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b61309282826040518060200160405280600081525061349d565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b613167848484612e1c565b613173848484846134f8565b6131b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a99061581b565b60405180910390fd5b50505050565b6060600b80546131c790614811565b80601f01602080910402602001604051908101604052809291908181526020018280546131f390614811565b80156132405780601f1061321557610100808354040283529160200191613240565b820191906000526020600020905b81548152906001019060200180831161322357829003601f168201915b5050505050905090565b60606000821415613292576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506133a6565b600082905060005b600082146132c45780806132ad906150d4565b915050600a826132bd919061539d565b915061329a565b60008167ffffffffffffffff8111156132e0576132df6143b1565b5b6040519080825280601f01601f1916602001820160405280156133125781602001600182028036833780820191505090505b5090505b6000851461339f5760018261332b9190614d2c565b9150600a8561333a919061583b565b60306133469190614b92565b60f81b81838151811061335c5761335b61511d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85613398919061539d565b9450613316565b8093505050505b919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061347657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061348657506134858261368f565b5b9050919050565b6134988383836136f9565b505050565b6134a7838361380d565b6134b460008484846134f8565b6134f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134ea9061581b565b60405180910390fd5b505050565b60006135198473ffffffffffffffffffffffffffffffffffffffff166139db565b15613682578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02613542612c11565b8786866040518563ffffffff1660e01b815260040161356494939291906158c1565b602060405180830381600087803b15801561357e57600080fd5b505af19250505080156135af57506040513d601f19601f820116820180604052508101906135ac9190615922565b60015b613632573d80600081146135df576040519150601f19603f3d011682016040523d82523d6000602084013e6135e4565b606091505b5060008151141561362a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136219061581b565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050613687565b600190505b949350505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6137048383836139ee565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561374757613742816139f3565b613786565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614613785576137848382613a3c565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156137c9576137c481613ba9565b613808565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614613807576138068282613c7a565b5b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561387d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138749061599b565b60405180910390fd5b61388681612c19565b156138c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138bd90615a07565b60405180910390fd5b6138d26000838361348d565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546139229190614b92565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b60006001613a4984611de7565b613a539190614d2c565b9050600060076000848152602001908152602001600020549050818114613b38576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600880549050613bbd9190614d2c565b9050600060096000848152602001908152602001600020549050600060088381548110613bed57613bec61511d565b5b906000526020600020015490508060088381548110613c0f57613c0e61511d565b5b906000526020600020018190555081600960008381526020019081526020016000208190555060096000858152602001908152602001600020600090556008805480613c5e57613c5d615a27565b5b6001900381819060005260206000200160009055905550505050565b6000613c8583611de7565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b828054613d0590614811565b90600052602060002090601f016020900481019282613d275760008555613d6e565b82601f10613d4057805160ff1916838001178555613d6e565b82800160010185558215613d6e579182015b82811115613d6d578251825591602001919060010190613d52565b5b509050613d7b9190613e05565b5090565b828054613d8b90614811565b90600052602060002090601f016020900481019282613dad5760008555613df4565b82601f10613dc657803560ff1916838001178555613df4565b82800160010185558215613df4579182015b82811115613df3578235825591602001919060010190613dd8565b5b509050613e019190613e05565b5090565b5b80821115613e1e576000816000905550600101613e06565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613e6b81613e36565b8114613e7657600080fd5b50565b600081359050613e8881613e62565b92915050565b600060208284031215613ea457613ea3613e2c565b5b6000613eb284828501613e79565b91505092915050565b60008115159050919050565b613ed081613ebb565b82525050565b6000602082019050613eeb6000830184613ec7565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613f1c82613ef1565b9050919050565b613f2c81613f11565b8114613f3757600080fd5b50565b600081359050613f4981613f23565b92915050565b60006bffffffffffffffffffffffff82169050919050565b613f7081613f4f565b8114613f7b57600080fd5b50565b600081359050613f8d81613f67565b92915050565b60008060408385031215613faa57613fa9613e2c565b5b6000613fb885828601613f3a565b9250506020613fc985828601613f7e565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561400d578082015181840152602081019050613ff2565b8381111561401c576000848401525b50505050565b6000601f19601f8301169050919050565b600061403e82613fd3565b6140488185613fde565b9350614058818560208601613fef565b61406181614022565b840191505092915050565b600060208201905081810360008301526140868184614033565b905092915050565b6000819050919050565b6140a18161408e565b81146140ac57600080fd5b50565b6000813590506140be81614098565b92915050565b6000602082840312156140da576140d9613e2c565b5b60006140e8848285016140af565b91505092915050565b6140fa81613f11565b82525050565b600060208201905061411560008301846140f1565b92915050565b6000806040838503121561413257614131613e2c565b5b600061414085828601613f3a565b9250506020614151858286016140af565b9150509250929050565b6141648161408e565b82525050565b600060208201905061417f600083018461415b565b92915050565b60008060006060848603121561419e5761419d613e2c565b5b60006141ac86828701613f3a565b93505060206141bd86828701613f3a565b92505060406141ce868287016140af565b9150509250925092565b6141e181613ebb565b81146141ec57600080fd5b50565b6000813590506141fe816141d8565b92915050565b60006020828403121561421a57614219613e2c565b5b6000614228848285016141ef565b91505092915050565b6000806040838503121561424857614247613e2c565b5b6000614256858286016140af565b9250506020614267858286016140af565b9150509250929050565b600060408201905061428660008301856140f1565b614293602083018461415b565b9392505050565b6000602082840312156142b0576142af613e2c565b5b60006142be84828501613f3a565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6142fc8161408e565b82525050565b600061430e83836142f3565b60208301905092915050565b6000602082019050919050565b6000614332826142c7565b61433c81856142d2565b9350614347836142e3565b8060005b8381101561437857815161435f8882614302565b975061436a8361431a565b92505060018101905061434b565b5085935050505092915050565b6000602082019050818103600083015261439f8184614327565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6143e982614022565b810181811067ffffffffffffffff82111715614408576144076143b1565b5b80604052505050565b600061441b613e22565b905061442782826143e0565b919050565b600067ffffffffffffffff821115614447576144466143b1565b5b61445082614022565b9050602081019050919050565b82818337600083830152505050565b600061447f61447a8461442c565b614411565b90508281526020810184848401111561449b5761449a6143ac565b5b6144a684828561445d565b509392505050565b600082601f8301126144c3576144c26143a7565b5b81356144d384826020860161446c565b91505092915050565b6000602082840312156144f2576144f1613e2c565b5b600082013567ffffffffffffffff8111156145105761450f613e31565b5b61451c848285016144ae565b91505092915050565b600080fd5b600080fd5b60008083601f840112614545576145446143a7565b5b8235905067ffffffffffffffff81111561456257614561614525565b5b60208301915083600182028301111561457e5761457d61452a565b5b9250929050565b6000806020838503121561459c5761459b613e2c565b5b600083013567ffffffffffffffff8111156145ba576145b9613e31565b5b6145c68582860161452f565b92509250509250929050565b600080604083850312156145e9576145e8613e2c565b5b60006145f785828601613f3a565b9250506020614608858286016141ef565b9150509250929050565b600067ffffffffffffffff82111561462d5761462c6143b1565b5b61463682614022565b9050602081019050919050565b600061465661465184614612565b614411565b905082815260208101848484011115614672576146716143ac565b5b61467d84828561445d565b509392505050565b600082601f83011261469a576146996143a7565b5b81356146aa848260208601614643565b91505092915050565b600080600080608085870312156146cd576146cc613e2c565b5b60006146db87828801613f3a565b94505060206146ec87828801613f3a565b93505060406146fd878288016140af565b925050606085013567ffffffffffffffff81111561471e5761471d613e31565b5b61472a87828801614685565b91505092959194509250565b6000806040838503121561474d5761474c613e2c565b5b600061475b85828601613f3a565b925050602061476c85828601613f3a565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006147ac602083613fde565b91506147b782614776565b602082019050919050565b600060208201905081810360008301526147db8161479f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061482957607f821691505b6020821081141561483d5761483c6147e2565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b600061489f602c83613fde565b91506148aa82614843565b604082019050919050565b600060208201905081810360008301526148ce81614892565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000614931602183613fde565b915061493c826148d5565b604082019050919050565b6000602082019050818103600083015261496081614924565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b60006149c3603883613fde565b91506149ce82614967565b604082019050919050565b600060208201905081810360008301526149f2816149b6565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b6000614a55603183613fde565b9150614a60826149f9565b604082019050919050565b60006020820190508181036000830152614a8481614a48565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000614ae7602b83613fde565b9150614af282614a8b565b604082019050919050565b60006020820190508181036000830152614b1681614ada565b9050919050565b600081905092915050565b50565b6000614b38600083614b1d565b9150614b4382614b28565b600082019050919050565b6000614b5982614b2b565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614b9d8261408e565b9150614ba88361408e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614bdd57614bdc614b63565b5b828201905092915050565b7f4d696e74696e67206973207374696c6c207475726e6564206f66660000000000600082015250565b6000614c1e601b83613fde565b9150614c2982614be8565b602082019050919050565b60006020820190508181036000830152614c4d81614c11565b9050919050565b7f4d696e74696e672069732063757272656e746c79207061757365640000000000600082015250565b6000614c8a601b83613fde565b9150614c9582614c54565b602082019050919050565b60006020820190508181036000830152614cb981614c7d565b9050919050565b7f4d696e74206d7573742062652067726561746572207468616e207a65726f0000600082015250565b6000614cf6601e83613fde565b9150614d0182614cc0565b602082019050919050565b60006020820190508181036000830152614d2581614ce9565b9050919050565b6000614d378261408e565b9150614d428361408e565b925082821015614d5557614d54614b63565b5b828203905092915050565b7f4f6e6c79207265736572766564206d696e747320617265206c65667400000000600082015250565b6000614d96601c83613fde565b9150614da182614d60565b602082019050919050565b60006020820190508181036000830152614dc581614d89565b9050919050565b7f596f7520646964206e6f7420636f6e7472696275746520746f2074686973207060008201527f726f6a65637420617320616e2061727469737400000000000000000000000000602082015250565b6000614e28603383613fde565b9150614e3382614dcc565b604082019050919050565b60006020820190508181036000830152614e5781614e1b565b9050919050565b7f596f75206d757374206d696e742065786163746c792035000000000000000000600082015250565b6000614e94601783613fde565b9150614e9f82614e5e565b602082019050919050565b60006020820190508181036000830152614ec381614e87565b9050919050565b6000614ed58261408e565b9150614ee08361408e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614f1957614f18614b63565b5b828202905092915050565b7f5061796d656e74206d7573742062652065786163746c79203020657468000000600082015250565b6000614f5a601d83613fde565b9150614f6582614f24565b602082019050919050565b60006020820190508181036000830152614f8981614f4d565b9050919050565b7f596f7520617265206e6f74206f6e20746865206672656e73206c697374000000600082015250565b6000614fc6601d83613fde565b9150614fd182614f90565b602082019050919050565b60006020820190508181036000830152614ff581614fb9565b9050919050565b7f596f75206d757374206d696e742065786163746c792031000000000000000000600082015250565b6000615032601783613fde565b915061503d82614ffc565b602082019050919050565b6000602082019050818103600083015261506181615025565b9050919050565b7f4e6f7420656e6f75676820657468000000000000000000000000000000000000600082015250565b600061509e600e83613fde565b91506150a982615068565b602082019050919050565b600060208201905081810360008301526150cd81615091565b9050919050565b60006150df8261408e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561511257615111614b63565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b60006151a8602c83613fde565b91506151b38261514c565b604082019050919050565b600060208201905081810360008301526151d78161519b565b9050919050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b600061523a602983613fde565b9150615245826151de565b604082019050919050565b600060208201905081810360008301526152698161522d565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b60006152cc602a83613fde565b91506152d782615270565b604082019050919050565b600060208201905081810360008301526152fb816152bf565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000615338601983613fde565b915061534382615302565b602082019050919050565b600060208201905081810360008301526153678161532b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006153a88261408e565b91506153b38361408e565b9250826153c3576153c261536e565b5b828204905092915050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b600061542a602f83613fde565b9150615435826153ce565b604082019050919050565b600060208201905081810360008301526154598161541d565b9050919050565b600081905092915050565b600061547682613fd3565b6154808185615460565b9350615490818560208601613fef565b80840191505092915050565b60008190508160005260206000209050919050565b600081546154be81614811565b6154c88186615460565b945060018216600081146154e357600181146154f457615527565b60ff19831686528186019350615527565b6154fd8561549c565b60005b8381101561551f57815481890152600182019150602081019050615500565b838801955050505b50505092915050565b600061553c828661546b565b9150615548828561546b565b915061555482846154b1565b9150819050949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006155bd602683613fde565b91506155c882615561565b604082019050919050565b600060208201905081810360008301526155ec816155b0565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b600061564f602c83613fde565b915061565a826155f3565b604082019050919050565b6000602082019050818103600083015261567e81615642565b9050919050565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b60006156e1602983613fde565b91506156ec82615685565b604082019050919050565b60006020820190508181036000830152615710816156d4565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615773602483613fde565b915061577e82615717565b604082019050919050565b600060208201905081810360008301526157a281615766565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000615805603283613fde565b9150615810826157a9565b604082019050919050565b60006020820190508181036000830152615834816157f8565b9050919050565b60006158468261408e565b91506158518361408e565b9250826158615761586061536e565b5b828206905092915050565b600081519050919050565b600082825260208201905092915050565b60006158938261586c565b61589d8185615877565b93506158ad818560208601613fef565b6158b681614022565b840191505092915050565b60006080820190506158d660008301876140f1565b6158e360208301866140f1565b6158f0604083018561415b565b81810360608301526159028184615888565b905095945050505050565b60008151905061591c81613e62565b92915050565b60006020828403121561593857615937613e2c565b5b60006159468482850161590d565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000615985602083613fde565b91506159908261594f565b602082019050919050565b600060208201905081810360008301526159b481615978565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b60006159f1601c83613fde565b91506159fc826159bb565b602082019050919050565b60006020820190508181036000830152615a20816159e4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220c9de5a5f67c3a57014b0643d147cf8b47e6c16cded2207324fba8d30ca4739de64736f6c63430008090033000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000018838370f340000000000000000000000000000000000000000000000000000000000000001a0a0000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000006357ff3900000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000000fa0000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000000c5375732053656167756c6c730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000547554c4c530000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d5375586954546b416136474e35347470727a334a7a7476616b31714764383639396b4670747a796765346b6d2f000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d5375586954546b416136474e35347470727a334a7a7476616b31714764383639396b4670747a796765346b6d00000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d617168616f5439375653685a754b6e44555a7852734755536a42677a553545484d41555662537a64447a6d440000000000000000000000
Deployed Bytecode
0x6080604052600436106102e45760003560e01c806355f804b311610190578063af850043116100dc578063d6eb510211610095578063e985e9c51161006f578063e985e9c514610b41578063f2c4ce1e14610b7e578063f2fde38b14610ba7578063fc9525f014610bd0576102e4565b8063d6eb510214610ab0578063da3ef23f14610aed578063e8a3d48514610b16576102e4565b8063af850043146109a0578063b187bd26146109c9578063b88d4fde146109f4578063c668286214610a1d578063c87b56dd14610a48578063d5abeb0114610a85576102e4565b80638da5cb5b116101495780639a5d140b116101235780639a5d140b146108e8578063a22cb46514610911578063a2e696131461093a578063aa3b1b3014610977576102e4565b80638da5cb5b14610869578063938e3d7b1461089457806395d89b41146108bd576102e4565b806355f804b3146107595780635b70ea9f146107825780636352211e146107ad57806370a08231146107ea578063715018a614610827578063872bdcdb1461083e576102e4565b80632a55205a1161024f578063438b63001161020857806349a5980a116101e257806349a5980a1461069f5780634f6ccce7146106c857806354214f69146107055780635428ba7e14610730576102e4565b8063438b63001461060e57806344a0d68a1461064b57806344d19d2b14610674576102e4565b80632a55205a146105075780632f745c59146105455780632f9928d5146105825780633ccfd60b146105bf57806340c10f19146105c957806342842e0e146105e5576102e4565b806313faede6116102a157806313faede61461040b57806318160ddd1461043657806319188c35146104615780631e13f86b1461048c57806323b872dd146104b5578063240976bf146104de576102e4565b806301ffc9a7146102e957806302fa7c471461032657806306fdde031461034f578063081812fc1461037a578063081c8c44146103b7578063095ea7b3146103e2575b600080fd5b3480156102f557600080fd5b50610310600480360381019061030b9190613e8e565b610bf9565b60405161031d9190613ed6565b60405180910390f35b34801561033257600080fd5b5061034d60048036038101906103489190613f93565b610c3b565b005b34801561035b57600080fd5b50610364610d2d565b604051610371919061406c565b60405180910390f35b34801561038657600080fd5b506103a1600480360381019061039c91906140c4565b610dbf565b6040516103ae9190614100565b60405180910390f35b3480156103c357600080fd5b506103cc610e44565b6040516103d9919061406c565b60405180910390f35b3480156103ee57600080fd5b506104096004803603810190610404919061411b565b610ed2565b005b34801561041757600080fd5b50610420610fea565b60405161042d919061416a565b60405180910390f35b34801561044257600080fd5b5061044b610ff0565b604051610458919061416a565b60405180910390f35b34801561046d57600080fd5b50610476610ffd565b604051610483919061416a565b60405180910390f35b34801561049857600080fd5b506104b360048036038101906104ae91906140c4565b611003565b005b3480156104c157600080fd5b506104dc60048036038101906104d79190614185565b611089565b005b3480156104ea57600080fd5b5061050560048036038101906105009190614204565b6110e9565b005b34801561051357600080fd5b5061052e60048036038101906105299190614231565b611182565b60405161053c929190614271565b60405180910390f35b34801561055157600080fd5b5061056c6004803603810190610567919061411b565b6111bc565b604051610579919061416a565b60405180910390f35b34801561058e57600080fd5b506105a960048036038101906105a4919061429a565b611261565b6040516105b69190613ed6565b60405180910390f35b6105c7611281565b005b6105e360048036038101906105de919061411b565b611376565b005b3480156105f157600080fd5b5061060c60048036038101906106079190614185565b61194b565b005b34801561061a57600080fd5b506106356004803603810190610630919061429a565b61196b565b6040516106429190614385565b60405180910390f35b34801561065757600080fd5b50610672600480360381019061066d91906140c4565b611a19565b005b34801561068057600080fd5b50610689611a9f565b604051610696919061416a565b60405180910390f35b3480156106ab57600080fd5b506106c660048036038101906106c19190614204565b611aa5565b005b3480156106d457600080fd5b506106ef60048036038101906106ea91906140c4565b611b3e565b6040516106fc919061416a565b60405180910390f35b34801561071157600080fd5b5061071a611baf565b6040516107279190613ed6565b60405180910390f35b34801561073c57600080fd5b506107576004803603810190610752919061429a565b611bc2565b005b34801561076557600080fd5b50610780600480360381019061077b91906144dc565b611c99565b005b34801561078e57600080fd5b50610797611d2f565b6040516107a4919061416a565b60405180910390f35b3480156107b957600080fd5b506107d460048036038101906107cf91906140c4565b611d35565b6040516107e19190614100565b60405180910390f35b3480156107f657600080fd5b50610811600480360381019061080c919061429a565b611de7565b60405161081e919061416a565b60405180910390f35b34801561083357600080fd5b5061083c611e9f565b005b34801561084a57600080fd5b50610853611f27565b604051610860919061416a565b60405180910390f35b34801561087557600080fd5b5061087e611f2d565b60405161088b9190614100565b60405180910390f35b3480156108a057600080fd5b506108bb60048036038101906108b69190614585565b611f57565b005b3480156108c957600080fd5b506108d2611fe9565b6040516108df919061406c565b60405180910390f35b3480156108f457600080fd5b5061090f600480360381019061090a91906140c4565b61207b565b005b34801561091d57600080fd5b50610938600480360381019061093391906145d2565b61217f565b005b34801561094657600080fd5b50610961600480360381019061095c91906140c4565b612300565b60405161096e919061416a565b60405180910390f35b34801561098357600080fd5b5061099e6004803603810190610999919061429a565b61234a565b005b3480156109ac57600080fd5b506109c760048036038101906109c2919061429a565b612421565b005b3480156109d557600080fd5b506109de6124f8565b6040516109eb9190613ed6565b60405180910390f35b348015610a0057600080fd5b50610a1b6004803603810190610a1691906146b3565b61250b565b005b348015610a2957600080fd5b50610a3261256d565b604051610a3f919061406c565b60405180910390f35b348015610a5457600080fd5b50610a6f6004803603810190610a6a91906140c4565b6125fb565b604051610a7c919061406c565b60405180910390f35b348015610a9157600080fd5b50610a9a612754565b604051610aa7919061416a565b60405180910390f35b348015610abc57600080fd5b50610ad76004803603810190610ad2919061429a565b61275a565b604051610ae49190613ed6565b60405180910390f35b348015610af957600080fd5b50610b146004803603810190610b0f91906144dc565b61277a565b005b348015610b2257600080fd5b50610b2b612810565b604051610b38919061406c565b60405180910390f35b348015610b4d57600080fd5b50610b686004803603810190610b639190614736565b61289e565b604051610b759190613ed6565b60405180910390f35b348015610b8a57600080fd5b50610ba56004803603810190610ba091906144dc565b612932565b005b348015610bb357600080fd5b50610bce6004803603810190610bc9919061429a565b6129c8565b005b348015610bdc57600080fd5b50610bf76004803603810190610bf2919061429a565b612ac0565b005b6000632a55205a60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610c345750610c3382612b97565b5b9050919050565b610c43612c11565b73ffffffffffffffffffffffffffffffffffffffff16610c61611f2d565b73ffffffffffffffffffffffffffffffffffffffff1614610cb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cae906147c2565b60405180910390fd5b81601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055505050565b606060008054610d3c90614811565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6890614811565b8015610db55780601f10610d8a57610100808354040283529160200191610db5565b820191906000526020600020905b815481529060010190602001808311610d9857829003601f168201915b5050505050905090565b6000610dca82612c19565b610e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e00906148b5565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60148054610e5190614811565b80601f0160208091040260200160405190810160405280929190818152602001828054610e7d90614811565b8015610eca5780601f10610e9f57610100808354040283529160200191610eca565b820191906000526020600020905b815481529060010190602001808311610ead57829003601f168201915b505050505081565b6000610edd82611d35565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4590614947565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610f6d612c11565b73ffffffffffffffffffffffffffffffffffffffff161480610f9c5750610f9b81610f96612c11565b61289e565b5b610fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd2906149d9565b60405180910390fd5b610fe58383612c85565b505050565b600e5481565b6000600880549050905090565b60115481565b61100b612c11565b73ffffffffffffffffffffffffffffffffffffffff16611029611f2d565b73ffffffffffffffffffffffffffffffffffffffff161461107f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611076906147c2565b60405180910390fd5b8060108190555050565b61109a611094612c11565b82612d3e565b6110d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d090614a6b565b60405180910390fd5b6110e4838383612e1c565b505050565b6110f1612c11565b73ffffffffffffffffffffffffffffffffffffffff1661110f611f2d565b73ffffffffffffffffffffffffffffffffffffffff1614611165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115c906147c2565b60405180910390fd5b80601360006101000a81548160ff02191690831515021790555050565b600080601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166111b184612300565b915091509250929050565b60006111c783611de7565b8210611208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ff90614afd565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b60166020528060005260406000206000915054906101000a900460ff1681565b611289612c11565b73ffffffffffffffffffffffffffffffffffffffff166112a7611f2d565b73ffffffffffffffffffffffffffffffffffffffff16146112fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f4906147c2565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff164760405161132390614b4e565b60006040518083038185875af1925050503d8060008114611360576040519150601f19603f3d011682016040523d82523d6000602084013e611365565b606091505b505090508061137357600080fd5b50565b6012546011546113869190614b92565b4210156113c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bf90614c34565b60405180910390fd5b60006113d2610ff0565b9050601360009054906101000a900460ff1615611424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141b90614ca0565b60405180910390fd5b60008211611467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145e90614d0c565b60405180910390fd5b601054600f546114779190614d2c565b82826114839190614b92565b11156114c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bb90614dac565b60405180910390fd5b6114cc611f2d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461190f5760011515601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156116dd576001601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790556115ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e490614e3e565b60405180910390fd5b60058214611630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162790614eaa565b60405180910390fd5b81600d5461163e9190614eca565b341015611680576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167790614f70565b60405180910390fd5b6000601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061190e565b60011515601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514156118bc576001601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790556117cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c390614fdc565b60405180910390fd5b6001821461180f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180690615048565b60405180910390fd5b81600d5461181d9190614eca565b34101561185f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185690614f70565b60405180910390fd5b6000601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061190d565b81600e546118ca9190614eca565b34101561190c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611903906150b4565b60405180910390fd5b5b5b5b6000600190505b8281116119455761193284828461192d9190614b92565b613078565b808061193d906150d4565b915050611916565b50505050565b6119668383836040518060200160405280600081525061250b565b505050565b6060600061197883611de7565b905060008167ffffffffffffffff811115611996576119956143b1565b5b6040519080825280602002602001820160405280156119c45781602001602082028036833780820191505090505b50905060005b82811015611a0e576119dc85826111bc565b8282815181106119ef576119ee61511d565b5b6020026020010181815250508080611a06906150d4565b9150506119ca565b508092505050919050565b611a21612c11565b73ffffffffffffffffffffffffffffffffffffffff16611a3f611f2d565b73ffffffffffffffffffffffffffffffffffffffff1614611a95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8c906147c2565b60405180910390fd5b80600e8190555050565b60105481565b611aad612c11565b73ffffffffffffffffffffffffffffffffffffffff16611acb611f2d565b73ffffffffffffffffffffffffffffffffffffffff1614611b21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b18906147c2565b60405180910390fd5b80601360016101000a81548160ff02191690831515021790555050565b6000611b48610ff0565b8210611b89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b80906151be565b60405180910390fd5b60088281548110611b9d57611b9c61511d565b5b90600052602060002001549050919050565b601360019054906101000a900460ff1681565b611bca612c11565b73ffffffffffffffffffffffffffffffffffffffff16611be8611f2d565b73ffffffffffffffffffffffffffffffffffffffff1614611c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c35906147c2565b60405180910390fd5b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611ca1612c11565b73ffffffffffffffffffffffffffffffffffffffff16611cbf611f2d565b73ffffffffffffffffffffffffffffffffffffffff1614611d15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0c906147c2565b60405180910390fd5b80600b9080519060200190611d2b929190613cf9565b5050565b600d5481565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611dde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd590615250565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4f906152e2565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611ea7612c11565b73ffffffffffffffffffffffffffffffffffffffff16611ec5611f2d565b73ffffffffffffffffffffffffffffffffffffffff1614611f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f12906147c2565b60405180910390fd5b611f256000613096565b565b60125481565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611f5f612c11565b73ffffffffffffffffffffffffffffffffffffffff16611f7d611f2d565b73ffffffffffffffffffffffffffffffffffffffff1614611fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fca906147c2565b60405180910390fd5b818160189190611fe4929190613d7f565b505050565b606060018054611ff890614811565b80601f016020809104026020016040519081016040528092919081815260200182805461202490614811565b80156120715780601f1061204657610100808354040283529160200191612071565b820191906000526020600020905b81548152906001019060200180831161205457829003601f168201915b5050505050905090565b612083612c11565b73ffffffffffffffffffffffffffffffffffffffff166120a1611f2d565b73ffffffffffffffffffffffffffffffffffffffff16146120f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ee906147c2565b60405180910390fd5b6000612101610ff0565b9050601360009054906101000a900460ff161561211d57600080fd5b6000821161212a57600080fd5b600f5482826121399190614b92565b111561214457600080fd5b6000600190505b82811161217a576121673382846121629190614b92565b613078565b8080612172906150d4565b91505061214b565b505050565b612187612c11565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156121f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ec9061534e565b60405180910390fd5b8060056000612202612c11565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166122af612c11565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516122f49190613ed6565b60405180910390a35050565b6000601760009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff1661271083612339919061539d565b6123439190614eca565b9050919050565b612352612c11565b73ffffffffffffffffffffffffffffffffffffffff16612370611f2d565b73ffffffffffffffffffffffffffffffffffffffff16146123c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123bd906147c2565b60405180910390fd5b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b612429612c11565b73ffffffffffffffffffffffffffffffffffffffff16612447611f2d565b73ffffffffffffffffffffffffffffffffffffffff161461249d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612494906147c2565b60405180910390fd5b6001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601360009054906101000a900460ff1681565b61251c612516612c11565b83612d3e565b61255b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255290614a6b565b60405180910390fd5b6125678484848461315c565b50505050565b600c805461257a90614811565b80601f01602080910402602001604051908101604052809291908181526020018280546125a690614811565b80156125f35780601f106125c8576101008083540402835291602001916125f3565b820191906000526020600020905b8154815290600101906020018083116125d657829003601f168201915b505050505081565b606061260682612c19565b612645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263c90615440565b60405180910390fd5b60001515601360019054906101000a900460ff16151514156126f3576014805461266e90614811565b80601f016020809104026020016040519081016040528092919081815260200182805461269a90614811565b80156126e75780601f106126bc576101008083540402835291602001916126e7565b820191906000526020600020905b8154815290600101906020018083116126ca57829003601f168201915b5050505050905061274f565b60006126fd6131b8565b9050600081511161271d576040518060200160405280600081525061274b565b806127278461324a565b600c60405160200161273b93929190615530565b6040516020818303038152906040525b9150505b919050565b600f5481565b60156020528060005260406000206000915054906101000a900460ff1681565b612782612c11565b73ffffffffffffffffffffffffffffffffffffffff166127a0611f2d565b73ffffffffffffffffffffffffffffffffffffffff16146127f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ed906147c2565b60405180910390fd5b80600c908051906020019061280c929190613cf9565b5050565b6018805461281d90614811565b80601f016020809104026020016040519081016040528092919081815260200182805461284990614811565b80156128965780601f1061286b57610100808354040283529160200191612896565b820191906000526020600020905b81548152906001019060200180831161287957829003601f168201915b505050505081565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61293a612c11565b73ffffffffffffffffffffffffffffffffffffffff16612958611f2d565b73ffffffffffffffffffffffffffffffffffffffff16146129ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a5906147c2565b60405180910390fd5b80601490805190602001906129c4929190613cf9565b5050565b6129d0612c11565b73ffffffffffffffffffffffffffffffffffffffff166129ee611f2d565b73ffffffffffffffffffffffffffffffffffffffff1614612a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3b906147c2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612ab4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aab906155d3565b60405180910390fd5b612abd81613096565b50565b612ac8612c11565b73ffffffffffffffffffffffffffffffffffffffff16612ae6611f2d565b73ffffffffffffffffffffffffffffffffffffffff1614612b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b33906147c2565b60405180910390fd5b6001601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612c0a5750612c09826133ab565b5b9050919050565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16612cf883611d35565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000612d4982612c19565b612d88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7f90615665565b60405180910390fd5b6000612d9383611d35565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612e0257508373ffffffffffffffffffffffffffffffffffffffff16612dea84610dbf565b73ffffffffffffffffffffffffffffffffffffffff16145b80612e135750612e12818561289e565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612e3c82611d35565b73ffffffffffffffffffffffffffffffffffffffff1614612e92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e89906156f7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef990615789565b60405180910390fd5b612f0d83838361348d565b612f18600082612c85565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f689190614d2c565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612fbf9190614b92565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b61309282826040518060200160405280600081525061349d565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b613167848484612e1c565b613173848484846134f8565b6131b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131a99061581b565b60405180910390fd5b50505050565b6060600b80546131c790614811565b80601f01602080910402602001604051908101604052809291908181526020018280546131f390614811565b80156132405780601f1061321557610100808354040283529160200191613240565b820191906000526020600020905b81548152906001019060200180831161322357829003601f168201915b5050505050905090565b60606000821415613292576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506133a6565b600082905060005b600082146132c45780806132ad906150d4565b915050600a826132bd919061539d565b915061329a565b60008167ffffffffffffffff8111156132e0576132df6143b1565b5b6040519080825280601f01601f1916602001820160405280156133125781602001600182028036833780820191505090505b5090505b6000851461339f5760018261332b9190614d2c565b9150600a8561333a919061583b565b60306133469190614b92565b60f81b81838151811061335c5761335b61511d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85613398919061539d565b9450613316565b8093505050505b919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061347657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061348657506134858261368f565b5b9050919050565b6134988383836136f9565b505050565b6134a7838361380d565b6134b460008484846134f8565b6134f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134ea9061581b565b60405180910390fd5b505050565b60006135198473ffffffffffffffffffffffffffffffffffffffff166139db565b15613682578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02613542612c11565b8786866040518563ffffffff1660e01b815260040161356494939291906158c1565b602060405180830381600087803b15801561357e57600080fd5b505af19250505080156135af57506040513d601f19601f820116820180604052508101906135ac9190615922565b60015b613632573d80600081146135df576040519150601f19603f3d011682016040523d82523d6000602084013e6135e4565b606091505b5060008151141561362a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136219061581b565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050613687565b600190505b949350505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6137048383836139ee565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561374757613742816139f3565b613786565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614613785576137848382613a3c565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156137c9576137c481613ba9565b613808565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614613807576138068282613c7a565b5b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561387d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138749061599b565b60405180910390fd5b61388681612c19565b156138c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138bd90615a07565b60405180910390fd5b6138d26000838361348d565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546139229190614b92565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b60006001613a4984611de7565b613a539190614d2c565b9050600060076000848152602001908152602001600020549050818114613b38576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600880549050613bbd9190614d2c565b9050600060096000848152602001908152602001600020549050600060088381548110613bed57613bec61511d565b5b906000526020600020015490508060088381548110613c0f57613c0e61511d565b5b906000526020600020018190555081600960008381526020019081526020016000208190555060096000858152602001908152602001600020600090556008805480613c5e57613c5d615a27565b5b6001900381819060005260206000200160009055905550505050565b6000613c8583611de7565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b828054613d0590614811565b90600052602060002090601f016020900481019282613d275760008555613d6e565b82601f10613d4057805160ff1916838001178555613d6e565b82800160010185558215613d6e579182015b82811115613d6d578251825591602001919060010190613d52565b5b509050613d7b9190613e05565b5090565b828054613d8b90614811565b90600052602060002090601f016020900481019282613dad5760008555613df4565b82601f10613dc657803560ff1916838001178555613df4565b82800160010185558215613df4579182015b82811115613df3578235825591602001919060010190613dd8565b5b509050613e019190613e05565b5090565b5b80821115613e1e576000816000905550600101613e06565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613e6b81613e36565b8114613e7657600080fd5b50565b600081359050613e8881613e62565b92915050565b600060208284031215613ea457613ea3613e2c565b5b6000613eb284828501613e79565b91505092915050565b60008115159050919050565b613ed081613ebb565b82525050565b6000602082019050613eeb6000830184613ec7565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613f1c82613ef1565b9050919050565b613f2c81613f11565b8114613f3757600080fd5b50565b600081359050613f4981613f23565b92915050565b60006bffffffffffffffffffffffff82169050919050565b613f7081613f4f565b8114613f7b57600080fd5b50565b600081359050613f8d81613f67565b92915050565b60008060408385031215613faa57613fa9613e2c565b5b6000613fb885828601613f3a565b9250506020613fc985828601613f7e565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561400d578082015181840152602081019050613ff2565b8381111561401c576000848401525b50505050565b6000601f19601f8301169050919050565b600061403e82613fd3565b6140488185613fde565b9350614058818560208601613fef565b61406181614022565b840191505092915050565b600060208201905081810360008301526140868184614033565b905092915050565b6000819050919050565b6140a18161408e565b81146140ac57600080fd5b50565b6000813590506140be81614098565b92915050565b6000602082840312156140da576140d9613e2c565b5b60006140e8848285016140af565b91505092915050565b6140fa81613f11565b82525050565b600060208201905061411560008301846140f1565b92915050565b6000806040838503121561413257614131613e2c565b5b600061414085828601613f3a565b9250506020614151858286016140af565b9150509250929050565b6141648161408e565b82525050565b600060208201905061417f600083018461415b565b92915050565b60008060006060848603121561419e5761419d613e2c565b5b60006141ac86828701613f3a565b93505060206141bd86828701613f3a565b92505060406141ce868287016140af565b9150509250925092565b6141e181613ebb565b81146141ec57600080fd5b50565b6000813590506141fe816141d8565b92915050565b60006020828403121561421a57614219613e2c565b5b6000614228848285016141ef565b91505092915050565b6000806040838503121561424857614247613e2c565b5b6000614256858286016140af565b9250506020614267858286016140af565b9150509250929050565b600060408201905061428660008301856140f1565b614293602083018461415b565b9392505050565b6000602082840312156142b0576142af613e2c565b5b60006142be84828501613f3a565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6142fc8161408e565b82525050565b600061430e83836142f3565b60208301905092915050565b6000602082019050919050565b6000614332826142c7565b61433c81856142d2565b9350614347836142e3565b8060005b8381101561437857815161435f8882614302565b975061436a8361431a565b92505060018101905061434b565b5085935050505092915050565b6000602082019050818103600083015261439f8184614327565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6143e982614022565b810181811067ffffffffffffffff82111715614408576144076143b1565b5b80604052505050565b600061441b613e22565b905061442782826143e0565b919050565b600067ffffffffffffffff821115614447576144466143b1565b5b61445082614022565b9050602081019050919050565b82818337600083830152505050565b600061447f61447a8461442c565b614411565b90508281526020810184848401111561449b5761449a6143ac565b5b6144a684828561445d565b509392505050565b600082601f8301126144c3576144c26143a7565b5b81356144d384826020860161446c565b91505092915050565b6000602082840312156144f2576144f1613e2c565b5b600082013567ffffffffffffffff8111156145105761450f613e31565b5b61451c848285016144ae565b91505092915050565b600080fd5b600080fd5b60008083601f840112614545576145446143a7565b5b8235905067ffffffffffffffff81111561456257614561614525565b5b60208301915083600182028301111561457e5761457d61452a565b5b9250929050565b6000806020838503121561459c5761459b613e2c565b5b600083013567ffffffffffffffff8111156145ba576145b9613e31565b5b6145c68582860161452f565b92509250509250929050565b600080604083850312156145e9576145e8613e2c565b5b60006145f785828601613f3a565b9250506020614608858286016141ef565b9150509250929050565b600067ffffffffffffffff82111561462d5761462c6143b1565b5b61463682614022565b9050602081019050919050565b600061465661465184614612565b614411565b905082815260208101848484011115614672576146716143ac565b5b61467d84828561445d565b509392505050565b600082601f83011261469a576146996143a7565b5b81356146aa848260208601614643565b91505092915050565b600080600080608085870312156146cd576146cc613e2c565b5b60006146db87828801613f3a565b94505060206146ec87828801613f3a565b93505060406146fd878288016140af565b925050606085013567ffffffffffffffff81111561471e5761471d613e31565b5b61472a87828801614685565b91505092959194509250565b6000806040838503121561474d5761474c613e2c565b5b600061475b85828601613f3a565b925050602061476c85828601613f3a565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006147ac602083613fde565b91506147b782614776565b602082019050919050565b600060208201905081810360008301526147db8161479f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061482957607f821691505b6020821081141561483d5761483c6147e2565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b600061489f602c83613fde565b91506148aa82614843565b604082019050919050565b600060208201905081810360008301526148ce81614892565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000614931602183613fde565b915061493c826148d5565b604082019050919050565b6000602082019050818103600083015261496081614924565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b60006149c3603883613fde565b91506149ce82614967565b604082019050919050565b600060208201905081810360008301526149f2816149b6565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b6000614a55603183613fde565b9150614a60826149f9565b604082019050919050565b60006020820190508181036000830152614a8481614a48565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000614ae7602b83613fde565b9150614af282614a8b565b604082019050919050565b60006020820190508181036000830152614b1681614ada565b9050919050565b600081905092915050565b50565b6000614b38600083614b1d565b9150614b4382614b28565b600082019050919050565b6000614b5982614b2b565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614b9d8261408e565b9150614ba88361408e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614bdd57614bdc614b63565b5b828201905092915050565b7f4d696e74696e67206973207374696c6c207475726e6564206f66660000000000600082015250565b6000614c1e601b83613fde565b9150614c2982614be8565b602082019050919050565b60006020820190508181036000830152614c4d81614c11565b9050919050565b7f4d696e74696e672069732063757272656e746c79207061757365640000000000600082015250565b6000614c8a601b83613fde565b9150614c9582614c54565b602082019050919050565b60006020820190508181036000830152614cb981614c7d565b9050919050565b7f4d696e74206d7573742062652067726561746572207468616e207a65726f0000600082015250565b6000614cf6601e83613fde565b9150614d0182614cc0565b602082019050919050565b60006020820190508181036000830152614d2581614ce9565b9050919050565b6000614d378261408e565b9150614d428361408e565b925082821015614d5557614d54614b63565b5b828203905092915050565b7f4f6e6c79207265736572766564206d696e747320617265206c65667400000000600082015250565b6000614d96601c83613fde565b9150614da182614d60565b602082019050919050565b60006020820190508181036000830152614dc581614d89565b9050919050565b7f596f7520646964206e6f7420636f6e7472696275746520746f2074686973207060008201527f726f6a65637420617320616e2061727469737400000000000000000000000000602082015250565b6000614e28603383613fde565b9150614e3382614dcc565b604082019050919050565b60006020820190508181036000830152614e5781614e1b565b9050919050565b7f596f75206d757374206d696e742065786163746c792035000000000000000000600082015250565b6000614e94601783613fde565b9150614e9f82614e5e565b602082019050919050565b60006020820190508181036000830152614ec381614e87565b9050919050565b6000614ed58261408e565b9150614ee08361408e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614f1957614f18614b63565b5b828202905092915050565b7f5061796d656e74206d7573742062652065786163746c79203020657468000000600082015250565b6000614f5a601d83613fde565b9150614f6582614f24565b602082019050919050565b60006020820190508181036000830152614f8981614f4d565b9050919050565b7f596f7520617265206e6f74206f6e20746865206672656e73206c697374000000600082015250565b6000614fc6601d83613fde565b9150614fd182614f90565b602082019050919050565b60006020820190508181036000830152614ff581614fb9565b9050919050565b7f596f75206d757374206d696e742065786163746c792031000000000000000000600082015250565b6000615032601783613fde565b915061503d82614ffc565b602082019050919050565b6000602082019050818103600083015261506181615025565b9050919050565b7f4e6f7420656e6f75676820657468000000000000000000000000000000000000600082015250565b600061509e600e83613fde565b91506150a982615068565b602082019050919050565b600060208201905081810360008301526150cd81615091565b9050919050565b60006150df8261408e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561511257615111614b63565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b60006151a8602c83613fde565b91506151b38261514c565b604082019050919050565b600060208201905081810360008301526151d78161519b565b9050919050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b600061523a602983613fde565b9150615245826151de565b604082019050919050565b600060208201905081810360008301526152698161522d565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b60006152cc602a83613fde565b91506152d782615270565b604082019050919050565b600060208201905081810360008301526152fb816152bf565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000615338601983613fde565b915061534382615302565b602082019050919050565b600060208201905081810360008301526153678161532b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006153a88261408e565b91506153b38361408e565b9250826153c3576153c261536e565b5b828204905092915050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b600061542a602f83613fde565b9150615435826153ce565b604082019050919050565b600060208201905081810360008301526154598161541d565b9050919050565b600081905092915050565b600061547682613fd3565b6154808185615460565b9350615490818560208601613fef565b80840191505092915050565b60008190508160005260206000209050919050565b600081546154be81614811565b6154c88186615460565b945060018216600081146154e357600181146154f457615527565b60ff19831686528186019350615527565b6154fd8561549c565b60005b8381101561551f57815481890152600182019150602081019050615500565b838801955050505b50505092915050565b600061553c828661546b565b9150615548828561546b565b915061555482846154b1565b9150819050949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006155bd602683613fde565b91506155c882615561565b604082019050919050565b600060208201905081810360008301526155ec816155b0565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b600061564f602c83613fde565b915061565a826155f3565b604082019050919050565b6000602082019050818103600083015261567e81615642565b9050919050565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b60006156e1602983613fde565b91506156ec82615685565b604082019050919050565b60006020820190508181036000830152615710816156d4565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615773602483613fde565b915061577e82615717565b604082019050919050565b600060208201905081810360008301526157a281615766565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000615805603283613fde565b9150615810826157a9565b604082019050919050565b60006020820190508181036000830152615834816157f8565b9050919050565b60006158468261408e565b91506158518361408e565b9250826158615761586061536e565b5b828206905092915050565b600081519050919050565b600082825260208201905092915050565b60006158938261586c565b61589d8185615877565b93506158ad818560208601613fef565b6158b681614022565b840191505092915050565b60006080820190506158d660008301876140f1565b6158e360208301866140f1565b6158f0604083018561415b565b81810360608301526159028184615888565b905095945050505050565b60008151905061591c81613e62565b92915050565b60006020828403121561593857615937613e2c565b5b60006159468482850161590d565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000615985602083613fde565b91506159908261594f565b602082019050919050565b600060208201905081810360008301526159b481615978565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b60006159f1601c83613fde565b91506159fc826159bb565b602082019050919050565b60006020820190508181036000830152615a20816159e4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220c9de5a5f67c3a57014b0643d147cf8b47e6c16cded2207324fba8d30ca4739de64736f6c63430008090033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000018838370f340000000000000000000000000000000000000000000000000000000000000001a0a0000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000006357ff3900000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000000fa0000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000000c5375732053656167756c6c730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000547554c4c530000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d5375586954546b416136474e35347470727a334a7a7476616b31714764383639396b4670747a796765346b6d2f000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d5375586954546b416136474e35347470727a334a7a7476616b31714764383639396b4670747a796765346b6d00000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d617168616f5439375653685a754b6e44555a7852734755536a42677a553545484d41555662537a64447a6d440000000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): Sus Seagulls
Arg [1] : _symbol (string): GULLS
Arg [2] : _cost (uint256): 6900000000000000
Arg [3] : _maxSupply (uint256): 6666
Arg [4] : _reservedSupply (uint256): 66
Arg [5] : _allowMintingOn (uint256): 1666711353
Arg [6] : _initBaseURI (string): ipfs://QmSuXiTTkAa6GN54tprz3Jztvak1qGd8699kFptzyge4km/
Arg [7] : _initNotRevealedUri (string): ipfs://QmSuXiTTkAa6GN54tprz3Jztvak1qGd8699kFptzyge4km
Arg [8] : _royaltyFeesInBips (uint96): 250
Arg [9] : _contractURI (string): ipfs://QmaqhaoT97VShZuKnDUZxRsGUSjBgzU5EHMAUVbSzdDzmD
-----Encoded View---------------
23 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000180
Arg [2] : 0000000000000000000000000000000000000000000000000018838370f34000
Arg [3] : 0000000000000000000000000000000000000000000000000000000000001a0a
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000042
Arg [5] : 000000000000000000000000000000000000000000000000000000006357ff39
Arg [6] : 00000000000000000000000000000000000000000000000000000000000001c0
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000220
Arg [8] : 00000000000000000000000000000000000000000000000000000000000000fa
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000280
Arg [10] : 000000000000000000000000000000000000000000000000000000000000000c
Arg [11] : 5375732053656167756c6c730000000000000000000000000000000000000000
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [13] : 47554c4c53000000000000000000000000000000000000000000000000000000
Arg [14] : 0000000000000000000000000000000000000000000000000000000000000036
Arg [15] : 697066733a2f2f516d5375586954546b416136474e35347470727a334a7a7476
Arg [16] : 616b31714764383639396b4670747a796765346b6d2f00000000000000000000
Arg [17] : 0000000000000000000000000000000000000000000000000000000000000035
Arg [18] : 697066733a2f2f516d5375586954546b416136474e35347470727a334a7a7476
Arg [19] : 616b31714764383639396b4670747a796765346b6d0000000000000000000000
Arg [20] : 0000000000000000000000000000000000000000000000000000000000000035
Arg [21] : 697066733a2f2f516d617168616f5439375653685a754b6e44555a7852734755
Arg [22] : 536a42677a553545484d41555662537a64447a6d440000000000000000000000
Loading...
Loading
Loading...
Loading
OVERVIEW
Sus Seagulls by CryptoboopMultichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,607.01 | 0.1104 | $398.21 |
Loading...
Loading
[ 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.