Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 79 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Approval For... | 18314012 | 418 days ago | IN | 0 ETH | 0.0004401 | ||||
Set Approval For... | 15982905 | 745 days ago | IN | 0 ETH | 0.00093109 | ||||
Set Approval For... | 15659759 | 790 days ago | IN | 0 ETH | 0.00024599 | ||||
Set Approval For... | 15042371 | 885 days ago | IN | 0 ETH | 0.00111683 | ||||
Set Approval For... | 14875048 | 914 days ago | IN | 0 ETH | 0.0010135 | ||||
Safe Transfer Fr... | 14824467 | 923 days ago | IN | 0 ETH | 0.00115617 | ||||
Safe Transfer Fr... | 14818578 | 924 days ago | IN | 0 ETH | 0.00115187 | ||||
Set Approval For... | 14818573 | 924 days ago | IN | 0 ETH | 0.00058063 | ||||
Set Approval For... | 13981045 | 1054 days ago | IN | 0 ETH | 0.0080407 | ||||
Safe Transfer Fr... | 13671905 | 1103 days ago | IN | 0 ETH | 0.0084519 | ||||
Safe Transfer Fr... | 13671885 | 1103 days ago | IN | 0 ETH | 0.00929544 | ||||
Safe Transfer Fr... | 13671189 | 1103 days ago | IN | 0 ETH | 0.00619696 | ||||
Set Approval For... | 13016774 | 1205 days ago | IN | 0 ETH | 0.00260464 | ||||
Set Approval For... | 12472588 | 1290 days ago | IN | 0 ETH | 0.00418563 | ||||
Safe Transfer Fr... | 12231347 | 1327 days ago | IN | 0 ETH | 0.00519091 | ||||
Safe Transfer Fr... | 12231347 | 1327 days ago | IN | 0 ETH | 0.00551534 | ||||
Safe Transfer Fr... | 12231347 | 1327 days ago | IN | 0 ETH | 0.00551534 | ||||
Safe Transfer Fr... | 12231347 | 1327 days ago | IN | 0 ETH | 0.0054064 | ||||
Safe Transfer Fr... | 12231347 | 1327 days ago | IN | 0 ETH | 0.00465019 | ||||
Set Approval For... | 12202383 | 1331 days ago | IN | 0 ETH | 0.00415672 | ||||
Safe Transfer Fr... | 12153068 | 1339 days ago | IN | 0 ETH | 0.00851999 | ||||
Safe Transfer Fr... | 12153053 | 1339 days ago | IN | 0 ETH | 0.00879395 | ||||
Safe Transfer Fr... | 12153045 | 1339 days ago | IN | 0 ETH | 0.00873892 | ||||
Safe Transfer Fr... | 12153027 | 1339 days ago | IN | 0 ETH | 0.00873698 | ||||
Safe Transfer Fr... | 12153020 | 1339 days ago | IN | 0 ETH | 0.00878208 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
MercurityNFT
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity Multiple files format)
//SPDX-License-Identifier: UNLICENSED pragma solidity 0.6.12; import "./ERC1155Tradable.sol"; /** * @title MercurityNFT * @dev Mercurity NFT */ contract MercurityNFT is ERC1155Tradable { // * @param _proxyRegistryAddress The address of the OpenSea/Wyvern proxy registry // * On mainnet: "0xa5409ec958c83c3f309868babaca7c86dcb077c1" constructor(address _proxyRegistryAddress) public ERC1155Tradable("MercurityNFT", "MERNFT", _proxyRegistryAddress) { _setBaseMetadataURI("https://nft.mercurity.finance/"); } function contractURI() public pure returns (string memory) { return "https://nft.mercurity.finance/Mercurity.json"; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.6.12; /** * Copyright 2018 ZeroEx Intl. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Utility library of inline functions on addresses */ library Address { // Default hash for EOA accounts returned by extcodehash bytes32 constant internal ACCOUNT_HASH = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; /** * Returns whether the target address is a contract * @dev This function will return false if invoked during the constructor of a contract. * @param _address address of the account to check * @return Whether the target address is a contract */ function isContract(address _address) internal view returns (bool) { bytes32 codehash; // Currently there is no better way to check if there is a contract in an address // than to check the size of the code at that address or if it has a non-zero code hash or account hash assembly { codehash := extcodehash(_address) } return (codehash != 0x0 && codehash != ACCOUNT_HASH); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.6.12; import "./IERC1155.sol"; import "./IERC1155TokenReceiver.sol"; import "./IERC165.sol"; import "./SafeMath.sol"; import "./Address.sol"; /** * @dev Implementation of Multi-Token Standard contract */ contract ERC1155 is IERC165 { using SafeMath for uint256; using Address for address; /***********************************| | Variables and Events | |__________________________________*/ // onReceive function signatures bytes4 constant internal ERC1155_RECEIVED_VALUE = 0xf23a6e61; bytes4 constant internal ERC1155_BATCH_RECEIVED_VALUE = 0xbc197c81; // Objects balances mapping (address => mapping(uint256 => uint256)) internal balances; // Operator Functions mapping (address => mapping(address => bool)) internal operators; // Events event TransferSingle(address indexed _operator, address indexed _from, address indexed _to, uint256 _id, uint256 _amount); event TransferBatch(address indexed _operator, address indexed _from, address indexed _to, uint256[] _ids, uint256[] _amounts); event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); event URI(string _uri, uint256 indexed _id); /***********************************| | Public Transfer Functions | |__________________________________*/ /** * @notice Transfers amount amount of an _id from the _from address to the _to address specified * @param _from Source address * @param _to Target address * @param _id ID of the token type * @param _amount Transfered amount * @param _data Additional data with no specified format, sent in call to `_to` */ function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _amount, bytes memory _data) public { require((msg.sender == _from) || isApprovedForAll(_from, msg.sender), "ERC1155#safeTransferFrom: INVALID_OPERATOR"); require(_to != address(0),"ERC1155#safeTransferFrom: INVALID_RECIPIENT"); // require(_amount >= balances[_from][_id]) is not necessary since checked with safemath operations _safeTransferFrom(_from, _to, _id, _amount); _callonERC1155Received(_from, _to, _id, _amount, _data); } /** * @notice Send multiple types of Tokens from the _from address to the _to address (with safety call) * @param _from Source addresses * @param _to Target addresses * @param _ids IDs of each token type * @param _amounts Transfer amounts per token type * @param _data Additional data with no specified format, sent in call to `_to` */ function safeBatchTransferFrom(address _from, address _to, uint256[] memory _ids, uint256[] memory _amounts, bytes memory _data) public { // Requirements require((msg.sender == _from) || isApprovedForAll(_from, msg.sender), "ERC1155#safeBatchTransferFrom: INVALID_OPERATOR"); require(_to != address(0), "ERC1155#safeBatchTransferFrom: INVALID_RECIPIENT"); _safeBatchTransferFrom(_from, _to, _ids, _amounts); _callonERC1155BatchReceived(_from, _to, _ids, _amounts, _data); } /***********************************| | Internal Transfer Functions | |__________________________________*/ /** * @notice Transfers amount amount of an _id from the _from address to the _to address specified * @param _from Source address * @param _to Target address * @param _id ID of the token type * @param _amount Transfered amount */ function _safeTransferFrom(address _from, address _to, uint256 _id, uint256 _amount) internal { // Update balances balances[_from][_id] = balances[_from][_id].sub(_amount); // Subtract amount balances[_to][_id] = balances[_to][_id].add(_amount); // Add amount // Emit event emit TransferSingle(msg.sender, _from, _to, _id, _amount); } /** * @notice Verifies if receiver is contract and if so, calls (_to).onERC1155Received(...) */ function _callonERC1155Received(address _from, address _to, uint256 _id, uint256 _amount, bytes memory _data) internal { // Check if recipient is contract if (_to.isContract()) { bytes4 retval = IERC1155TokenReceiver(_to).onERC1155Received(msg.sender, _from, _id, _amount, _data); require(retval == ERC1155_RECEIVED_VALUE, "ERC1155#_callonERC1155Received: INVALID_ON_RECEIVE_MESSAGE"); } } /** * @notice Send multiple types of Tokens from the _from address to the _to address (with safety call) * @param _from Source addresses * @param _to Target addresses * @param _ids IDs of each token type * @param _amounts Transfer amounts per token type */ function _safeBatchTransferFrom(address _from, address _to, uint256[] memory _ids, uint256[] memory _amounts) internal { require(_ids.length == _amounts.length, "ERC1155#_safeBatchTransferFrom: INVALID_ARRAYS_LENGTH"); // Number of transfer to execute uint256 nTransfer = _ids.length; // Executing all transfers for (uint256 i = 0; i < nTransfer; i++) { // Update storage balance of previous bin balances[_from][_ids[i]] = balances[_from][_ids[i]].sub(_amounts[i]); balances[_to][_ids[i]] = balances[_to][_ids[i]].add(_amounts[i]); } // Emit event emit TransferBatch(msg.sender, _from, _to, _ids, _amounts); } /** * @notice Verifies if receiver is contract and if so, calls (_to).onERC1155BatchReceived(...) */ function _callonERC1155BatchReceived(address _from, address _to, uint256[] memory _ids, uint256[] memory _amounts, bytes memory _data) internal { // Pass data if recipient is contract if (_to.isContract()) { bytes4 retval = IERC1155TokenReceiver(_to).onERC1155BatchReceived(msg.sender, _from, _ids, _amounts, _data); require(retval == ERC1155_BATCH_RECEIVED_VALUE, "ERC1155#_callonERC1155BatchReceived: INVALID_ON_RECEIVE_MESSAGE"); } } /***********************************| | Operator Functions | |__________________________________*/ /** * @notice Enable or disable approval for a third party ("operator") to manage all of caller's tokens * @param _operator Address to add to the set of authorized operators * @param _approved True if the operator is approved, false to revoke approval */ function setApprovalForAll(address _operator, bool _approved) external { // Update operator status operators[msg.sender][_operator] = _approved; emit ApprovalForAll(msg.sender, _operator, _approved); } /** * @notice Queries the approval status of an operator for a given owner * @param _owner The owner of the Tokens * @param _operator Address of authorized operator * @return isOperator if the operator is approved, false if not */ function isApprovedForAll(address _owner, address _operator) public view virtual returns (bool isOperator) { return operators[_owner][_operator]; } /***********************************| | Balance Functions | |__________________________________*/ /** * @notice Get the balance of an account's Tokens * @param _owner The address of the token holder * @param _id ID of the Token * @return The _owner's balance of the Token type requested */ function balanceOf(address _owner, uint256 _id) public view returns (uint256) { return balances[_owner][_id]; } /** * @notice Get the balance of multiple account/token pairs * @param _owners The addresses of the token holders * @param _ids ID of the Tokens * @return The _owner's balance of the Token types requested (i.e. balance for each (owner, id) pair) */ function balanceOfBatch(address[] memory _owners, uint256[] memory _ids) public view returns (uint256[] memory) { require(_owners.length == _ids.length, "ERC1155#balanceOfBatch: INVALID_ARRAY_LENGTH"); // Variables uint256[] memory batchBalances = new uint256[](_owners.length); // Iterate over each owner and token ID for (uint256 i = 0; i < _owners.length; i++) { batchBalances[i] = balances[_owners[i]][_ids[i]]; } return batchBalances; } /***********************************| | ERC165 Functions | |__________________________________*/ /* * INTERFACE_SIGNATURE_ERC165 = bytes4(keccak256("supportsInterface(bytes4)")); */ bytes4 constant private INTERFACE_SIGNATURE_ERC165 = 0x01ffc9a7; /* * INTERFACE_SIGNATURE_ERC1155 = * bytes4(keccak256("safeTransferFrom(address,address,uint256,uint256,bytes)")) ^ * bytes4(keccak256("safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)")) ^ * bytes4(keccak256("balanceOf(address,uint256)")) ^ * bytes4(keccak256("balanceOfBatch(address[],uint256[])")) ^ * bytes4(keccak256("setApprovalForAll(address,bool)")) ^ * bytes4(keccak256("isApprovedForAll(address,address)")); */ bytes4 constant private INTERFACE_SIGNATURE_ERC1155 = 0xd9b67a26; /** * @notice Query if a contract implements an interface * @param _interfaceID The interface identifier, as specified in ERC-165 * @return `true` if the contract implements `_interfaceID` and */ function supportsInterface(bytes4 _interfaceID) external override view returns (bool) { if (_interfaceID == INTERFACE_SIGNATURE_ERC165 || _interfaceID == INTERFACE_SIGNATURE_ERC1155) { return true; } return false; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.6.12; /** * @notice Contract that handles metadata related methods. * @dev Methods assume a deterministic generation of URI based on token IDs. * Methods also assume that URI uses hex representation of token IDs. */ contract ERC1155Metadata { // URI's default URI prefix string internal baseMetadataURI; event URI(string _uri, uint256 indexed _id); /***********************************| | Metadata Public Function s | |__________________________________*/ /** * @notice A distinct Uniform Resource Identifier (URI) for a given token. * @dev URIs are defined in RFC 3986. * URIs are assumed to be deterministically generated based on token ID * Token IDs are assumed to be represented in their hex format in URIs * @return URI string */ function uri(uint256 _id) public view virtual returns (string memory) { return string(abi.encodePacked(baseMetadataURI, _uint2str(_id),".json")); } /***********************************| | Metadata Internal Functions | |__________________________________*/ /** * @notice Will emit default URI log event for corresponding token _id * @param _tokenIDs Array of IDs of tokens to log default URI */ function _logURIs(uint256[] memory _tokenIDs) internal { string memory baseURL = baseMetadataURI; string memory tokenURI; for (uint256 i = 0; i < _tokenIDs.length; i++) { tokenURI = string(abi.encodePacked(baseURL, _uint2str(_tokenIDs[i]), ".json")); emit URI(tokenURI, _tokenIDs[i]); } } /** * @notice Will emit a specific URI log event for corresponding token * @param _tokenIDs IDs of the token corresponding to the _uris logged * @param _URIs The URIs of the specified _tokenIDs */ function _logURIs(uint256[] memory _tokenIDs, string[] memory _URIs) internal { require(_tokenIDs.length == _URIs.length, "ERC1155Metadata#_logURIs: INVALID_ARRAYS_LENGTH"); for (uint256 i = 0; i < _tokenIDs.length; i++) { emit URI(_URIs[i], _tokenIDs[i]); } } /** * @notice Will update the base URL of token's URI * @param _newBaseMetadataURI New base URL of token's URI */ function _setBaseMetadataURI(string memory _newBaseMetadataURI) internal { baseMetadataURI = _newBaseMetadataURI; } /***********************************| | Utility Internal Functions | |__________________________________*/ /** * @notice Convert uint256 to string * @param _i Unsigned integer to convert to string */ function _uint2str(uint256 _i) internal pure returns (string memory _uintAsString) { if (_i == 0) { return "0"; } uint256 j = _i; uint256 ii = _i; uint256 len; // Get number of bytes while (j != 0) { len++; j /= 10; } bytes memory bstr = new bytes(len); uint256 k = len - 1; // Get each individual ASCII while (ii != 0) { bstr[k--] = byte(uint8(48 + ii % 10)); ii /= 10; } // Convert to string return string(bstr); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.6.12; import "./ERC1155.sol"; /** * @dev Multi-Fungible Tokens with minting and burning methods. These methods assume * a parent contract to be executed as they are `internal` functions */ contract ERC1155MintBurn is ERC1155 { /****************************************| | Minting Functions | |_______________________________________*/ /** * @notice Mint _amount of tokens of a given id * @param _to The address to mint tokens to * @param _id Token id to mint * @param _amount The amount to be minted * @param _data Data to pass if receiver is contract */ function _mint(address _to, uint256 _id, uint256 _amount, bytes memory _data) internal { // Add _amount balances[_to][_id] = balances[_to][_id].add(_amount); // Emit event emit TransferSingle(msg.sender, address(0x0), _to, _id, _amount); // Calling onReceive method if recipient is contract _callonERC1155Received(address(0x0), _to, _id, _amount, _data); } /** * @notice Mint tokens for each ids in _ids * @param _to The address to mint tokens to * @param _ids Array of ids to mint * @param _amounts Array of amount of tokens to mint per id * @param _data Data to pass if receiver is contract */ function _batchMint(address _to, uint256[] memory _ids, uint256[] memory _amounts, bytes memory _data) internal { require(_ids.length == _amounts.length, "ERC1155MintBurn#batchMint: INVALID_ARRAYS_LENGTH"); // Number of mints to execute uint256 nMint = _ids.length; // Executing all minting for (uint256 i = 0; i < nMint; i++) { // Update storage balance balances[_to][_ids[i]] = balances[_to][_ids[i]].add(_amounts[i]); } // Emit batch mint event emit TransferBatch(msg.sender, address(0x0), _to, _ids, _amounts); // Calling onReceive method if recipient is contract _callonERC1155BatchReceived(address(0x0), _to, _ids, _amounts, _data); } /****************************************| | Burning Functions | |_______________________________________*/ /** * @notice Burn _amount of tokens of a given token id * @param _from The address to burn tokens from * @param _id Token id to burn * @param _amount The amount to be burned */ function _burn(address _from, uint256 _id, uint256 _amount) internal { //Substract _amount balances[_from][_id] = balances[_from][_id].sub(_amount); // Emit event emit TransferSingle(msg.sender, _from, address(0x0), _id, _amount); } /** * @notice Burn tokens of given token id for each (_ids[i], _amounts[i]) pair * @param _from The address to burn tokens from * @param _ids Array of token ids to burn * @param _amounts Array of the amount to be burned */ function _batchBurn(address _from, uint256[] memory _ids, uint256[] memory _amounts) internal { require(_ids.length == _amounts.length, "ERC1155MintBurn#batchBurn: INVALID_ARRAYS_LENGTH"); // Number of mints to execute uint256 nBurn = _ids.length; // Executing all minting for (uint256 i = 0; i < nBurn; i++) { // Update storage balance balances[_from][_ids[i]] = balances[_from][_ids[i]].sub(_amounts[i]); } // Emit batch mint event emit TransferBatch(msg.sender, _from, address(0x0), _ids, _amounts); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.6.12; import "./Ownable.sol"; import "./ERC1155MintBurn.sol"; import "./ERC1155Metadata.sol"; import "./Strings.sol"; contract OwnableDelegateProxy { } contract ProxyRegistry { mapping(address => OwnableDelegateProxy) public proxies; } /** * @title ERC1155Tradable * ERC1155Tradable - ERC1155 contract that whitelists an operator address, has create and mint functionality, and supports useful standards from OpenZeppelin, like _exists(), name(), symbol(), and totalSupply() */ contract ERC1155Tradable is ERC1155MintBurn, ERC1155Metadata, Ownable { using Strings for string; address proxyRegistryAddress; uint256 private _currentTokenID = 0; mapping (uint256 => address) public creators; mapping (uint256 => uint256) private tokenSupply; mapping (uint256 => uint256) public tokenMaxSupply; // Contract name string public name; // Contract symbol string public symbol; /** * @dev Require msg.sender to be the creator of the token id */ modifier creatorOnly(uint256 _id) { require(creators[_id] == msg.sender, "ERC1155Tradable#creatorOnly: ONLY_CREATOR_ALLOWED"); _; } /** * @dev Require msg.sender to own more than 0 of the token id */ modifier ownersOnly(uint256 _id) { require(balances[msg.sender][_id] > 0, "ERC1155Tradable#ownersOnly: ONLY_OWNERS_ALLOWED"); _; } constructor( string memory _name, string memory _symbol, address _proxyRegistryAddress ) public { name = _name; symbol = _symbol; proxyRegistryAddress = _proxyRegistryAddress; } function uri( uint256 _id ) public view override returns (string memory) { require(_exists(_id), "ERC721Tradable#uri: NONEXISTENT_TOKEN"); return Strings.strConcat( baseMetadataURI, Strings.uint2str(_id), ".json" ); } /** * @dev Returns the total quantity for a token ID * @param _id uint256 ID of the token to query * @return amount of token in existence */ function totalSupply( uint256 _id ) public view returns (uint256) { return tokenSupply[_id]; } /** * @dev Will update the base URL of token's URI * @param _newBaseMetadataURI New base URL of token's URI */ function setBaseMetadataURI( string memory _newBaseMetadataURI ) public onlyOwner { _setBaseMetadataURI(_newBaseMetadataURI); } /** * @dev Creates a new token type and assigns _initialSupply to an address * NOTE: remove onlyOwner if you want third parties to create new tokens on your contract (which may change your IDs) * @param _initialOwner address of the first owner of the token * @param _initialSupply amount to supply the first owner * @param _uri Optional URI for this token type * @param _data Data to pass if receiver is contract * @return The newly created token ID */ function create( address _initialOwner, uint256 _initialSupply, uint256 _maxSupply, string calldata _uri, bytes calldata _data ) external onlyOwner returns (uint256) { require(_initialSupply <= _maxSupply, "Initial supply cannot be more than max supply"); uint256 _id = _getNextTokenID(); _incrementTokenTypeId(); creators[_id] = msg.sender; if (bytes(_uri).length > 0) { emit URI(_uri, _id); } if (_initialSupply != 0) _mint(_initialOwner, _id, _initialSupply, _data); tokenSupply[_id] = _initialSupply; tokenMaxSupply[_id] = _maxSupply; return _id; } /** * @dev Mints some amount of tokens to an address * @param _to Address of the future owner of the token * @param _id Token ID to mint * @param _quantity Amount of tokens to mint * @param _data Data to pass if receiver is contract */ function mint( address _to, uint256 _id, uint256 _quantity, bytes memory _data ) public creatorOnly(_id) { require(tokenSupply[_id].add(_quantity) <= tokenMaxSupply[_id],"over max supply"); _mint(_to, _id, _quantity, _data); tokenSupply[_id] = tokenSupply[_id].add(_quantity); } /** * @dev Mint tokens for each id in _ids * @param _to The address to mint tokens to * @param _ids Array of ids to mint * @param _quantities Array of amounts of tokens to mint per id * @param _data Data to pass if receiver is contract */ function batchMint( address _to, uint256[] memory _ids, uint256[] memory _quantities, bytes memory _data ) public { for (uint256 i = 0; i < _ids.length; i++) { uint256 _id = _ids[i]; require(creators[_id] == msg.sender, "ERC1155Tradable#batchMint: ONLY_CREATOR_ALLOWED"); uint256 quantity = _quantities[i]; require(tokenSupply[_id].add(_quantities[i]) <= tokenMaxSupply[_id],"over max supply"); tokenSupply[_id] = tokenSupply[_id].add(quantity); } _batchMint(_to, _ids, _quantities, _data); } /** * @dev Change the creator address for given tokens * @param _to Address of the new creator * @param _ids Array of Token IDs to change creator */ function setCreator( address _to, uint256[] memory _ids ) public { require(_to != address(0), "ERC1155Tradable#setCreator: INVALID_ADDRESS."); for (uint256 i = 0; i < _ids.length; i++) { uint256 id = _ids[i]; _setCreator(_to, id); } } /** * Override isApprovedForAll to whitelist user's OpenSea proxy accounts to enable gas-free listings. */ function isApprovedForAll( address _owner, address _operator ) public view override returns (bool isOperator) { // Whitelist OpenSea proxy contract for easy trading. ProxyRegistry proxyRegistry = ProxyRegistry(proxyRegistryAddress); if (address(proxyRegistry.proxies(_owner)) == _operator) { return true; } return ERC1155.isApprovedForAll(_owner, _operator); } /** * @dev Change the creator address for given token * @param _to Address of the new creator * @param _id Token IDs to change creator of */ function _setCreator(address _to, uint256 _id) internal creatorOnly(_id) { creators[_id] = _to; } /** * @dev Returns whether the specified token exists by checking to see if it has a creator * @param _id uint256 ID of the token to query the existence of * @return bool whether the token exists */ function _exists( uint256 _id ) internal view returns (bool) { return creators[_id] != address(0); } /** * @dev calculates the next token ID based on value of _currentTokenID * @return uint256 for the next token ID */ function _getNextTokenID() private view returns (uint256) { return _currentTokenID.add(1); } /** * @dev increments the value of _currentTokenID */ function _incrementTokenTypeId() private { _currentTokenID++; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.6.12; interface IERC1155 { // Events /** * @dev Either TransferSingle or TransferBatch MUST emit when tokens are transferred, including zero amount transfers as well as minting or burning * Operator MUST be msg.sender * When minting/creating tokens, the `_from` field MUST be set to `0x0` * When burning/destroying tokens, the `_to` field MUST be set to `0x0` * The total amount transferred from address 0x0 minus the total amount transferred to 0x0 may be used by clients and exchanges to be added to the "circulating supply" for a given token ID * To broadcast the existence of a token ID with no initial balance, the contract SHOULD emit the TransferSingle event from `0x0` to `0x0`, with the token creator as `_operator`, and a `_amount` of 0 */ event TransferSingle(address indexed _operator, address indexed _from, address indexed _to, uint256 _id, uint256 _amount); /** * @dev Either TransferSingle or TransferBatch MUST emit when tokens are transferred, including zero amount transfers as well as minting or burning * Operator MUST be msg.sender * When minting/creating tokens, the `_from` field MUST be set to `0x0` * When burning/destroying tokens, the `_to` field MUST be set to `0x0` * The total amount transferred from address 0x0 minus the total amount transferred to 0x0 may be used by clients and exchanges to be added to the "circulating supply" for a given token ID * To broadcast the existence of multiple token IDs with no initial balance, this SHOULD emit the TransferBatch event from `0x0` to `0x0`, with the token creator as `_operator`, and a `_amount` of 0 */ event TransferBatch(address indexed _operator, address indexed _from, address indexed _to, uint256[] _ids, uint256[] _amounts); /** * @dev MUST emit when an approval is updated */ event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); /** * @dev MUST emit when the URI is updated for a token ID * URIs are defined in RFC 3986 * The URI MUST point a JSON file that conforms to the "ERC-1155 Metadata JSON Schema" */ event URI(string _amount, uint256 indexed _id); /** * @notice Transfers amount of an _id from the _from address to the _to address specified * @dev MUST emit TransferSingle event on success * Caller must be approved to manage the _from account's tokens (see isApprovedForAll) * MUST throw if `_to` is the zero address * MUST throw if balance of sender for token `_id` is lower than the `_amount` sent * MUST throw on any other error * When transfer is complete, this function MUST check if `_to` is a smart contract (code size > 0). If so, it MUST call `onERC1155Received` on `_to` and revert if the return amount is not `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` * @param _from Source address * @param _to Target address * @param _id ID of the token type * @param _amount Transfered amount * @param _data Additional data with no specified format, sent in call to `_to` */ function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _amount, bytes calldata _data) external; /** * @notice Send multiple types of Tokens from the _from address to the _to address (with safety call) * @dev MUST emit TransferBatch event on success * Caller must be approved to manage the _from account's tokens (see isApprovedForAll) * MUST throw if `_to` is the zero address * MUST throw if length of `_ids` is not the same as length of `_amounts` * MUST throw if any of the balance of sender for token `_ids` is lower than the respective `_amounts` sent * MUST throw on any other error * When transfer is complete, this function MUST check if `_to` is a smart contract (code size > 0). If so, it MUST call `onERC1155BatchReceived` on `_to` and revert if the return amount is not `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` * Transfers and events MUST occur in the array order they were submitted (_ids[0] before _ids[1], etc) * @param _from Source addresses * @param _to Target addresses * @param _ids IDs of each token type * @param _amounts Transfer amounts per token type * @param _data Additional data with no specified format, sent in call to `_to` */ function safeBatchTransferFrom(address _from, address _to, uint256[] calldata _ids, uint256[] calldata _amounts, bytes calldata _data) external; /** * @notice Get the balance of an account's Tokens * @param _owner The address of the token holder * @param _id ID of the Token * @return The _owner's balance of the Token type requested */ function balanceOf(address _owner, uint256 _id) external view returns (uint256); /** * @notice Get the balance of multiple account/token pairs * @param _owners The addresses of the token holders * @param _ids ID of the Tokens * @return The _owner's balance of the Token types requested (i.e. balance for each (owner, id) pair) */ function balanceOfBatch(address[] calldata _owners, uint256[] calldata _ids) external view returns (uint256[] memory); /** * @notice Enable or disable approval for a third party ("operator") to manage all of caller's tokens * @dev MUST emit the ApprovalForAll event on success * @param _operator Address to add to the set of authorized operators * @param _approved True if the operator is approved, false to revoke approval */ function setApprovalForAll(address _operator, bool _approved) external; /** * @notice Queries the approval status of an operator for a given owner * @param _owner The owner of the Tokens * @param _operator Address of authorized operator * @return True if the operator is approved, false if not */ function isApprovedForAll(address _owner, address _operator) external view returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.6.12; interface IERC1155TokenReceiver { /** * @notice Handle the receipt of a single ERC1155 token type * @dev An ERC1155-compliant smart contract MUST call this function on the token recipient contract, at the end of a `safeTransferFrom` after the balance has been updated * This function MAY throw to revert and reject the transfer * Return of other amount than the magic value MUST result in the transaction being reverted * Note: The token contract address is always the message sender * @param _operator The address which called the `safeTransferFrom` function * @param _from The address which previously owned the token * @param _id The id of the token being transferred * @param _amount The amount of tokens being transferred * @param _data Additional data with no specified format * @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` */ function onERC1155Received(address _operator, address _from, uint256 _id, uint256 _amount, bytes calldata _data) external returns(bytes4); /** * @notice Handle the receipt of multiple ERC1155 token types * @dev An ERC1155-compliant smart contract MUST call this function on the token recipient contract, at the end of a `safeBatchTransferFrom` after the balances have been updated * This function MAY throw to revert and reject the transfer * Return of other amount than the magic value WILL result in the transaction being reverted * Note: The token contract address is always the message sender * @param _operator The address which called the `safeBatchTransferFrom` function * @param _from The address which previously owned the token * @param _ids An array containing ids of each token being transferred * @param _amounts An array containing amounts of each token being transferred * @param _data Additional data with no specified format * @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` */ function onERC1155BatchReceived(address _operator, address _from, uint256[] calldata _ids, uint256[] calldata _amounts, bytes calldata _data) external returns(bytes4); /** * @notice Indicates whether a contract implements the `ERC1155TokenReceiver` functions and so can accept ERC1155 token types. * @param interfaceID The ERC-165 interface ID that is queried for support.s * @dev This function MUST return true if it implements the ERC1155TokenReceiver interface and ERC-165 interface. * This function MUST NOT consume more than 5,000 gas. * @return Wheter ERC-165 or ERC1155TokenReceiver interfaces are supported. */ function supportsInterface(bytes4 interfaceID) external view returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.6.12; /** * @title ERC165 * @dev https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md */ interface IERC165 { /** * @notice Query if a contract implements an interface * @dev Interface identification is specified in ERC-165. This function * uses less than 30,000 gas * @param _interfaceId The interface identifier, as specified in ERC-165 */ function supportsInterface(bytes4 _interfaceId) external view returns (bool); }
abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.6.12; /** * @title SafeMath * @dev Unsigned math operations with safety checks that revert on error */ library SafeMath { /** * @dev Multiplies two unsigned integers, reverts on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath#mul: OVERFLOW"); return c; } /** * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, "SafeMath#div: DIVISION_BY_ZERO"); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath#sub: UNDERFLOW"); uint256 c = a - b; return c; } /** * @dev Adds two unsigned integers, reverts on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath#add: OVERFLOW"); return c; } /** * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo), * reverts when dividing by zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0, "SafeMath#mod: DIVISION_BY_ZERO"); return a % b; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.6.12; library Strings { // via https://github.com/oraclize/ethereum-api/blob/master/oraclizeAPI_0.5.sol function strConcat( string memory _a, string memory _b, string memory _c, string memory _d, string memory _e ) internal pure returns (string memory) { bytes memory _ba = bytes(_a); bytes memory _bb = bytes(_b); bytes memory _bc = bytes(_c); bytes memory _bd = bytes(_d); bytes memory _be = bytes(_e); string memory abcde = new string(_ba.length + _bb.length + _bc.length + _bd.length + _be.length); bytes memory babcde = bytes(abcde); uint256 k = 0; for (uint256 i = 0; i < _ba.length; i++) babcde[k++] = _ba[i]; for (uint256 i = 0; i < _bb.length; i++) babcde[k++] = _bb[i]; for (uint256 i = 0; i < _bc.length; i++) babcde[k++] = _bc[i]; for (uint256 i = 0; i < _bd.length; i++) babcde[k++] = _bd[i]; for (uint256 i = 0; i < _be.length; i++) babcde[k++] = _be[i]; return string(babcde); } function strConcat( string memory _a, string memory _b, string memory _c, string memory _d ) internal pure returns (string memory) { return strConcat(_a, _b, _c, _d, ""); } function strConcat( string memory _a, string memory _b, string memory _c ) internal pure returns (string memory) { return strConcat(_a, _b, _c, "", ""); } function strConcat(string memory _a, string memory _b) internal pure returns (string memory) { return strConcat(_a, _b, "", "", ""); } function uint2str(uint256 _i) internal pure returns (string memory _uintAsString) { if (_i == 0) { return "0"; } uint256 j = _i; uint256 len; while (j != 0) { len++; j /= 10; } bytes memory bstr = new bytes(len); uint256 k = len - 1; while (_i != 0) { bstr[k--] = bytes1(uint8(48 + (_i % 10))); _i /= 10; } return string(bstr); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_proxyRegistryAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"_operator","type":"address"},{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"_ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_operator","type":"address"},{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"_uri","type":"string"},{"indexed":true,"internalType":"uint256","name":"_id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_owners","type":"address[]"},{"internalType":"uint256[]","name":"_ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256[]","name":"_ids","type":"uint256[]"},{"internalType":"uint256[]","name":"_quantities","type":"uint256[]"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"batchMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_initialOwner","type":"address"},{"internalType":"uint256","name":"_initialSupply","type":"uint256"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"},{"internalType":"string","name":"_uri","type":"string"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"create","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"creators","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":"isOperator","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_quantity","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256[]","name":"_ids","type":"uint256[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_amount","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":"_newBaseMetadataURI","type":"string"}],"name":"setBaseMetadataURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256[]","name":"_ids","type":"uint256[]"}],"name":"setCreator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenMaxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405260006005553480156200001657600080fd5b5060405162002da338038062002da3833981810160405260208110156200003c57600080fd5b5051604080518082018252600c81526b13595c98dd5c9a5d1e53919560a21b6020828101919091528251808401909352600683526513515493919560d21b90830152908260006200008c6200016e565b600380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508251620000ef9060099060208601906200018b565b5081516200010590600a9060208501906200018b565b50600480546001600160a01b0319166001600160a01b0392909216919091179055505060408051808201909152601e81527f68747470733a2f2f6e66742e6d65726375726974792e66696e616e63652f00006020820152620001679062000172565b5062000227565b3390565b8051620001879060029060208401906200018b565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001ce57805160ff1916838001178555620001fe565b82800160010185558215620001fe579182015b82811115620001fe578251825591602001919060010190620001e1565b506200020c92915062000210565b5090565b5b808211156200020c576000815560010162000211565b612b6c80620002376000396000f3fe608060405234801561001057600080fd5b50600436106101405760003560e01c80638da5cb5b116100b8578063cd53d08e1161007c578063cd53d08e14610a20578063d2a6b51a14610a3d578063e8a3d48514610aee578063e985e9c514610af6578063f242432a14610b24578063f2fde38b14610bed57610140565b80638da5cb5b146107f157806395d89b4114610815578063a22cb4651461081d578063b48ab8b61461084b578063bd85b03914610a0357610140565b80632eb2c2d61161010a5780632eb2c2d61461027557806336a100d5146104385780634e1273f414610512578063715018a614610685578063731133e91461068d5780637e518ec81461074d57610140565b80624221f014610145578062fdd58e1461017457806301ffc9a7146101a057806306fdde03146101db5780630e89341c14610258575b600080fd5b6101626004803603602081101561015b57600080fd5b5035610c13565b60408051918252519081900360200190f35b6101626004803603604081101561018a57600080fd5b506001600160a01b038135169060200135610c25565b6101c7600480360360208110156101b657600080fd5b50356001600160e01b031916610c4e565b604080519115158252519081900360200190f35b6101e3610c95565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561021d578181015183820152602001610205565b50505050905090810190601f16801561024a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101e36004803603602081101561026e57600080fd5b5035610d23565b610436600480360360a081101561028b57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156102be57600080fd5b8201836020820111156102d057600080fd5b803590602001918460208302840111600160201b831117156102f157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561034057600080fd5b82018360208201111561035257600080fd5b803590602001918460208302840111600160201b8311171561037357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156103c257600080fd5b8201836020820111156103d457600080fd5b803590602001918460018302840111600160201b831117156103f557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610e24945050505050565b005b610162600480360360a081101561044e57600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b81111561048457600080fd5b82018360208201111561049657600080fd5b803590602001918460018302840111600160201b831117156104b757600080fd5b919390929091602081019035600160201b8111156104d457600080fd5b8201836020820111156104e657600080fd5b803590602001918460018302840111600160201b8311171561050757600080fd5b509092509050610ee0565b6106356004803603604081101561052857600080fd5b810190602081018135600160201b81111561054257600080fd5b82018360208201111561055457600080fd5b803590602001918460208302840111600160201b8311171561057557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156105c457600080fd5b8201836020820111156105d657600080fd5b803590602001918460208302840111600160201b831117156105f757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611086945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610671578181015183820152602001610659565b505050509050019250505060405180910390f35b61043661119e565b610436600480360360808110156106a357600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b8111156106d957600080fd5b8201836020820111156106eb57600080fd5b803590602001918460018302840111600160201b8311171561070c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611240945050505050565b6104366004803603602081101561076357600080fd5b810190602081018135600160201b81111561077d57600080fd5b82018360208201111561078f57600080fd5b803590602001918460018302840111600160201b831117156107b057600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061133f945050505050565b6107f96113a3565b604080516001600160a01b039092168252519081900360200190f35b6101e36113b2565b6104366004803603604081101561083357600080fd5b506001600160a01b038135169060200135151561140d565b6104366004803603608081101561086157600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561088b57600080fd5b82018360208201111561089d57600080fd5b803590602001918460208302840111600160201b831117156108be57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561090d57600080fd5b82018360208201111561091f57600080fd5b803590602001918460208302840111600160201b8311171561094057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561098f57600080fd5b8201836020820111156109a157600080fd5b803590602001918460018302840111600160201b831117156109c257600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061147b945050505050565b61016260048036036020811015610a1957600080fd5b50356115ec565b6107f960048036036020811015610a3657600080fd5b50356115fe565b61043660048036036040811015610a5357600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115610a7d57600080fd5b820183602082011115610a8f57600080fd5b803590602001918460208302840111600160201b83111715610ab057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611619945050505050565b6101e361169a565b6101c760048036036040811015610b0c57600080fd5b506001600160a01b03813581169160200135166116ba565b610436600480360360a0811015610b3a57600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b811115610b7957600080fd5b820183602082011115610b8b57600080fd5b803590602001918460018302840111600160201b83111715610bac57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611769945050505050565b61043660048036036020811015610c0357600080fd5b50356001600160a01b031661181e565b60086020526000908152604090205481565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b60006001600160e01b031982166301ffc9a760e01b1480610c7f57506001600160e01b03198216636cdb3d1360e11b145b15610c8c57506001610c90565b5060005b919050565b6009805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d1b5780601f10610cf057610100808354040283529160200191610d1b565b820191906000526020600020905b815481529060010190602001808311610cfe57829003601f168201915b505050505081565b6060610d2e82611917565b610d695760405162461bcd60e51b81526004018080602001828103825260258152602001806129646025913960400191505060405180910390fd5b60028054604080516020601f60001961010060018716150201909416859004938401819004810282018101909252828152610c489390929091830182828015610df35780601f10610dc857610100808354040283529160200191610df3565b820191906000526020600020905b815481529060010190602001808311610dd657829003601f168201915b5050505050610e0184611934565b60405180604001604052806005815260200164173539b7b760d91b815250611a0c565b336001600160a01b0386161480610e405750610e4085336116ba565b610e7b5760405162461bcd60e51b815260040180806020018281038252602f815260200180612a02602f913960400191505060405180910390fd5b6001600160a01b038416610ec05760405162461bcd60e51b81526004018080602001828103825260308152602001806129346030913960400191505060405180910390fd5b610ecc85858585611a39565b610ed98585858585611ce4565b5050505050565b6000610eea611ed8565b6003546001600160a01b03908116911614610f3a576040805162461bcd60e51b81526020600482018190526024820152600080516020612989833981519152604482015290519081900360640190fd5b85871115610f795760405162461bcd60e51b815260040180806020018281038252602d8152602001806129a9602d913960400191505060405180910390fd5b6000610f83611edc565b9050610f8d611ef2565b600081815260066020526040902080546001600160a01b03191633179055841561101357807f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b878760405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a25b871561105b5761105b89828a87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611efd92505050565b60008181526007602090815260408083208b9055600890915290208790559050979650505050505050565b606081518351146110c85760405162461bcd60e51b815260040180806020018281038252602c8152602001806129d6602c913960400191505060405180910390fd5b6060835167ffffffffffffffff811180156110e257600080fd5b5060405190808252806020026020018201604052801561110c578160200160208202803683370190505b50905060005b84518110156111965760008086838151811061112a57fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600085838151811061116057fe5b602002602001015181526020019081526020016000205482828151811061118357fe5b6020908102919091010152600101611112565b509392505050565b6111a6611ed8565b6003546001600160a01b039081169116146111f6576040805162461bcd60e51b81526020600482018190526024820152600080516020612989833981519152604482015290519081900360640190fd5b6003546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600380546001600160a01b0319169055565b60008381526006602052604090205483906001600160a01b031633146112975760405162461bcd60e51b8152600401808060200182810382526031815260200180612b066031913960400191505060405180910390fd5b6000848152600860209081526040808320546007909252909120546112bc9085611f97565b1115611301576040805162461bcd60e51b815260206004820152600f60248201526e6f766572206d617820737570706c7960881b604482015290519081900360640190fd5b61130d85858585611efd565b6000848152600760205260409020546113269084611f97565b6000948552600760205260409094209390935550505050565b611347611ed8565b6003546001600160a01b03908116911614611397576040805162461bcd60e51b81526020600482018190526024820152600080516020612989833981519152604482015290519081900360640190fd5b6113a081611ff1565b50565b6003546001600160a01b031690565b600a805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d1b5780601f10610cf057610100808354040283529160200191610d1b565b3360008181526001602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b60005b83518110156115d957600084828151811061149557fe5b602090810291909101810151600081815260069092526040909120549091506001600160a01b031633146114fa5760405162461bcd60e51b815260040180806020018281038252602f815260200180612854602f913960400191505060405180910390fd5b600084838151811061150857fe5b60200260200101519050600860008381526020019081526020016000205461155f86858151811061153557fe5b60200260200101516007600086815260200190815260200160002054611f9790919063ffffffff16565b11156115a4576040805162461bcd60e51b815260206004820152600f60248201526e6f766572206d617820737570706c7960881b604482015290519081900360640190fd5b6000828152600760205260409020546115bd9082611f97565b600092835260076020526040909220919091555060010161147e565b506115e684848484612008565b50505050565b60009081526007602052604090205490565b6006602052600090815260409020546001600160a01b031681565b6001600160a01b03821661165e5760405162461bcd60e51b815260040180806020018281038252602c815260200180612ada602c913960400191505060405180910390fd5b60005b815181101561169557600082828151811061167857fe5b6020026020010151905061168c84826121dc565b50600101611661565b505050565b60606040518060600160405280602c8152602001612908602c9139905090565b600480546040805163c455279160e01b81526001600160a01b0386811694820194909452905160009392831692851691839163c455279191602480820192602092909190829003018186803b15801561171257600080fd5b505afa158015611726573d6000803e3d6000fd5b505050506040513d602081101561173c57600080fd5b50516001600160a01b03161415611757576001915050610c48565b6117618484612262565b949350505050565b336001600160a01b0386161480611785575061178585336116ba565b6117c05760405162461bcd60e51b815260040180806020018281038252602a8152602001806128a9602a913960400191505060405180910390fd5b6001600160a01b0384166118055760405162461bcd60e51b815260040180806020018281038252602b815260200180612829602b913960400191505060405180910390fd5b61181185858585612290565b610ed9858585858561236c565b611826611ed8565b6003546001600160a01b03908116911614611876576040805162461bcd60e51b81526020600482018190526024820152600080516020612989833981519152604482015290519081900360640190fd5b6001600160a01b0381166118bb5760405162461bcd60e51b81526004018080602001828103825260268152602001806128836026913960400191505060405180910390fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000908152600660205260409020546001600160a01b0316151590565b60608161195957506040805180820190915260018152600360fc1b6020820152610c90565b8160005b811561197157600101600a8204915061195d565b60608167ffffffffffffffff8111801561198a57600080fd5b506040519080825280601f01601f1916602001820160405280156119b5576020820181803683370190505b50905060001982015b8515611a0357600a860660300160f81b828280600190039350815181106119e157fe5b60200101906001600160f81b031916908160001a905350600a860495506119be565b50949350505050565b606061176184848460405180602001604052806000815250604051806020016040528060008152506124dc565b8051825114611a795760405162461bcd60e51b81526004018080602001828103825260358152602001806128d36035913960400191505060405180910390fd5b815160005b81811015611c0357611af4838281518110611a9557fe5b6020026020010151600080896001600160a01b03166001600160a01b031681526020019081526020016000206000878581518110611acf57fe5b602002602001015181526020019081526020016000205461270190919063ffffffff16565b600080886001600160a01b03166001600160a01b031681526020019081526020016000206000868481518110611b2657fe5b6020026020010151815260200190815260200160002081905550611bae838281518110611b4f57fe5b6020026020010151600080886001600160a01b03166001600160a01b031681526020019081526020016000206000878581518110611b8957fe5b6020026020010151815260200190815260200160002054611f9790919063ffffffff16565b600080876001600160a01b03166001600160a01b031681526020019081526020016000206000868481518110611be057fe5b602090810291909101810151825281019190915260400160002055600101611a7e565b50836001600160a01b0316856001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015611c89578181015183820152602001611c71565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015611cc8578181015183820152602001611cb0565b5050505090500194505050505060405180910390a45050505050565b611cf6846001600160a01b031661275e565b15610ed9576000846001600160a01b031663bc197c8133888787876040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015611d86578181015183820152602001611d6e565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015611dc5578181015183820152602001611dad565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015611e01578181015183820152602001611de9565b50505050905090810190601f168015611e2e5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b158015611e5357600080fd5b505af1158015611e67573d6000803e3d6000fd5b505050506040513d6020811015611e7d57600080fd5b505190506001600160e01b0319811663bc197c8160e01b14611ed05760405162461bcd60e51b815260040180806020018281038252603f815260200180612a61603f913960400191505060405180910390fd5b505050505050565b3390565b600554600090611eed906001611f97565b905090565b600580546001019055565b6001600160a01b038416600090815260208181526040808320868452909152902054611f299083611f97565b6001600160a01b038516600081815260208181526040808320888452825280832094909455835187815290810186905283519293919233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62928290030190a46115e660008585858561236c565b600082820183811015611fea576040805162461bcd60e51b8152602060048201526016602482015275536166654d617468236164643a204f564552464c4f5760501b604482015290519081900360640190fd5b9392505050565b8051612004906002906020840190612795565b5050565b81518351146120485760405162461bcd60e51b8152600401808060200182810382526030815260200180612a316030913960400191505060405180910390fd5b825160005b818110156120f35761209e84828151811061206457fe5b6020026020010151600080896001600160a01b03166001600160a01b031681526020019081526020016000206000888581518110611b8957fe5b600080886001600160a01b03166001600160a01b0316815260200190815260200160002060008784815181106120d057fe5b60209081029190910181015182528101919091526040016000205560010161204d565b50846001600160a01b031660006001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561217a578181015183820152602001612162565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156121b95781810151838201526020016121a1565b5050505090500194505050505060405180910390a4610ed9600086868686611ce4565b60008181526006602052604090205481906001600160a01b031633146122335760405162461bcd60e51b8152600401808060200182810382526031815260200180612b066031913960400191505060405180910390fd5b50600090815260066020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6001600160a01b0384166000908152602081815260408083208584529091529020546122bc9082612701565b6001600160a01b03808616600090815260208181526040808320878452825280832094909455918616815280825282812085825290915220546122ff9082611f97565b6001600160a01b03808516600081815260208181526040808320888452825291829020949094558051868152938401859052805191939288169233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a450505050565b61237e846001600160a01b031661275e565b15610ed9576000846001600160a01b031663f23a6e6133888787876040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561240f5781810151838201526020016123f7565b50505050905090810190601f16801561243c5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561245f57600080fd5b505af1158015612473573d6000803e3d6000fd5b505050506040513d602081101561248957600080fd5b505190506001600160e01b0319811663f23a6e6160e01b14611ed05760405162461bcd60e51b815260040180806020018281038252603a815260200180612aa0603a913960400191505060405180910390fd5b805182518451865188516060948a948a948a948a948a948a94919092019092019091010167ffffffffffffffff8111801561251657600080fd5b506040519080825280601f01601f191660200182016040528015612541576020820181803683370190505b509050806000805b885181101561259a5788818151811061255e57fe5b602001015160f81c60f81b83838060010194508151811061257b57fe5b60200101906001600160f81b031916908160001a905350600101612549565b5060005b87518110156125ef578781815181106125b357fe5b602001015160f81c60f81b8383806001019450815181106125d057fe5b60200101906001600160f81b031916908160001a90535060010161259e565b5060005b86518110156126445786818151811061260857fe5b602001015160f81c60f81b83838060010194508151811061262557fe5b60200101906001600160f81b031916908160001a9053506001016125f3565b5060005b85518110156126995785818151811061265d57fe5b602001015160f81c60f81b83838060010194508151811061267a57fe5b60200101906001600160f81b031916908160001a905350600101612648565b5060005b84518110156126ee578481815181106126b257fe5b602001015160f81c60f81b8383806001019450815181106126cf57fe5b60200101906001600160f81b031916908160001a90535060010161269d565b50909d9c50505050505050505050505050565b600082821115612758576040805162461bcd60e51b815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b6000813f8015801590611fea57507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106127d657805160ff1916838001178555612803565b82800160010185558215612803579182015b828111156128035782518255916020019190600101906127e8565b5061280f929150612813565b5090565b5b8082111561280f576000815560010161281456fe4552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135355472616461626c652362617463684d696e743a204f4e4c595f43524541544f525f414c4c4f5745444f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f5245524331313535235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e47544868747470733a2f2f6e66742e6d65726375726974792e66696e616e63652f4d65726375726974792e6a736f6e45524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e544552433732315472616461626c65237572693a204e4f4e4558495354454e545f544f4b454e4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572496e697469616c20737570706c792063616e6e6f74206265206d6f7265207468616e206d617820737570706c79455243313135352362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e47544845524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f52455243313135354d696e744275726e2362617463684d696e743a20494e56414c49445f4152524159535f4c454e47544845524331313535235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d45535341474545524331313535235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745455243313135355472616461626c652373657443726561746f723a20494e56414c49445f414444524553532e455243313135355472616461626c652363726561746f724f6e6c793a204f4e4c595f43524541544f525f414c4c4f574544a26469706673582212201038174bda7d6b066a96ca4960e007bd4a15e90811c24f816d0f5695b9fe267064736f6c634300060c0033000000000000000000000000a5409ec958c83c3f309868babaca7c86dcb077c1
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101405760003560e01c80638da5cb5b116100b8578063cd53d08e1161007c578063cd53d08e14610a20578063d2a6b51a14610a3d578063e8a3d48514610aee578063e985e9c514610af6578063f242432a14610b24578063f2fde38b14610bed57610140565b80638da5cb5b146107f157806395d89b4114610815578063a22cb4651461081d578063b48ab8b61461084b578063bd85b03914610a0357610140565b80632eb2c2d61161010a5780632eb2c2d61461027557806336a100d5146104385780634e1273f414610512578063715018a614610685578063731133e91461068d5780637e518ec81461074d57610140565b80624221f014610145578062fdd58e1461017457806301ffc9a7146101a057806306fdde03146101db5780630e89341c14610258575b600080fd5b6101626004803603602081101561015b57600080fd5b5035610c13565b60408051918252519081900360200190f35b6101626004803603604081101561018a57600080fd5b506001600160a01b038135169060200135610c25565b6101c7600480360360208110156101b657600080fd5b50356001600160e01b031916610c4e565b604080519115158252519081900360200190f35b6101e3610c95565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561021d578181015183820152602001610205565b50505050905090810190601f16801561024a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101e36004803603602081101561026e57600080fd5b5035610d23565b610436600480360360a081101561028b57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156102be57600080fd5b8201836020820111156102d057600080fd5b803590602001918460208302840111600160201b831117156102f157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561034057600080fd5b82018360208201111561035257600080fd5b803590602001918460208302840111600160201b8311171561037357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156103c257600080fd5b8201836020820111156103d457600080fd5b803590602001918460018302840111600160201b831117156103f557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610e24945050505050565b005b610162600480360360a081101561044e57600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b81111561048457600080fd5b82018360208201111561049657600080fd5b803590602001918460018302840111600160201b831117156104b757600080fd5b919390929091602081019035600160201b8111156104d457600080fd5b8201836020820111156104e657600080fd5b803590602001918460018302840111600160201b8311171561050757600080fd5b509092509050610ee0565b6106356004803603604081101561052857600080fd5b810190602081018135600160201b81111561054257600080fd5b82018360208201111561055457600080fd5b803590602001918460208302840111600160201b8311171561057557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156105c457600080fd5b8201836020820111156105d657600080fd5b803590602001918460208302840111600160201b831117156105f757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611086945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610671578181015183820152602001610659565b505050509050019250505060405180910390f35b61043661119e565b610436600480360360808110156106a357600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b8111156106d957600080fd5b8201836020820111156106eb57600080fd5b803590602001918460018302840111600160201b8311171561070c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611240945050505050565b6104366004803603602081101561076357600080fd5b810190602081018135600160201b81111561077d57600080fd5b82018360208201111561078f57600080fd5b803590602001918460018302840111600160201b831117156107b057600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061133f945050505050565b6107f96113a3565b604080516001600160a01b039092168252519081900360200190f35b6101e36113b2565b6104366004803603604081101561083357600080fd5b506001600160a01b038135169060200135151561140d565b6104366004803603608081101561086157600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561088b57600080fd5b82018360208201111561089d57600080fd5b803590602001918460208302840111600160201b831117156108be57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561090d57600080fd5b82018360208201111561091f57600080fd5b803590602001918460208302840111600160201b8311171561094057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561098f57600080fd5b8201836020820111156109a157600080fd5b803590602001918460018302840111600160201b831117156109c257600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061147b945050505050565b61016260048036036020811015610a1957600080fd5b50356115ec565b6107f960048036036020811015610a3657600080fd5b50356115fe565b61043660048036036040811015610a5357600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115610a7d57600080fd5b820183602082011115610a8f57600080fd5b803590602001918460208302840111600160201b83111715610ab057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611619945050505050565b6101e361169a565b6101c760048036036040811015610b0c57600080fd5b506001600160a01b03813581169160200135166116ba565b610436600480360360a0811015610b3a57600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b811115610b7957600080fd5b820183602082011115610b8b57600080fd5b803590602001918460018302840111600160201b83111715610bac57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611769945050505050565b61043660048036036020811015610c0357600080fd5b50356001600160a01b031661181e565b60086020526000908152604090205481565b6001600160a01b0382166000908152602081815260408083208484529091529020545b92915050565b60006001600160e01b031982166301ffc9a760e01b1480610c7f57506001600160e01b03198216636cdb3d1360e11b145b15610c8c57506001610c90565b5060005b919050565b6009805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d1b5780601f10610cf057610100808354040283529160200191610d1b565b820191906000526020600020905b815481529060010190602001808311610cfe57829003601f168201915b505050505081565b6060610d2e82611917565b610d695760405162461bcd60e51b81526004018080602001828103825260258152602001806129646025913960400191505060405180910390fd5b60028054604080516020601f60001961010060018716150201909416859004938401819004810282018101909252828152610c489390929091830182828015610df35780601f10610dc857610100808354040283529160200191610df3565b820191906000526020600020905b815481529060010190602001808311610dd657829003601f168201915b5050505050610e0184611934565b60405180604001604052806005815260200164173539b7b760d91b815250611a0c565b336001600160a01b0386161480610e405750610e4085336116ba565b610e7b5760405162461bcd60e51b815260040180806020018281038252602f815260200180612a02602f913960400191505060405180910390fd5b6001600160a01b038416610ec05760405162461bcd60e51b81526004018080602001828103825260308152602001806129346030913960400191505060405180910390fd5b610ecc85858585611a39565b610ed98585858585611ce4565b5050505050565b6000610eea611ed8565b6003546001600160a01b03908116911614610f3a576040805162461bcd60e51b81526020600482018190526024820152600080516020612989833981519152604482015290519081900360640190fd5b85871115610f795760405162461bcd60e51b815260040180806020018281038252602d8152602001806129a9602d913960400191505060405180910390fd5b6000610f83611edc565b9050610f8d611ef2565b600081815260066020526040902080546001600160a01b03191633179055841561101357807f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b878760405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a25b871561105b5761105b89828a87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611efd92505050565b60008181526007602090815260408083208b9055600890915290208790559050979650505050505050565b606081518351146110c85760405162461bcd60e51b815260040180806020018281038252602c8152602001806129d6602c913960400191505060405180910390fd5b6060835167ffffffffffffffff811180156110e257600080fd5b5060405190808252806020026020018201604052801561110c578160200160208202803683370190505b50905060005b84518110156111965760008086838151811061112a57fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600085838151811061116057fe5b602002602001015181526020019081526020016000205482828151811061118357fe5b6020908102919091010152600101611112565b509392505050565b6111a6611ed8565b6003546001600160a01b039081169116146111f6576040805162461bcd60e51b81526020600482018190526024820152600080516020612989833981519152604482015290519081900360640190fd5b6003546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600380546001600160a01b0319169055565b60008381526006602052604090205483906001600160a01b031633146112975760405162461bcd60e51b8152600401808060200182810382526031815260200180612b066031913960400191505060405180910390fd5b6000848152600860209081526040808320546007909252909120546112bc9085611f97565b1115611301576040805162461bcd60e51b815260206004820152600f60248201526e6f766572206d617820737570706c7960881b604482015290519081900360640190fd5b61130d85858585611efd565b6000848152600760205260409020546113269084611f97565b6000948552600760205260409094209390935550505050565b611347611ed8565b6003546001600160a01b03908116911614611397576040805162461bcd60e51b81526020600482018190526024820152600080516020612989833981519152604482015290519081900360640190fd5b6113a081611ff1565b50565b6003546001600160a01b031690565b600a805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d1b5780601f10610cf057610100808354040283529160200191610d1b565b3360008181526001602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b60005b83518110156115d957600084828151811061149557fe5b602090810291909101810151600081815260069092526040909120549091506001600160a01b031633146114fa5760405162461bcd60e51b815260040180806020018281038252602f815260200180612854602f913960400191505060405180910390fd5b600084838151811061150857fe5b60200260200101519050600860008381526020019081526020016000205461155f86858151811061153557fe5b60200260200101516007600086815260200190815260200160002054611f9790919063ffffffff16565b11156115a4576040805162461bcd60e51b815260206004820152600f60248201526e6f766572206d617820737570706c7960881b604482015290519081900360640190fd5b6000828152600760205260409020546115bd9082611f97565b600092835260076020526040909220919091555060010161147e565b506115e684848484612008565b50505050565b60009081526007602052604090205490565b6006602052600090815260409020546001600160a01b031681565b6001600160a01b03821661165e5760405162461bcd60e51b815260040180806020018281038252602c815260200180612ada602c913960400191505060405180910390fd5b60005b815181101561169557600082828151811061167857fe5b6020026020010151905061168c84826121dc565b50600101611661565b505050565b60606040518060600160405280602c8152602001612908602c9139905090565b600480546040805163c455279160e01b81526001600160a01b0386811694820194909452905160009392831692851691839163c455279191602480820192602092909190829003018186803b15801561171257600080fd5b505afa158015611726573d6000803e3d6000fd5b505050506040513d602081101561173c57600080fd5b50516001600160a01b03161415611757576001915050610c48565b6117618484612262565b949350505050565b336001600160a01b0386161480611785575061178585336116ba565b6117c05760405162461bcd60e51b815260040180806020018281038252602a8152602001806128a9602a913960400191505060405180910390fd5b6001600160a01b0384166118055760405162461bcd60e51b815260040180806020018281038252602b815260200180612829602b913960400191505060405180910390fd5b61181185858585612290565b610ed9858585858561236c565b611826611ed8565b6003546001600160a01b03908116911614611876576040805162461bcd60e51b81526020600482018190526024820152600080516020612989833981519152604482015290519081900360640190fd5b6001600160a01b0381166118bb5760405162461bcd60e51b81526004018080602001828103825260268152602001806128836026913960400191505060405180910390fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000908152600660205260409020546001600160a01b0316151590565b60608161195957506040805180820190915260018152600360fc1b6020820152610c90565b8160005b811561197157600101600a8204915061195d565b60608167ffffffffffffffff8111801561198a57600080fd5b506040519080825280601f01601f1916602001820160405280156119b5576020820181803683370190505b50905060001982015b8515611a0357600a860660300160f81b828280600190039350815181106119e157fe5b60200101906001600160f81b031916908160001a905350600a860495506119be565b50949350505050565b606061176184848460405180602001604052806000815250604051806020016040528060008152506124dc565b8051825114611a795760405162461bcd60e51b81526004018080602001828103825260358152602001806128d36035913960400191505060405180910390fd5b815160005b81811015611c0357611af4838281518110611a9557fe5b6020026020010151600080896001600160a01b03166001600160a01b031681526020019081526020016000206000878581518110611acf57fe5b602002602001015181526020019081526020016000205461270190919063ffffffff16565b600080886001600160a01b03166001600160a01b031681526020019081526020016000206000868481518110611b2657fe5b6020026020010151815260200190815260200160002081905550611bae838281518110611b4f57fe5b6020026020010151600080886001600160a01b03166001600160a01b031681526020019081526020016000206000878581518110611b8957fe5b6020026020010151815260200190815260200160002054611f9790919063ffffffff16565b600080876001600160a01b03166001600160a01b031681526020019081526020016000206000868481518110611be057fe5b602090810291909101810151825281019190915260400160002055600101611a7e565b50836001600160a01b0316856001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015611c89578181015183820152602001611c71565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015611cc8578181015183820152602001611cb0565b5050505090500194505050505060405180910390a45050505050565b611cf6846001600160a01b031661275e565b15610ed9576000846001600160a01b031663bc197c8133888787876040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015611d86578181015183820152602001611d6e565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015611dc5578181015183820152602001611dad565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015611e01578181015183820152602001611de9565b50505050905090810190601f168015611e2e5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b158015611e5357600080fd5b505af1158015611e67573d6000803e3d6000fd5b505050506040513d6020811015611e7d57600080fd5b505190506001600160e01b0319811663bc197c8160e01b14611ed05760405162461bcd60e51b815260040180806020018281038252603f815260200180612a61603f913960400191505060405180910390fd5b505050505050565b3390565b600554600090611eed906001611f97565b905090565b600580546001019055565b6001600160a01b038416600090815260208181526040808320868452909152902054611f299083611f97565b6001600160a01b038516600081815260208181526040808320888452825280832094909455835187815290810186905283519293919233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62928290030190a46115e660008585858561236c565b600082820183811015611fea576040805162461bcd60e51b8152602060048201526016602482015275536166654d617468236164643a204f564552464c4f5760501b604482015290519081900360640190fd5b9392505050565b8051612004906002906020840190612795565b5050565b81518351146120485760405162461bcd60e51b8152600401808060200182810382526030815260200180612a316030913960400191505060405180910390fd5b825160005b818110156120f35761209e84828151811061206457fe5b6020026020010151600080896001600160a01b03166001600160a01b031681526020019081526020016000206000888581518110611b8957fe5b600080886001600160a01b03166001600160a01b0316815260200190815260200160002060008784815181106120d057fe5b60209081029190910181015182528101919091526040016000205560010161204d565b50846001600160a01b031660006001600160a01b0316336001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561217a578181015183820152602001612162565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156121b95781810151838201526020016121a1565b5050505090500194505050505060405180910390a4610ed9600086868686611ce4565b60008181526006602052604090205481906001600160a01b031633146122335760405162461bcd60e51b8152600401808060200182810382526031815260200180612b066031913960400191505060405180910390fd5b50600090815260066020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6001600160a01b0384166000908152602081815260408083208584529091529020546122bc9082612701565b6001600160a01b03808616600090815260208181526040808320878452825280832094909455918616815280825282812085825290915220546122ff9082611f97565b6001600160a01b03808516600081815260208181526040808320888452825291829020949094558051868152938401859052805191939288169233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a450505050565b61237e846001600160a01b031661275e565b15610ed9576000846001600160a01b031663f23a6e6133888787876040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561240f5781810151838201526020016123f7565b50505050905090810190601f16801561243c5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561245f57600080fd5b505af1158015612473573d6000803e3d6000fd5b505050506040513d602081101561248957600080fd5b505190506001600160e01b0319811663f23a6e6160e01b14611ed05760405162461bcd60e51b815260040180806020018281038252603a815260200180612aa0603a913960400191505060405180910390fd5b805182518451865188516060948a948a948a948a948a948a94919092019092019091010167ffffffffffffffff8111801561251657600080fd5b506040519080825280601f01601f191660200182016040528015612541576020820181803683370190505b509050806000805b885181101561259a5788818151811061255e57fe5b602001015160f81c60f81b83838060010194508151811061257b57fe5b60200101906001600160f81b031916908160001a905350600101612549565b5060005b87518110156125ef578781815181106125b357fe5b602001015160f81c60f81b8383806001019450815181106125d057fe5b60200101906001600160f81b031916908160001a90535060010161259e565b5060005b86518110156126445786818151811061260857fe5b602001015160f81c60f81b83838060010194508151811061262557fe5b60200101906001600160f81b031916908160001a9053506001016125f3565b5060005b85518110156126995785818151811061265d57fe5b602001015160f81c60f81b83838060010194508151811061267a57fe5b60200101906001600160f81b031916908160001a905350600101612648565b5060005b84518110156126ee578481815181106126b257fe5b602001015160f81c60f81b8383806001019450815181106126cf57fe5b60200101906001600160f81b031916908160001a90535060010161269d565b50909d9c50505050505050505050505050565b600082821115612758576040805162461bcd60e51b815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b6000813f8015801590611fea57507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106127d657805160ff1916838001178555612803565b82800160010185558215612803579182015b828111156128035782518255916020019190600101906127e8565b5061280f929150612813565b5090565b5b8082111561280f576000815560010161281456fe4552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135355472616461626c652362617463684d696e743a204f4e4c595f43524541544f525f414c4c4f5745444f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f5245524331313535235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e47544868747470733a2f2f6e66742e6d65726375726974792e66696e616e63652f4d65726375726974792e6a736f6e45524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e544552433732315472616461626c65237572693a204e4f4e4558495354454e545f544f4b454e4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572496e697469616c20737570706c792063616e6e6f74206265206d6f7265207468616e206d617820737570706c79455243313135352362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e47544845524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f52455243313135354d696e744275726e2362617463684d696e743a20494e56414c49445f4152524159535f4c454e47544845524331313535235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d45535341474545524331313535235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745455243313135355472616461626c652373657443726561746f723a20494e56414c49445f414444524553532e455243313135355472616461626c652363726561746f724f6e6c793a204f4e4c595f43524541544f525f414c4c4f574544a26469706673582212201038174bda7d6b066a96ca4960e007bd4a15e90811c24f816d0f5695b9fe267064736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000a5409ec958c83c3f309868babaca7c86dcb077c1
-----Decoded View---------------
Arg [0] : _proxyRegistryAddress (address): 0xa5409ec958C83C3f309868babACA7c86DCB077c1
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000a5409ec958c83c3f309868babaca7c86dcb077c1
Deployed Bytecode Sourcemap
149:546:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;816:50:4;;;;;;;;;;;;;;;;-1:-1:-1;816:50:4;;:::i;:::-;;;;;;;;;;;;;;;;7335:123:1;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7335:123:1;;;;;;;;:::i;9254:243::-;;;;;;;;;;;;;;;;-1:-1:-1;9254:243:1;-1:-1:-1;;;;;;9254:243:1;;:::i;:::-;;;;;;;;;;;;;;;;;;890:18:4;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1607:255;;;;;;;;;;;;;;;;-1:-1:-1;1607:255:4;;:::i;2625:502:1:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2625:502:1;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2625:502:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2625:502:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2625:502:1;;;;;;;;-1:-1:-1;2625:502:1;;-1:-1:-1;;;;;2625:502:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2625:502:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2625:502:1;;;;;;;;-1:-1:-1;2625:502:1;;-1:-1:-1;;;;;2625:502:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2625:502:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2625:502:1;;-1:-1:-1;2625:502:1;;-1:-1:-1;;;;;2625:502:1:i;:::-;;2887:628:4;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2887:628:4;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2887:628:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2887:628:4;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2887:628:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2887:628:4;;;;;;;;;;-1:-1:-1;2887:628:4;;-1:-1:-1;2887:628:4;-1:-1:-1;2887:628:4;:::i;7738:486:1:-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;7738:486:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;7738:486:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7738:486:1;;;;;;;;-1:-1:-1;7738:486:1;;-1:-1:-1;;;;;7738:486:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;7738:486:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7738:486:1;;-1:-1:-1;7738:486:1;;-1:-1:-1;;;;;7738:486:1:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;892:145:9;;;:::i;3809:310:4:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3809:310:4;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3809:310:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3809:310:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3809:310:4;;-1:-1:-1;3809:310:4;;-1:-1:-1;;;;;3809:310:4:i;2257:139::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2257:139:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2257:139:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2257:139:4;;-1:-1:-1;2257:139:4;;-1:-1:-1;;;;;2257:139:4:i;689:77:9:-;;;:::i;:::-;;;;-1:-1:-1;;;;;689:77:9;;;;;;;;;;;;;;933:20:4;;;:::i;6358:221:1:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6358:221:1;;;;;;;;;;:::i;4413:554:4:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4413:554:4;;;;;;;;;;;;;;;-1:-1:-1;;;4413:554:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4413:554:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4413:554:4;;;;;;;;-1:-1:-1;4413:554:4;;-1:-1:-1;;;;;4413:554:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4413:554:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4413:554:4;;;;;;;;-1:-1:-1;4413:554:4;;-1:-1:-1;;;;;4413:554:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4413:554:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4413:554:4;;-1:-1:-1;4413:554:4;;-1:-1:-1;;;;;4413:554:4:i;2025:106::-;;;;;;;;;;;;;;;;-1:-1:-1;2025:106:4;;:::i;716:44::-;;;;;;;;;;;;;;;;-1:-1:-1;716:44:4;;:::i;5141:270::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5141:270:4;;;;;;;;;;;;;;;-1:-1:-1;;;5141:270:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5141:270:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5141:270:4;;-1:-1:-1;5141:270:4;;-1:-1:-1;;;;;5141:270:4:i;568:124:8:-;;;:::i;5530:404:4:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5530:404:4;;;;;;;;;;:::i;1706:536:1:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1706:536:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1706:536:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1706:536:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1706:536:1;;-1:-1:-1;1706:536:1;;-1:-1:-1;;;;;1706:536:1:i;1042:240:9:-;;;;;;;;;;;;;;;;-1:-1:-1;1042:240:9;-1:-1:-1;;;;;1042:240:9;;:::i;816:50:4:-;;;;;;;;;;;;;:::o;7335:123:1:-;-1:-1:-1;;;;;7432:16:1;;7408:7;7432:16;;;;;;;;;;;:21;;;;;;;;;7335:123;;;;;:::o;9254:243::-;9334:4;-1:-1:-1;;;;;;9350:42:1;;-1:-1:-1;;;9350:42:1;;:97;;-1:-1:-1;;;;;;;9404:43:1;;-1:-1:-1;;;9404:43:1;9350:97;9346:129;;;-1:-1:-1;9464:4:1;9457:11;;9346:129;-1:-1:-1;9487:5:1;9254:243;;;;:::o;890:18:4:-;;;;;;;;;;;;;;;-1:-1:-1;;890:18:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1607:255::-;1671:13;1700:12;1708:3;1700:7;:12::i;:::-;1692:62;;;;-1:-1:-1;;;1692:62:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1792:15;1767:90;;;;;;;-1:-1:-1;;1767:90:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1792:15;;1767:90;;1792:15;1767:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1815:21;1832:3;1815:16;:21::i;:::-;1767:90;;;;;;;;;;;;;-1:-1:-1;;;1767:90:4;;;:17;:90::i;2625:502:1:-;2802:10;-1:-1:-1;;;;;2802:19:1;;;;2801:60;;;2826:35;2843:5;2850:10;2826:16;:35::i;:::-;2793:120;;;;-1:-1:-1;;;2793:120:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2927:17:1;;2919:78;;;;-1:-1:-1;;;2919:78:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3004:50;3027:5;3034:3;3039:4;3045:8;3004:22;:50::i;:::-;3060:62;3088:5;3095:3;3100:4;3106:8;3116:5;3060:27;:62::i;:::-;2625:502;;;;;:::o;2887:628:4:-;3066:7;820:12:9;:10;:12::i;:::-;810:6;;-1:-1:-1;;;;;810:6:9;;;:22;;;802:67;;;;;-1:-1:-1;;;802:67:9;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;802:67:9;;;;;;;;;;;;;;;3107:10:4::1;3089:14;:28;;3081:86;;;;-1:-1:-1::0;;;3081:86:4::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3174:11;3188:17;:15;:17::i;:::-;3174:31;;3212:23;:21;:23::i;:::-;3242:13;::::0;;;:8:::1;:13;::::0;;;;:26;;-1:-1:-1;;;;;;3242:26:4::1;3258:10;3242:26;::::0;;3279:22;;3275:62:::1;;3326:3;3316:14;3320:4;;3316:14;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;-1:-1:-1::0;;3316:14:4::1;::::0;;::::1;::::0;;::::1;::::0;-1:-1:-1;3316:14:4;;-1:-1:-1;;;;3316:14:4::1;3275:62;3347:19:::0;;3343:73:::1;;3368:48;3374:13;3389:3;3394:14;3410:5;;3368:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;3368:5:4::1;::::0;-1:-1:-1;;;3368:48:4:i:1;:::-;3423:16;::::0;;;:11:::1;:16;::::0;;;;;;;:33;;;3462:14:::1;:19:::0;;;;;:32;;;3435:3;-1:-1:-1;2887:628:4;;;;;;;;;:::o;7738:486:1:-;7836:16;7888:4;:11;7870:7;:14;:29;7862:86;;;;-1:-1:-1;;;7862:86:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7972:30;8019:7;:14;8005:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8005:29:1;;7972:62;;8090:9;8085:108;8109:7;:14;8105:1;:18;8085:108;;;8157:8;:20;8166:7;8174:1;8166:10;;;;;;;;;;;;;;-1:-1:-1;;;;;8157:20:1;-1:-1:-1;;;;;8157:20:1;;;;;;;;;;;;:29;8178:4;8183:1;8178:7;;;;;;;;;;;;;;8157:29;;;;;;;;;;;;8138:13;8152:1;8138:16;;;;;;;;;;;;;;;;;:48;8125:3;;8085:108;;;-1:-1:-1;8206:13:1;7738:486;-1:-1:-1;;;7738:486:1:o;892:145:9:-;820:12;:10;:12::i;:::-;810:6;;-1:-1:-1;;;;;810:6:9;;;:22;;;802:67;;;;;-1:-1:-1;;;802:67:9;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;802:67:9;;;;;;;;;;;;;;;982:6:::1;::::0;961:40:::1;::::0;998:1:::1;::::0;-1:-1:-1;;;;;982:6:9::1;::::0;961:40:::1;::::0;998:1;;961:40:::1;1011:6;:19:::0;;-1:-1:-1;;;;;;1011:19:9::1;::::0;;892:145::o;3809:310:4:-;1081:13;;;;:8;:13;;;;;;3927:3;;-1:-1:-1;;;;;1081:13:4;1098:10;1081:27;1073:89;;;;-1:-1:-1;;;1073:89:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3981:19:::1;::::0;;;:14:::1;:19;::::0;;;;;;;;3946:11:::1;:16:::0;;;;;;;:31:::1;::::0;3967:9;3946:20:::1;:31::i;:::-;:54;;3938:81;;;::::0;;-1:-1:-1;;;3938:81:4;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;3938:81:4;;;;;;;;;;;;;::::1;;4025:33;4031:3;4036;4041:9;4052:5;4025;:33::i;:::-;4083:16;::::0;;;:11:::1;:16;::::0;;;;;:31:::1;::::0;4104:9;4083:20:::1;:31::i;:::-;4064:16;::::0;;;:11:::1;:16;::::0;;;;;:50;;;;-1:-1:-1;;;;3809:310:4:o;2257:139::-;820:12:9;:10;:12::i;:::-;810:6;;-1:-1:-1;;;;;810:6:9;;;:22;;;802:67;;;;;-1:-1:-1;;;802:67:9;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;802:67:9;;;;;;;;;;;;;;;2351:40:4::1;2371:19;2351;:40::i;:::-;2257:139:::0;:::o;689:77:9:-;753:6;;-1:-1:-1;;;;;753:6:9;689:77;:::o;933:20:4:-;;;;;;;;;;;;;;;-1:-1:-1;;933:20:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6358:221:1;6481:10;6471:21;;;;:9;:21;;;;;;;;-1:-1:-1;;;;;6471:32:1;;;;;;;;;;;;:44;;-1:-1:-1;;6471:44:1;;;;;;;;;;6526:48;;;;;;;6471:32;;6481:10;6526:48;;;;;;;;;;;6358:221;;:::o;4413:554:4:-;4556:9;4551:365;4575:4;:11;4571:1;:15;4551:365;;;4601:11;4615:4;4620:1;4615:7;;;;;;;;;;;;;;;;;;;4638:13;;;;:8;:13;;;;;;;;4615:7;;-1:-1:-1;;;;;;4638:13:4;4655:10;4638:27;4630:87;;;;-1:-1:-1;;;4630:87:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4725:16;4744:11;4756:1;4744:14;;;;;;;;;;;;;;4725:33;;4814:14;:19;4829:3;4814:19;;;;;;;;;;;;4774:36;4795:11;4807:1;4795:14;;;;;;;;;;;;;;4774:11;:16;4786:3;4774:16;;;;;;;;;;;;:20;;:36;;;;:::i;:::-;:59;;4766:86;;;;;-1:-1:-1;;;4766:86:4;;;;;;;;;;;;-1:-1:-1;;;4766:86:4;;;;;;;;;;;;;;;4879:16;;;;:11;:16;;;;;;:30;;4900:8;4879:20;:30::i;:::-;4860:16;;;;:11;:16;;;;;;:49;;;;-1:-1:-1;4588:3:4;;4551:365;;;;4921:41;4932:3;4937:4;4943:11;4956:5;4921:10;:41::i;:::-;4413:554;;;;:::o;2025:106::-;2088:7;2110:16;;;:11;:16;;;;;;;2025:106::o;716:44::-;;;;;;;;;;;;-1:-1:-1;;;;;716:44:4;;:::o;5141:270::-;-1:-1:-1;;;;;5230:17:4;;5222:74;;;;-1:-1:-1;;;5222:74:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5307:9;5302:105;5326:4;:11;5322:1;:15;5302:105;;;5352:10;5365:4;5370:1;5365:7;;;;;;;;;;;;;;5352:20;;5380;5392:3;5397:2;5380:11;:20::i;:::-;-1:-1:-1;5339:3:4;;5302:105;;;;5141:270;;:::o;568:124:8:-;612:13;633:53;;;;;;;;;;;;;;;;;;;568:124;:::o;5530:404:4:-;5758:20;;;5802:29;;;-1:-1:-1;;;5802:29:4;;-1:-1:-1;;;;;5802:29:4;;;;;;;;;;;;5633:15;;5758:20;;;;5794:51;;;5758:20;;5802:21;;:29;;;;;;;;;;;;;;;5758:20;5802:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5802:29:4;-1:-1:-1;;;;;5794:51:4;;5790:83;;;5862:4;5855:11;;;;;5790:83;5886:43;5911:6;5919:9;5886:24;:43::i;:::-;5879:50;5530:404;-1:-1:-1;;;;5530:404:4:o;1706:536:1:-;1838:10;-1:-1:-1;;;;;1838:19:1;;;;1837:60;;;1862:35;1879:5;1886:10;1862:16;:35::i;:::-;1829:115;;;;-1:-1:-1;;;1829:115:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1958:17:1;;1950:72;;;;-1:-1:-1;;;1950:72:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2133:43;2151:5;2158:3;2163;2168:7;2133:17;:43::i;:::-;2182:55;2205:5;2212:3;2217;2222:7;2231:5;2182:22;:55::i;1042:240:9:-;820:12;:10;:12::i;:::-;810:6;;-1:-1:-1;;;;;810:6:9;;;:22;;;802:67;;;;;-1:-1:-1;;;802:67:9;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;802:67:9;;;;;;;;;;;;;;;-1:-1:-1;;;;;1130:22:9;::::1;1122:73;;;;-1:-1:-1::0;;;1122:73:9::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1231:6;::::0;1210:38:::1;::::0;-1:-1:-1;;;;;1210:38:9;;::::1;::::0;1231:6:::1;::::0;1210:38:::1;::::0;1231:6:::1;::::0;1210:38:::1;1258:6;:17:::0;;-1:-1:-1;;;;;;1258:17:9::1;-1:-1:-1::0;;;;;1258:17:9;;;::::1;::::0;;;::::1;::::0;;1042:240::o;6428:112:4:-;6489:4;6508:13;;;:8;:13;;;;;;-1:-1:-1;;;;;6508:13:4;:27;;;6428:112::o;1485:367:11:-;1538:27;1575:7;1571:33;;-1:-1:-1;1589:10:11;;;;;;;;;;;;-1:-1:-1;;;1589:10:11;;;;;;1571:33;1619:2;1607:9;1640:42;1647:6;;1640:42;;1660:5;;1675:2;1670:7;;;;1640:42;;;1685:17;1715:3;1705:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1705:14:11;-1:-1:-1;1685:34:11;-1:-1:-1;;;1735:7:11;;1746:80;1753:7;;1746:80;;1803:2;1798;:7;1792:2;:14;1779:29;;1767:4;1772:3;;;;;;;1767:9;;;;;;;;;;;:41;-1:-1:-1;;;;;1767:41:11;;;;;;;;-1:-1:-1;1819:2:11;1813:8;;;;1746:80;;;-1:-1:-1;1843:4:11;1485:367;-1:-1:-1;;;;1485:367:11:o;1178:164::-;1283:13;1309:29;1319:2;1323;1327;1309:29;;;;;;;;;;;;;;;;;;;;;;;;:9;:29::i;4710:670:1:-;4864:8;:15;4849:4;:11;:30;4841:96;;;;-1:-1:-1;;;4841:96:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5001:11;;4981:17;5050:243;5074:9;5070:1;:13;5050:243;;;5173:41;5202:8;5211:1;5202:11;;;;;;;;;;;;;;5173:8;:15;5182:5;-1:-1:-1;;;;;5173:15:1;-1:-1:-1;;;;;5173:15:1;;;;;;;;;;;;:24;5189:4;5194:1;5189:7;;;;;;;;;;;;;;5173:24;;;;;;;;;;;;:28;;:41;;;;:::i;:::-;5146:8;:15;5155:5;-1:-1:-1;;;;;5146:15:1;-1:-1:-1;;;;;5146:15:1;;;;;;;;;;;;:24;5162:4;5167:1;5162:7;;;;;;;;;;;;;;5146:24;;;;;;;;;;;:68;;;;5247:39;5274:8;5283:1;5274:11;;;;;;;;;;;;;;5247:8;:13;5256:3;-1:-1:-1;;;;;5247:13:1;-1:-1:-1;;;;;5247:13:1;;;;;;;;;;;;:22;5261:4;5266:1;5261:7;;;;;;;;;;;;;;5247:22;;;;;;;;;;;;:26;;:39;;;;:::i;:::-;5222:8;:13;5231:3;-1:-1:-1;;;;;5222:13:1;-1:-1:-1;;;;;5222:13:1;;;;;;;;;;;;:22;5236:4;5241:1;5236:7;;;;;;;;;;;;;;;;;;;5222:22;;;;;;;;;;-1:-1:-1;5222:22:1;:64;5085:3;;5050:243;;;;5355:3;-1:-1:-1;;;;;5322:53:1;5348:5;-1:-1:-1;;;;;5322:53:1;5336:10;-1:-1:-1;;;;;5322:53:1;;5360:4;5366:8;5322:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4710:670;;;;;:::o;5493:468::-;5695:16;:3;-1:-1:-1;;;;;5695:14:1;;:16::i;:::-;5691:266;;;5721:13;5759:3;-1:-1:-1;;;;;5737:49:1;;5787:10;5799:5;5806:4;5812:8;5822:5;5737:91;;;;;;;;;;;;;-1:-1:-1;;;;;5737:91:1;;;;;;-1:-1:-1;;;;;5737:91:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5737:91:1;;-1:-1:-1;;;;;;;5844:38:1;;-1:-1:-1;;;5844:38:1;5836:114;;;;-1:-1:-1;;;5836:114:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5691:266;5493:468;;;;;:::o;32:104:9:-;119:10;32:104;:::o;6675:98:4:-;6746:15;;6724:7;;6746:22;;6766:1;6746:19;:22::i;:::-;6739:29;;6675:98;:::o;6841:70::-;6889:15;:17;;;;;;6841:70::o;682:390:3:-;-1:-1:-1;;;;;821:13:3;;:8;:13;;;;;;;;;;;:18;;;;;;;;;:31;;844:7;821:22;:31::i;:::-;-1:-1:-1;;;;;800:13:3;;:8;:13;;;;;;;;;;;:18;;;;;;;;:52;;;;882:59;;;;;;;;;;;;;800:13;;:8;;897:10;;882:59;;;;;;;;1005:62;1036:3;1042;1047;1052:7;1061:5;1005:22;:62::i;1452:158:10:-;1510:7;1537:5;;;1556:6;;;;1548:41;;;;;-1:-1:-1;;;1548:41:10;;;;;;;;;;;;-1:-1:-1;;;1548:41:10;;;;;;;;;;;;;;;1603:1;1452:158;-1:-1:-1;;;1452:158:10:o;2226:121:2:-;2305:37;;;;:15;;:37;;;;;:::i;:::-;;2226:121;:::o;1350:705:3:-;1497:8;:15;1482:4;:11;:30;1474:91;;;;-1:-1:-1;;;1474:91:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1622:11;;1606:13;1670:147;1694:5;1690:1;:9;1670:147;;;1771:39;1798:8;1807:1;1798:11;;;;;;;;;;;;;;1771:8;:13;1780:3;-1:-1:-1;;;;;1771:13:3;-1:-1:-1;;;;;1771:13:3;;;;;;;;;;;;:22;1785:4;1790:1;1785:7;;;;;;;1771:39;1746:8;:13;1755:3;-1:-1:-1;;;;;1746:13:3;-1:-1:-1;;;;;1746:13:3;;;;;;;;;;;;:22;1760:4;1765:1;1760:7;;;;;;;;;;;;;;;;;;;1746:22;;;;;;;;;;-1:-1:-1;1746:22:3;:64;1701:3;;1670:147;;;;1897:3;-1:-1:-1;;;;;1857:60:3;1891:3;-1:-1:-1;;;;;1857:60:3;1871:10;-1:-1:-1;;;;;1857:60:3;;1902:4;1908:8;1857:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1981:69;2017:3;2023;2028:4;2034:8;2044:5;1981:27;:69::i;6100:107:4:-;1081:13;;;;:8;:13;;;;;;6168:3;;-1:-1:-1;;;;;1081:13:4;1098:10;1081:27;1073:89;;;;-1:-1:-1;;;1073:89:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6183:13:4::1;::::0;;;:8:::1;:13;::::0;;;;:19;;-1:-1:-1;;;;;;6183:19:4::1;-1:-1:-1::0;;;;;6183:19:4;;;::::1;::::0;;;::::1;::::0;;6100:107::o;6836:159:1:-;-1:-1:-1;;;;;6962:17:1;;;6930:15;6962:17;;;:9;:17;;;;;;;;:28;;;;;;;;;;;;;;;6836:159::o;3517:367::-;-1:-1:-1;;;;;3669:15:1;;:8;:15;;;;;;;;;;;:20;;;;;;;;;:33;;3694:7;3669:24;:33::i;:::-;-1:-1:-1;;;;;3646:15:1;;;:8;:15;;;;;;;;;;;:20;;;;;;;;:56;;;;3748:13;;;;;;;;;;;:18;;;;;;;;:31;;3771:7;3748:22;:31::i;:::-;-1:-1:-1;;;;;3727:13:1;;;:8;:13;;;;;;;;;;;:18;;;;;;;;;:52;;;;3827;;;;;;;;;;;;;3727:13;;3827:52;;;;3842:10;;3827:52;;;;;;;;;;;3517:367;;;;:::o;3992:421::-;4165:16;:3;-1:-1:-1;;;;;4165:14:1;;:16::i;:::-;4161:248;;;4191:13;4229:3;-1:-1:-1;;;;;4207:44:1;;4252:10;4264:5;4271:3;4276:7;4285:5;4207:84;;;;;;;;;;;;;-1:-1:-1;;;;;4207:84:1;;;;;;-1:-1:-1;;;;;4207:84:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4207:84:1;;-1:-1:-1;;;;;;;4307:32:1;;-1:-1:-1;;;4307:32:1;4299:103;;;;-1:-1:-1;;;4299:103:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;159:829:11;568:10;;555;;542;;529;;516;;304:13;;348:2;;380;;412;;444;;476;;304:13;;516:23;;;;:36;;;:49;;;:62;505:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;505:74:11;-1:-1:-1;483:96:11;-1:-1:-1;483:96:11;621:9;;638:61;662:3;:10;658:1;:14;638:61;;;693:3;697:1;693:6;;;;;;;;;;;;;;;;679;686:3;;;;;;679:11;;;;;;;;;;;:20;-1:-1:-1;;;;;679:20:11;;;;;;;;-1:-1:-1;674:3:11;;638:61;;;;708:9;703:61;727:3;:10;723:1;:14;703:61;;;758:3;762:1;758:6;;;;;;;;;;;;;;;;744;751:3;;;;;;744:11;;;;;;;;;;;:20;-1:-1:-1;;;;;744:20:11;;;;;;;;-1:-1:-1;739:3:11;;703:61;;;;773:9;768:61;792:3;:10;788:1;:14;768:61;;;823:3;827:1;823:6;;;;;;;;;;;;;;;;809;816:3;;;;;;809:11;;;;;;;;;;;:20;-1:-1:-1;;;;;809:20:11;;;;;;;;-1:-1:-1;804:3:11;;768:61;;;;838:9;833:61;857:3;:10;853:1;:14;833:61;;;888:3;892:1;888:6;;;;;;;;;;;;;;;;874;881:3;;;;;;874:11;;;;;;;;;;;:20;-1:-1:-1;;;;;874:20:11;;;;;;;;-1:-1:-1;869:3:11;;833:61;;;;903:9;898:61;922:3;:10;918:1;:14;898:61;;;953:3;957:1;953:6;;;;;;;;;;;;;;;;939;946:3;;;;;;939:11;;;;;;;;;;;:20;-1:-1:-1;;;;;939:20:11;;;;;;;;-1:-1:-1;934:3:11;;898:61;;;-1:-1:-1;977:6:11;;159:829;-1:-1:-1;;;;;;;;;;;;;159:829:11:o;1219:158:10:-;1277:7;1305:1;1300;:6;;1292:42;;;;;-1:-1:-1;;;1292:42:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1352:5:10;;;1219:158::o;1160:398:0:-;1221:4;1473:21;;1509:15;;;;;:43;;-1:-1:-1;825:66:0;1528:24;;;1501:52;-1:-1:-1;;1160:398:0:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;
Swarm Source
ipfs://1038174bda7d6b066a96ca4960e007bd4a15e90811c24f816d0f5695b9fe2670
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.