More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 118 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
P Transfer Owner... | 15185967 | 891 days ago | IN | 0 ETH | 0.00057301 | ||||
Buy Tokens | 15179242 | 892 days ago | IN | 0 ETH | 0.00205386 | ||||
Withdraw Admins ... | 15172889 | 893 days ago | IN | 0 ETH | 0.00180155 | ||||
Withdraw Admins ... | 15172882 | 893 days ago | IN | 0 ETH | 0.00139392 | ||||
Withdraw Admins ... | 15172882 | 893 days ago | IN | 0 ETH | 0.00131677 | ||||
Withdraw Admins ... | 15172881 | 893 days ago | IN | 0 ETH | 0.00100072 | ||||
Request Tokens | 15167128 | 894 days ago | IN | 0.0204 ETH | 0.00263921 | ||||
Request Tokens | 15146978 | 897 days ago | IN | 0.0491 ETH | 0.00237179 | ||||
Request Tokens | 15146943 | 897 days ago | IN | 0.1722 ETH | 0.00193124 | ||||
Buy Tokens | 15142124 | 898 days ago | IN | 0 ETH | 0.01136432 | ||||
Buy Tokens | 15135554 | 899 days ago | IN | 0.025 ETH | 0.00859007 | ||||
Request Tokens | 15131871 | 900 days ago | IN | 0 ETH | 0.0009924 | ||||
Request Tokens | 15128403 | 900 days ago | IN | 0.0372 ETH | 0.00116768 | ||||
Buy Tokens | 15102754 | 904 days ago | IN | 0 ETH | 0.00766951 | ||||
Request Tokens | 15101833 | 904 days ago | IN | 0 ETH | 0.00253263 | ||||
Request Tokens | 15101827 | 904 days ago | IN | 0.0001 ETH | 0.00128507 | ||||
Buy Tokens | 15099363 | 905 days ago | IN | 0 ETH | 0.00327671 | ||||
Buy Tokens | 15082720 | 907 days ago | IN | 0 ETH | 0.00482053 | ||||
Buy Tokens | 15076320 | 908 days ago | IN | 0 ETH | 0.00714281 | ||||
Buy Tokens | 15070763 | 909 days ago | IN | 0 ETH | 0.00385544 | ||||
Buy Tokens | 15069776 | 909 days ago | IN | 0 ETH | 0.00781574 | ||||
Buy Tokens | 15066998 | 910 days ago | IN | 0 ETH | 0.00153379 | ||||
Buy Tokens | 15066127 | 910 days ago | IN | 0 ETH | 0.00353536 | ||||
Buy Tokens | 15064311 | 910 days ago | IN | 0 ETH | 0.00424077 | ||||
Buy Tokens | 15064268 | 910 days ago | IN | 0 ETH | 0.00293988 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
15172881 | 893 days ago | 5.0942 ETH |
Loading...
Loading
Contract Name:
UniqPaymentProxy
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.6; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; import "./SignatureVerify.sol"; import "../../utils/uniq/Ierc20.sol"; import "../../interfaces/IUniqRedeemV2.sol"; contract UniqPaymentProxy is Ownable, SignatureVerify { IUniqRedeemV2 internal _redeem; // ----- EVENTS ----- // event TokensRequested( address indexed _requester, address indexed _mintAddress, uint256[] _tokenIds, uint256 _bundleId ); event TokensBougth( address indexed _mintingContractAddress, address indexed _sellerAddress, address indexed _receiver, uint256 _bundleId, uint256[] _tokenIds, uint256 _priceForPackage, address _paymentToken, uint256 _sellerFee ); event Withdraw( address indexed _sellerAddress, address _tokenContractAddress, uint256 _amount ); // ----- VARIABLES ----- // uint256 internal _transactionOffset; mapping(address => mapping(address => uint256)) internal _addressBalance; uint256 internal _networkId; mapping(bytes => bool) internal _isSignatureUsed; mapping(address => mapping(uint256 => bool)) internal _tokenAlreadyRequested; mapping(uint256 => bool) internal _isNonceUsed; // ----- CONSTRUCTOR ----- // constructor(uint256 _pnetworkId) { _transactionOffset = 3 minutes; _networkId = _pnetworkId; } function setRedeemAddress(IUniqRedeemV2 _redeemAddress) external onlyOwner { _redeem = _redeemAddress; } // ----- VIEWS ----- // function getRedeemAddress() external view returns (address) { return address(_redeem); } function tokenBalanceOf(address _tokenAddress, address _address) external view returns (uint256) { return (_addressBalance[_tokenAddress][_address]); } // ----- MESSAGE SIGNATURE ----- // /// @dev not test for functions related to signature function getMessageHash( address _mintingContractAddress, address _sellerAddress, uint256 _percentageForSeller, uint256 _bundleId, uint256[] memory _tokenIds, uint256 _price, address _paymnetTokenAddress, uint256 _timestamp, string memory _redeemerName, uint256 _purpose ) public view returns (bytes32) { return keccak256( abi.encodePacked( _networkId, _mintingContractAddress, _sellerAddress, _percentageForSeller, _bundleId, _tokenIds, _price, _paymnetTokenAddress, _timestamp, _redeemerName, _purpose ) ); } /// @dev not test for functions related to signature function verifySignature( address _mintingContractAddress, address _sellerAddress, uint256 _percentageForSeller, uint256 _bundleId, uint256[] memory _tokenIds, uint256 _price, address _paymentTokenAddress, bytes memory _signature, uint256 _timestamp, string memory _redeemerName, uint256 _purpose ) internal view returns (bool) { bytes32 messageHash = getMessageHash( _mintingContractAddress, _sellerAddress, _percentageForSeller, _bundleId, _tokenIds, _price, _paymentTokenAddress, _timestamp, _redeemerName, _purpose ); bytes32 ethSignedMessageHash = getEthSignedMessageHash(messageHash); return recoverSigner(ethSignedMessageHash, _signature) == owner(); } function getMessageHashRequester( address _mintContractAddress, uint256 _mintNetworkId, address _sellerAddress, uint256 _percentageForSeller, uint256 _bundleId, uint256[] memory _tokenIds, uint256 _price, address _paymnetTokenAddress, uint256 _timestamp, address _requesterAddress ) public view returns (bytes32) { return keccak256( abi.encodePacked( _networkId, _mintContractAddress, _mintNetworkId, _sellerAddress, _percentageForSeller, _bundleId, _tokenIds, _price, _paymnetTokenAddress, _timestamp, _requesterAddress ) ); } function verifySignatureRequester( address _mintContractAddress, uint256 _mintNetworkId, address _sellerAddress, uint256 _percentageForSeller, uint256 _bundleId, uint256[] memory _tokenIds, uint256 _price, address _paymentTokenAddress, bytes memory _signature, uint256 _timestamp ) internal view returns (bool) { bytes32 messageHash = getMessageHashRequester( _mintContractAddress, _mintNetworkId, _sellerAddress, _percentageForSeller, _bundleId, _tokenIds, _price, _paymentTokenAddress, _timestamp, msg.sender ); bytes32 ethSignedMessageHash = getEthSignedMessageHash(messageHash); return recoverSigner(ethSignedMessageHash, _signature) == owner(); } function _redeemTokens( address _mintingContractAddress, uint256[] memory _tokenIds, string memory _redeemerName, uint256 _purpose ) internal { address[] memory contractAddresses = new address[](_tokenIds.length); uint256[] memory purposes = new uint256[](_tokenIds.length); string[] memory names = new string[](_tokenIds.length); for (uint256 i = 0; i < _tokenIds.length; i++) { contractAddresses[i] = _mintingContractAddress; purposes[i] = _purpose; names[i] = _redeemerName; } _redeem.redeemTokensAsAdmin( contractAddresses, _tokenIds, purposes, names ); } // ----- PUBLIC METHODS ----- // function buyTokens( address _mintingContractAddress, address _sellerAddress, uint256 _percentageForSeller, uint256 _bundleId, uint256[] memory _tokenIds, uint256 _priceForPackage, address _paymentToken, address _receiver, bytes memory _signature, uint256 _timestamp, string memory _redeemerName, uint256 _purpose ) external payable { require( _timestamp + _transactionOffset >= block.timestamp, "Transaction timed out" ); require(!_isSignatureUsed[_signature], "Signature already used"); require( verifySignature( _mintingContractAddress, _sellerAddress, _percentageForSeller, _bundleId, _tokenIds, _priceForPackage, _paymentToken, _signature, _timestamp, _redeemerName, _purpose ), "Signature mismatch" ); _isSignatureUsed[_signature] = true; uint256 sellerFee; if (_priceForPackage != 0) { if (_paymentToken == address(0)) { require(msg.value >= _priceForPackage, "Not enough ether"); if (_priceForPackage < msg.value) { payable(msg.sender).transfer(msg.value - _priceForPackage); } sellerFee = (_priceForPackage * _percentageForSeller) / 100; _addressBalance[address(0)][_sellerAddress] += sellerFee; _addressBalance[address(0)][ address(this) ] += (_priceForPackage - sellerFee); } else { Ierc20(_paymentToken).transferFrom( msg.sender, address(this), _priceForPackage ); sellerFee = (_priceForPackage * _percentageForSeller) / 100; _addressBalance[_paymentToken][_sellerAddress] += sellerFee; _addressBalance[_paymentToken][ address(this) ] += (_priceForPackage - sellerFee); } } address[] memory _receivers = new address[](_tokenIds.length); for (uint256 i = 0; i < _tokenIds.length; i++) { _receivers[i] = _receiver; } IUniqCollections(_mintingContractAddress).batchMintSelectedIds( _tokenIds, _receivers ); if ( _purpose != 0 && bytes(_redeemerName).length >= 2 && (address(_redeem) != address(0)) ) { _redeemTokens(_mintingContractAddress, _tokenIds, _redeemerName, _purpose); } emit TokensBougth( _mintingContractAddress, _sellerAddress, _receiver, _bundleId, _tokenIds, _priceForPackage, _paymentToken, sellerFee ); } function requestTokens( address _mintContractAddress, uint256 _mintNetworkId, address _sellerAddress, uint256 _percentageForSeller, uint256 _bundleId, uint256[] memory _tokenIds, uint256 _priceForPackage, address _paymentToken, bytes memory _signature, uint256 _timestamp ) external payable { require( _timestamp + _transactionOffset >= block.timestamp, "Transaction timed out" ); require(!_isSignatureUsed[_signature], "Signature already used"); require( verifySignatureRequester( _mintContractAddress, _mintNetworkId, _sellerAddress, _percentageForSeller, _bundleId, _tokenIds, _priceForPackage, _paymentToken, _signature, _timestamp ), "Signature mismatch" ); _isSignatureUsed[_signature] = true; if (_priceForPackage != 0) { if (_paymentToken == address(0)) { require(msg.value >= _priceForPackage, "Not enough ether"); if (_priceForPackage < msg.value) { payable(msg.sender).transfer(msg.value - _priceForPackage); } uint256 sellerFee = (_priceForPackage * _percentageForSeller) / 100; _addressBalance[address(0)][_sellerAddress] += sellerFee; _addressBalance[address(0)][ address(this) ] += (_priceForPackage - sellerFee); } else { IERC20(_paymentToken).transferFrom( msg.sender, address(this), _priceForPackage ); uint256 sellerFee = (_priceForPackage * _percentageForSeller) / 100; _addressBalance[_paymentToken][_sellerAddress] += sellerFee; _addressBalance[_paymentToken][ address(this) ] += (_priceForPackage - sellerFee); } } if(_mintNetworkId == _networkId){ if(NFTContract(_mintContractAddress).owner() == address(this)){ address[] memory _receivers = new address[](_tokenIds.length); for (uint256 i = 0; i < _tokenIds.length; i++) { _receivers[i] = msg.sender; } IUniqCollections(_mintContractAddress).batchMintSelectedIds( _tokenIds, _receivers ); return(); } } emit TokensRequested( msg.sender, _mintContractAddress, _tokenIds, _bundleId ); } function withdraw(address _tokenAddress, uint256 _amount) external { if (_tokenAddress == address(0)) { uint256 balance = _addressBalance[_tokenAddress][msg.sender]; require(balance >= _amount, "Amount exceed balance"); _addressBalance[_tokenAddress][msg.sender] -= _amount; require(payable(msg.sender).send(_amount)); } else { uint256 balance = _addressBalance[_tokenAddress][msg.sender]; require(balance != 0, "Nothing to recover"); _addressBalance[_tokenAddress][msg.sender] -= _amount; Ierc20(_tokenAddress).transfer(msg.sender, _amount); } emit Withdraw(msg.sender, _tokenAddress, _amount); } // ----- PROXY METHODS ----- // function pEditClaimingAddress(address _contractAddress, address _newAddress) external onlyOwner { IUniqCollections(_contractAddress).editClaimingAdress(_newAddress); } function pEditRoyaltyFee(address _contractAddress, uint256 _newFee) external onlyOwner { IUniqCollections(_contractAddress).editRoyaltyFee(_newFee); } function pEditTokenUri(address _contractAddress, string memory _ttokenUri) external onlyOwner { IUniqCollections(_contractAddress).editTokenUri(_ttokenUri); } function pRecoverERC20(address _contractAddress, address token) external onlyOwner { IUniqCollections(_contractAddress).recoverERC20(token); uint256 val = IERC20(token).balanceOf(address(this)); require(val > 0, "Nothing to recover"); Ierc20(token).transfer(owner(), val); } function pTransferOwnership(address _contractAddress, address newOwner) external onlyOwner { IUniqCollections(_contractAddress).transferOwnership(newOwner); } function pBatchMintSelectedIds( uint256[] memory _ids, address[] memory _addresses, address _contractAddress ) external onlyOwner { IUniqCollections(_contractAddress).batchMintSelectedIds( _ids, _addresses ); } function pBatchMintSelectedIdsAndRedeem( uint256[] memory _ids, address[] memory _addresses, address _contractAddress, string[] memory _redeemerName, uint256 _purpose ) external onlyOwner { IUniqCollections(_contractAddress).batchMintSelectedIds( _ids, _addresses ); uint256[] memory purposes = new uint256[](_ids.length); address[] memory contractAddresses = new address[](_ids.length); for (uint256 i = 0; i < _ids.length; i++) { purposes[i] = _purpose; contractAddresses[i] = _contractAddress; } _redeem.redeemTokensAsAdmin( contractAddresses, _ids, purposes, _redeemerName ); } function pMintNextToken(address _contractAddress, address _receiver) external onlyOwner { IUniqCollections(_contractAddress).mintNextToken(_receiver); } // ----- OWNERS METHODS ----- // function emergencyWithdrawTokens(address token) external onlyOwner { uint256 val = IERC20(token).balanceOf(address(this)); require(val != 0, "Nothing to recover"); // use interface that not return value (USDT case) Ierc20(token).transfer(owner(), val); } function setTransactionOffset(uint256 _newOffset) external onlyOwner { _transactionOffset = _newOffset; } receive() external payable {} function emergencyWithdrawETH() external onlyOwner { require(payable(msg.sender).send(address(this).balance)); } function withdrawAdminsETH() external onlyOwner { require( payable(msg.sender).send(_addressBalance[address(0)][address(this)]) ); _addressBalance[address(0)][address(this)] = 0; } function withdrawAdminsTokens(address _tokenAddress) external onlyOwner { uint256 balance = _addressBalance[_tokenAddress][address(this)]; require(balance != 0, "Nothing to recover"); _addressBalance[_tokenAddress][address(this)] = 0; Ierc20(_tokenAddress).transfer(msg.sender, balance); } } interface IUniqCollections { function editClaimingAdress(address _newAddress) external; function editRoyaltyFee(uint256 _newFee) external; function batchMintSelectedIds( uint256[] memory _ids, address[] memory _addresses ) external; function editTokenUri(string memory _ttokenUri) external; function recoverERC20(address token) external; function transferOwnership(address newOwner) external; function mintNextToken(address _receiver) external; } interface NFTContract { function mintNFTTokens( address _requesterAddress, uint256 _bundleId, uint256[] memory _tokenIds, uint256 _chainId, bytes memory _transactionHash ) external; function owner() external view returns(address); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.6; contract SignatureVerify{ function getEthSignedMessageHash(bytes32 _messageHash) internal pure returns (bytes32) { return keccak256( abi.encodePacked( "\x19Ethereum Signed Message:\n32", _messageHash ) ); } function recoverSigner( bytes32 _ethSignedMessageHash, bytes memory _signature ) internal pure returns (address) { require(_signature.length == 65, "invalid signature length"); bytes32 r; bytes32 s; uint8 v; assembly { r := mload(add(_signature, 32)) s := mload(add(_signature, 64)) v := byte(0, mload(add(_signature, 96))) } return ecrecover(_ethSignedMessageHash, v, r, s); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; // we need some information from token contract // we also need ability to transfer tokens from/to this contract interface Ierc20 { function transferFrom( address from, address to, uint256 value ) external returns (bool); function transfer(address to, uint256 value) external returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.6; import "./IUniqRedeem.sol"; interface IUniqRedeemV2 is IUniqRedeem { function redeemTokensAsAdmin( address[] memory _tokenContracts, uint256[] memory _tokenIds, uint256[] memory _purposes, string[] memory _redeemerName ) external; function redeemTokenForPurposesAsAdmin( address _tokenContract, uint256 _tokenId, uint256[] memory _purposes, string memory _redeemerName ) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.6; interface IUniqRedeem { event Redeemed( address indexed _contractAddress, uint256 indexed _tokenId, address indexed _redeemerAddress, string _redeemerName, uint256[] _purposes ); function isTokenRedeemedForPurpose( address _address, uint256 _tokenId, uint256 _purpose ) external view returns (bool); function getMessageHash( address[] memory _tokenContracts, uint256[] memory _tokenIds, uint256[] memory _purposes, uint256 _price, address _paymentTokenAddress, uint256 _timestamp ) external pure returns (bytes32); function redeemManyTokens( address[] memory _tokenContracts, uint256[] memory _tokenIds, uint256[] memory _purposes, string memory _redeemerName, uint256 _price, address _paymentTokenAddress, bytes memory _signature, uint256 _timestamp ) external payable; function redeemTokenForPurposes( address _tokenContract, uint256 _tokenId, uint256[] memory _purposes, string memory _redeemerName, uint256 _price, address _paymentTokenAddress, bytes memory _signature, uint256 _timestamp ) external payable; function setTransactionOffset(uint256 _newOffset) external; function setStatusesForTokens( address[] memory _tokenAddresses, uint256[] memory _tokenIds, uint256[] memory _purposes, bool[] memory isRedeemed ) external; function withdrawERC20(address _address) external; function withdrawETH() external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../../utils/introspection/IERC165.sol"; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
{ "metadata": { "useLiteralContent": true }, "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint256","name":"_pnetworkId","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"_mintingContractAddress","type":"address"},{"indexed":true,"internalType":"address","name":"_sellerAddress","type":"address"},{"indexed":true,"internalType":"address","name":"_receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"_bundleId","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"indexed":false,"internalType":"uint256","name":"_priceForPackage","type":"uint256"},{"indexed":false,"internalType":"address","name":"_paymentToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"_sellerFee","type":"uint256"}],"name":"TokensBougth","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_requester","type":"address"},{"indexed":true,"internalType":"address","name":"_mintAddress","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"indexed":false,"internalType":"uint256","name":"_bundleId","type":"uint256"}],"name":"TokensRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_sellerAddress","type":"address"},{"indexed":false,"internalType":"address","name":"_tokenContractAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"address","name":"_mintingContractAddress","type":"address"},{"internalType":"address","name":"_sellerAddress","type":"address"},{"internalType":"uint256","name":"_percentageForSeller","type":"uint256"},{"internalType":"uint256","name":"_bundleId","type":"uint256"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256","name":"_priceForPackage","type":"uint256"},{"internalType":"address","name":"_paymentToken","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"bytes","name":"_signature","type":"bytes"},{"internalType":"uint256","name":"_timestamp","type":"uint256"},{"internalType":"string","name":"_redeemerName","type":"string"},{"internalType":"uint256","name":"_purpose","type":"uint256"}],"name":"buyTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"emergencyWithdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"emergencyWithdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_mintingContractAddress","type":"address"},{"internalType":"address","name":"_sellerAddress","type":"address"},{"internalType":"uint256","name":"_percentageForSeller","type":"uint256"},{"internalType":"uint256","name":"_bundleId","type":"uint256"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"address","name":"_paymnetTokenAddress","type":"address"},{"internalType":"uint256","name":"_timestamp","type":"uint256"},{"internalType":"string","name":"_redeemerName","type":"string"},{"internalType":"uint256","name":"_purpose","type":"uint256"}],"name":"getMessageHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_mintContractAddress","type":"address"},{"internalType":"uint256","name":"_mintNetworkId","type":"uint256"},{"internalType":"address","name":"_sellerAddress","type":"address"},{"internalType":"uint256","name":"_percentageForSeller","type":"uint256"},{"internalType":"uint256","name":"_bundleId","type":"uint256"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"address","name":"_paymnetTokenAddress","type":"address"},{"internalType":"uint256","name":"_timestamp","type":"uint256"},{"internalType":"address","name":"_requesterAddress","type":"address"}],"name":"getMessageHashRequester","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRedeemAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_ids","type":"uint256[]"},{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"address","name":"_contractAddress","type":"address"}],"name":"pBatchMintSelectedIds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_ids","type":"uint256[]"},{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"string[]","name":"_redeemerName","type":"string[]"},{"internalType":"uint256","name":"_purpose","type":"uint256"}],"name":"pBatchMintSelectedIdsAndRedeem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_newAddress","type":"address"}],"name":"pEditClaimingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"pEditRoyaltyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"string","name":"_ttokenUri","type":"string"}],"name":"pEditTokenUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"_receiver","type":"address"}],"name":"pMintNextToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"token","type":"address"}],"name":"pRecoverERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contractAddress","type":"address"},{"internalType":"address","name":"newOwner","type":"address"}],"name":"pTransferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_mintContractAddress","type":"address"},{"internalType":"uint256","name":"_mintNetworkId","type":"uint256"},{"internalType":"address","name":"_sellerAddress","type":"address"},{"internalType":"uint256","name":"_percentageForSeller","type":"uint256"},{"internalType":"uint256","name":"_bundleId","type":"uint256"},{"internalType":"uint256[]","name":"_tokenIds","type":"uint256[]"},{"internalType":"uint256","name":"_priceForPackage","type":"uint256"},{"internalType":"address","name":"_paymentToken","type":"address"},{"internalType":"bytes","name":"_signature","type":"bytes"},{"internalType":"uint256","name":"_timestamp","type":"uint256"}],"name":"requestTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IUniqRedeemV2","name":"_redeemAddress","type":"address"}],"name":"setRedeemAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newOffset","type":"uint256"}],"name":"setTransactionOffset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"address","name":"_address","type":"address"}],"name":"tokenBalanceOf","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":"address","name":"_tokenAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAdminsETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"withdrawAdminsTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162002d8338038062002d8383398101604081905262000034916200009d565b6200003f336200004d565b60b4600255600455620000b7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215620000b057600080fd5b5051919050565b612cbc80620000c76000396000f3fe60806040526004361061014e5760003560e01c8063b2af127c116100b6578063eafc24971161006f578063eafc2497146103c4578063ef84569d146103e4578063f027c38314610404578063f2fde38b14610417578063f3fef3a314610437578063fb48d7d81461045757600080fd5b8063b2af127c1461030f578063bd4f77ed1461032f578063c832ddbd14610344578063cedc2c8114610364578063e346111914610384578063e864da7f146103a457600080fd5b80638649cc3d116101085780638649cc3d1461023f5780638da5cb5b1461025f5780638fcda9bf146102915780639441bd44146102b1578063a6150f51146102d1578063afbb88a5146102ef57600080fd5b80627fac7f1461015a57806318470bf81461017c5780631bea8006146101af5780636c6060c9146101f5578063715018a614610215578063845360171461022a57600080fd5b3661015557005b600080fd5b34801561016657600080fd5b5061017a61017536600461261a565b61046a565b005b34801561018857600080fd5b5061019c610197366004612306565b610664565b6040519081526020015b60405180910390f35b3480156101bb57600080fd5b5061019c6101ca3660046121be565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561020157600080fd5b5061017a6102103660046125a3565b6106b3565b34801561022157600080fd5b5061017a610741565b34801561023657600080fd5b5061017a610777565b34801561024b57600080fd5b5061017a61025a3660046123cd565b6107c5565b34801561026b57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016101a6565b34801561029d57600080fd5b5061017a6102ac36600461217d565b610851565b3480156102bd57600080fd5b5061017a6102cc3660046121be565b61095d565b3480156102dd57600080fd5b506001546001600160a01b0316610279565b3480156102fb57600080fd5b5061017a61030a366004612754565b6109b5565b34801561031b57600080fd5b5061017a61032a36600461217d565b6109e4565b34801561033b57600080fd5b5061017a610afb565b34801561035057600080fd5b5061017a61035f3660046121be565b610b84565b34801561037057600080fd5b5061017a61037f36600461241c565b610d4c565b34801561039057600080fd5b5061017a61039f36600461217d565b610da3565b3480156103b057600080fd5b5061017a6103bf3660046121be565b610def565b3480156103d057600080fd5b5061017a6103df3660046121be565b610e47565b3480156103f057600080fd5b5061019c6103ff3660046124e8565b610e9f565b61017a610412366004612448565b610ec8565b34801561042357600080fd5b5061017a61043236600461217d565b611445565b34801561044357600080fd5b5061017a61045236600461241c565b6114e0565b61017a6104653660046121f7565b611701565b6000546001600160a01b0316331461049d5760405162461bcd60e51b815260040161049490612a91565b60405180910390fd5b60405162fac06160e41b81526001600160a01b03841690630fac0610906104ca9088908890600401612a02565b600060405180830381600087803b1580156104e457600080fd5b505af11580156104f8573d6000803e3d6000fd5b50505050600085516001600160401b0381111561051757610517612c3b565b604051908082528060200260200182016040528015610540578160200160208202803683370190505b509050600086516001600160401b0381111561055e5761055e612c3b565b604051908082528060200260200182016040528015610587578160200160208202803683370190505b50905060005b87518110156105f257838382815181106105a9576105a9612c25565b602002602001018181525050858282815181106105c8576105c8612c25565b6001600160a01b0390921660209283029190910190910152806105ea81612bf4565b91505061058d565b50600154604051637f25b82b60e11b81526001600160a01b039091169063fe4b7056906106299084908b9087908a90600401612966565b600060405180830381600087803b15801561064357600080fd5b505af1158015610657573d6000803e3d6000fd5b5050505050505050505050565b60006004548b8b8b8b8b8b8b8b8b8b60405160200161068d9b9a99989796959493929190612867565b6040516020818303038152906040528051906020012090509a9950505050505050505050565b6000546001600160a01b031633146106dd5760405162461bcd60e51b815260040161049490612a91565b60405162fac06160e41b81526001600160a01b03821690630fac06109061070a9086908690600401612a02565b600060405180830381600087803b15801561072457600080fd5b505af1158015610738573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b0316331461076b5760405162461bcd60e51b815260040161049490612a91565b6107756000611c4a565b565b6000546001600160a01b031633146107a15760405162461bcd60e51b815260040161049490612a91565b60405133904780156108fc02916000818181858888f1935050505061077557600080fd5b6000546001600160a01b031633146107ef5760405162461bcd60e51b815260040161049490612a91565b604051631949227560e21b81526001600160a01b0383169063652489d49061081b908490600401612a52565b600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b505050505050565b6000546001600160a01b0316331461087b5760405162461bcd60e51b815260040161049490612a91565b6001600160a01b0381166000908152600360209081526040808320308452909152902054806108bc5760405162461bcd60e51b815260040161049490612a65565b6001600160a01b0382166000818152600360209081526040808320308452909152808220919091555163a9059cbb60e01b81523360048201526024810183905263a9059cbb906044015b602060405180830381600087803b15801561092057600080fd5b505af1158015610934573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109589190612732565b505050565b6000546001600160a01b031633146109875760405162461bcd60e51b815260040161049490612a91565b604051631ec019dd60e21b81526001600160a01b038281166004830152831690637b0067749060240161081b565b6000546001600160a01b031633146109df5760405162461bcd60e51b815260040161049490612a91565b600255565b6000546001600160a01b03163314610a0e5760405162461bcd60e51b815260040161049490612a91565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b158015610a5057600080fd5b505afa158015610a64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a88919061276d565b905080610aa75760405162461bcd60e51b815260040161049490612a65565b816001600160a01b031663a9059cbb610ac86000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401610906565b6000546001600160a01b03163314610b255760405162461bcd60e51b815260040161049490612a91565b306000908152600080516020612c678339815191526020526040808220549051339282156108fc02929190818181858888f19350505050610b6557600080fd5b306000908152600080516020612c678339815191526020526040812055565b6000546001600160a01b03163314610bae5760405162461bcd60e51b815260040161049490612a91565b604051634f46384760e11b81526001600160a01b038281166004830152831690639e8c708e90602401600060405180830381600087803b158015610bf157600080fd5b505af1158015610c05573d6000803e3d6000fd5b50506040516370a0823160e01b8152306004820152600092506001600160a01b03841691506370a082319060240160206040518083038186803b158015610c4b57600080fd5b505afa158015610c5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c83919061276d565b905060008111610ca55760405162461bcd60e51b815260040161049490612a65565b816001600160a01b031663a9059cbb610cc66000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401602060405180830381600087803b158015610d0e57600080fd5b505af1158015610d22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d469190612732565b50505050565b6000546001600160a01b03163314610d765760405162461bcd60e51b815260040161049490612a91565b60405163742af72b60e01b8152600481018290526001600160a01b0383169063742af72b9060240161081b565b6000546001600160a01b03163314610dcd5760405162461bcd60e51b815260040161049490612a91565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610e195760405162461bcd60e51b815260040161049490612a91565b60405163d955ec5560e01b81526001600160a01b03828116600483015283169063d955ec559060240161081b565b6000546001600160a01b03163314610e715760405162461bcd60e51b815260040161049490612a91565b60405163f2fde38b60e01b81526001600160a01b03828116600483015283169063f2fde38b9060240161081b565b60006004548b8b8b8b8b8b8b8b8b8b60405160200161068d9b9a999897969594939291906128ee565b4260025482610ed79190612b58565b1015610f1d5760405162461bcd60e51b8152602060048201526015602482015274151c985b9cd858dd1a5bdb881d1a5b5959081bdd5d605a1b6044820152606401610494565b600582604051610f2d919061284b565b9081526040519081900360200190205460ff1615610f865760405162461bcd60e51b815260206004820152601660248201527514da59db985d1d5c9948185b1c9958591e481d5cd95960521b6044820152606401610494565b610f988a8a8a8a8a8a8a8a8a8a611c9a565b610fd95760405162461bcd60e51b81526020600482015260126024820152710a6d2cedcc2e8eae4ca40dad2e6dac2e8c6d60731b6044820152606401610494565b6001600583604051610feb919061284b565b908152604051908190036020019020805491151560ff199092169190911790558315611261576001600160a01b03831661113c57833410156110625760405162461bcd60e51b815260206004820152601060248201526f2737ba1032b737bab3b41032ba3432b960811b6044820152606401610494565b348410156110a257336108fc6110788634612bb1565b6040518115909202916000818181858888f193505050501580156110a0573d6000803e3d6000fd5b505b600060646110b08987612b92565b6110ba9190612b70565b6001600160a01b038a166000908152600080516020612c6783398151915260205260408120805492935083929091906110f4908490612b58565b9091555061110490508186612bb1565b306000908152600080516020612c67833981519152602052604081208054909190611130908490612b58565b90915550611261915050565b6040516323b872dd60e01b8152336004820152306024820152604481018590526001600160a01b038416906323b872dd90606401602060405180830381600087803b15801561118a57600080fd5b505af115801561119e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c29190612732565b50600060646111d18987612b92565b6111db9190612b70565b6001600160a01b038086166000908152600360209081526040808320938e16835292905290812080549293508392909190611217908490612b58565b9091555061122790508186612bb1565b6001600160a01b03851660009081526003602090815260408083203084529091528120805490919061125a908490612b58565b9091555050505b6004548914156113eb57306001600160a01b03168a6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156112ae57600080fd5b505afa1580156112c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e691906121a1565b6001600160a01b031614156113eb57600085516001600160401b0381111561131057611310612c3b565b604051908082528060200260200182016040528015611339578160200160208202803683370190505b50905060005b8651811015611385573382828151811061135b5761135b612c25565b6001600160a01b03909216602092830291909101909101528061137d81612bf4565b91505061133f565b5060405162fac06160e41b81526001600160a01b038c1690630fac0610906113b39089908590600401612a02565b600060405180830381600087803b1580156113cd57600080fd5b505af11580156113e1573d6000803e3d6000fd5b5050505050611439565b896001600160a01b0316336001600160a01b03167fac4e55231c54de48cb8f8d7bee0fe565c27c406c5607758ed20848b2b86dad428789604051611430929190612a30565b60405180910390a35b50505050505050505050565b6000546001600160a01b0316331461146f5760405162461bcd60e51b815260040161049490612a91565b6001600160a01b0381166114d45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610494565b6114dd81611c4a565b50565b6001600160a01b0382166115bd576001600160a01b03821660009081526003602090815260408083203384529091529020548181101561155a5760405162461bcd60e51b8152602060048201526015602482015274416d6f756e74206578636565642062616c616e636560581b6044820152606401610494565b6001600160a01b03831660009081526003602090815260408083203384529091528120805484929061158d908490612bb1565b9091555050604051339083156108fc029084906000818181858888f193505050506115b757600080fd5b506116b9565b6001600160a01b0382166000908152600360209081526040808320338452909152902054806115fe5760405162461bcd60e51b815260040161049490612a65565b6001600160a01b038316600090815260036020908152604080832033845290915281208054849290611631908490612bb1565b909155505060405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb90604401602060405180830381600087803b15801561167e57600080fd5b505af1158015611692573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b69190612732565b50505b604080516001600160a01b03841681526020810183905233917f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb910160405180910390a25050565b42600254846117109190612b58565b10156117565760405162461bcd60e51b8152602060048201526015602482015274151c985b9cd858dd1a5bdb881d1a5b5959081bdd5d605a1b6044820152606401610494565b600584604051611766919061284b565b9081526040519081900360200190205460ff16156117bf5760405162461bcd60e51b815260206004820152601660248201527514da59db985d1d5c9948185b1c9958591e481d5cd95960521b6044820152606401610494565b6117d28c8c8c8c8c8c8c8b8b8b8b611cfe565b6118135760405162461bcd60e51b81526020600482015260126024820152710a6d2cedcc2e8eae4ca40dad2e6dac2e8c6d60731b6044820152606401610494565b6001600585604051611825919061284b565b908152604051908190036020019020805491151560ff1990921691909117905560008715611ab5576001600160a01b038716611975578734101561189e5760405162461bcd60e51b815260206004820152601060248201526f2737ba1032b737bab3b41032ba3432b960811b6044820152606401610494565b348810156118de57336108fc6118b48a34612bb1565b6040518115909202916000818181858888f193505050501580156118dc573d6000803e3d6000fd5b505b60646118ea8c8a612b92565b6118f49190612b70565b6001600160a01b038d166000908152600080516020612c67833981519152602052604081208054929350839290919061192e908490612b58565b9091555061193e90508189612bb1565b306000908152600080516020612c6783398151915260205260408120805490919061196a908490612b58565b90915550611ab59050565b6040516323b872dd60e01b8152336004820152306024820152604481018990526001600160a01b038816906323b872dd90606401602060405180830381600087803b1580156119c357600080fd5b505af11580156119d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fb9190612732565b506064611a088c8a612b92565b611a129190612b70565b90508060036000896001600160a01b03166001600160a01b0316815260200190815260200160002060008e6001600160a01b03166001600160a01b031681526020019081526020016000206000828254611a6c9190612b58565b90915550611a7c90508189612bb1565b6001600160a01b038816600090815260036020908152604080832030845290915281208054909190611aaf908490612b58565b90915550505b600089516001600160401b03811115611ad057611ad0612c3b565b604051908082528060200260200182016040528015611af9578160200160208202803683370190505b50905060005b8a51811015611b455787828281518110611b1b57611b1b612c25565b6001600160a01b039092166020928302919091019091015280611b3d81612bf4565b915050611aff565b5060405162fac06160e41b81526001600160a01b038f1690630fac061090611b73908d908590600401612a02565b600060405180830381600087803b158015611b8d57600080fd5b505af1158015611ba1573d6000803e3d6000fd5b505050831580159150611bb657506002845110155b8015611bcc57506001546001600160a01b031615155b15611bdd57611bdd8e8b8686611d63565b866001600160a01b03168d6001600160a01b03168f6001600160a01b03167f4ea73010f483520738a12822fd2483d8c9eb5751548a9922894538fe879285f68e8e8e8e89604051611c32959493929190612ac6565b60405180910390a45050505050505050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080611caf8c8c8c8c8c8c8c8c8b33610e9f565b90506000611cbc82611f08565b9050611cd06000546001600160a01b031690565b6001600160a01b0316611ce38287611f5b565b6001600160a01b0316149d9c50505050505050505050505050565b600080611d138d8d8d8d8d8d8d8c8c8c610664565b90506000611d2082611f08565b9050611d346000546001600160a01b031690565b6001600160a01b0316611d478289611f5b565b6001600160a01b0316149e9d5050505050505050505050505050565b600083516001600160401b03811115611d7e57611d7e612c3b565b604051908082528060200260200182016040528015611da7578160200160208202803683370190505b509050600084516001600160401b03811115611dc557611dc5612c3b565b604051908082528060200260200182016040528015611dee578160200160208202803683370190505b509050600085516001600160401b03811115611e0c57611e0c612c3b565b604051908082528060200260200182016040528015611e3f57816020015b6060815260200190600190039081611e2a5790505b50905060005b8651811015611ed15787848281518110611e6157611e61612c25565b60200260200101906001600160a01b031690816001600160a01b03168152505084838281518110611e9457611e94612c25565b60200260200101818152505085828281518110611eb357611eb3612c25565b60200260200101819052508080611ec990612bf4565b915050611e45565b50600154604051637f25b82b60e11b81526001600160a01b039091169063fe4b7056906106299086908a9087908790600401612966565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b60008151604114611fae5760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964207369676e6174757265206c656e67746800000000000000006044820152606401610494565b602082810151604080850151606080870151835160008082529681018086528a9052951a928501839052840183905260808401819052919260019060a0016020604051602081039080840390855afa15801561200e573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b803561202e81612c51565b919050565b600082601f83011261204457600080fd5b8135602061205961205483612b35565b612b05565b80838252828201915082860187848660051b890101111561207957600080fd5b60005b858110156120a157813561208f81612c51565b8452928401929084019060010161207c565b5090979650505050505050565b600082601f8301126120bf57600080fd5b813560206120cf61205483612b35565b80838252828201915082860187848660051b89010111156120ef57600080fd5b60005b858110156120a1578135845292840192908401906001016120f2565b600082601f83011261211f57600080fd5b81356001600160401b0381111561213857612138612c3b565b61214b601f8201601f1916602001612b05565b81815284602083860101111561216057600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561218f57600080fd5b813561219a81612c51565b9392505050565b6000602082840312156121b357600080fd5b815161219a81612c51565b600080604083850312156121d157600080fd5b82356121dc81612c51565b915060208301356121ec81612c51565b809150509250929050565b6000806000806000806000806000806000806101808d8f03121561221a57600080fd5b6122238d612023565b9b5061223160208e01612023565b9a5060408d0135995060608d013598506001600160401b0360808e0135111561225957600080fd5b6122698e60808f01358f016120ae565b975060a08d0135965061227e60c08e01612023565b955061228c60e08e01612023565b94506001600160401b036101008e013511156122a757600080fd5b6122b88e6101008f01358f0161210e565b93506101208d013592506001600160401b036101408e013511156122db57600080fd5b6122ec8e6101408f01358f0161210e565b91506101608d013590509295989b509295989b509295989b565b6000806000806000806000806000806101408b8d03121561232657600080fd5b61232f8b612023565b995061233d60208c01612023565b985060408b0135975060608b0135965060808b01356001600160401b038082111561236757600080fd5b6123738e838f016120ae565b975060a08d0135965061238860c08e01612023565b955060e08d013594506101008d01359150808211156123a657600080fd5b506123b38d828e0161210e565b9250506101208b013590509295989b9194979a5092959850565b600080604083850312156123e057600080fd5b82356123eb81612c51565b915060208301356001600160401b0381111561240657600080fd5b6124128582860161210e565b9150509250929050565b6000806040838503121561242f57600080fd5b823561243a81612c51565b946020939093013593505050565b6000806000806000806000806000806101408b8d03121561246857600080fd5b6124718b612023565b995060208b0135985061248660408c01612023565b975060608b0135965060808b0135955060a08b01356001600160401b03808211156124b057600080fd5b6124bc8e838f016120ae565b965060c08d013595506124d160e08e01612023565b94506101008d01359150808211156123a657600080fd5b6000806000806000806000806000806101408b8d03121561250857600080fd5b8a3561251381612c51565b995060208b0135985060408b013561252a81612c51565b975060608b0135965060808b0135955060a08b01356001600160401b0381111561255357600080fd5b61255f8d828e016120ae565b95505060c08b0135935060e08b013561257781612c51565b92506101008b013591506101208b013561259081612c51565b809150509295989b9194979a5092959850565b6000806000606084860312156125b857600080fd5b83356001600160401b03808211156125cf57600080fd5b6125db878388016120ae565b945060208601359150808211156125f157600080fd5b506125fe86828701612033565b925050604084013561260f81612c51565b809150509250925092565b600080600080600060a0868803121561263257600080fd5b85356001600160401b038082111561264957600080fd5b61265589838a016120ae565b965060209150818801358181111561266c57600080fd5b6126788a828b01612033565b965050604088013561268981612c51565b945060608801358181111561269d57600080fd5b8801601f81018a136126ae57600080fd5b80356126bc61205482612b35565b8082825285820191508584018d878560051b87010111156126dc57600080fd5b60005b848110156127165786823511156126f557600080fd5b6127048f89843589010161210e565b845292870192908701906001016126df565b5050809750505050505050608086013590509295509295909350565b60006020828403121561274457600080fd5b8151801515811461219a57600080fd5b60006020828403121561276657600080fd5b5035919050565b60006020828403121561277f57600080fd5b5051919050565b600081518084526020808501945080840160005b838110156127bf5781516001600160a01b03168752958201959082019060010161279a565b509495945050505050565b600081518084526020808501945080840160005b838110156127bf578151875295820195908201906001016127de565b805160009060208084018383156127bf578151875295820195908201906001016127de565b60008151808452612837816020860160208601612bc8565b601f01601f19169290920160200192915050565b6000825161285d818460208701612bc8565b9190910192915050565b8b815260006bffffffffffffffffffffffff19808d60601b166020840152808c60601b1660348401528a60488401528960688401526128a9608884018a6127fa565b888152818860601b166020820152866034820152855191506128d2826054830160208901612bc8565b01605481019390935250506074019a9950505050505050505050565b8b815260006bffffffffffffffffffffffff19808d60601b1660208401528b6034840152808b60601b16605484015289606884015288608884015261293660a88401896127fa565b968752606095861b811660208801526034870194909452505090911b166054820152606801979650505050505050565b6080815260006129796080830187612786565b60208382038185015261298c82886127ca565b915083820360408501526129a082876127ca565b915083820360608501528185518084528284019150828160051b85010183880160005b838110156129f157601f198784030185526129df83835161281f565b948601949250908501906001016129c3565b50909b9a5050505050505050505050565b604081526000612a1560408301856127ca565b8281036020840152612a278185612786565b95945050505050565b604081526000612a4360408301856127ca565b90508260208301529392505050565b60208152600061219a602083018461281f565b6020808252601290820152712737ba3434b733903a37903932b1b7bb32b960711b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b85815260a060208201526000612adf60a08301876127ca565b6040830195909552506001600160a01b0392909216606083015260809091015292915050565b604051601f8201601f191681016001600160401b0381118282101715612b2d57612b2d612c3b565b604052919050565b60006001600160401b03821115612b4e57612b4e612c3b565b5060051b60200190565b60008219821115612b6b57612b6b612c0f565b500190565b600082612b8d57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612bac57612bac612c0f565b500290565b600082821015612bc357612bc3612c0f565b500390565b60005b83811015612be3578181015183820152602001612bcb565b83811115610d465750506000910152565b6000600019821415612c0857612c08612c0f565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146114dd57600080fdfe3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92effa2646970667358221220f179867cd97a180ef4b7a5b56a671acdc262f42245caac5cb5fd7cdbf016365564736f6c634300080700330000000000000000000000000000000000000000000000000000000000000001
Deployed Bytecode
0x60806040526004361061014e5760003560e01c8063b2af127c116100b6578063eafc24971161006f578063eafc2497146103c4578063ef84569d146103e4578063f027c38314610404578063f2fde38b14610417578063f3fef3a314610437578063fb48d7d81461045757600080fd5b8063b2af127c1461030f578063bd4f77ed1461032f578063c832ddbd14610344578063cedc2c8114610364578063e346111914610384578063e864da7f146103a457600080fd5b80638649cc3d116101085780638649cc3d1461023f5780638da5cb5b1461025f5780638fcda9bf146102915780639441bd44146102b1578063a6150f51146102d1578063afbb88a5146102ef57600080fd5b80627fac7f1461015a57806318470bf81461017c5780631bea8006146101af5780636c6060c9146101f5578063715018a614610215578063845360171461022a57600080fd5b3661015557005b600080fd5b34801561016657600080fd5b5061017a61017536600461261a565b61046a565b005b34801561018857600080fd5b5061019c610197366004612306565b610664565b6040519081526020015b60405180910390f35b3480156101bb57600080fd5b5061019c6101ca3660046121be565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561020157600080fd5b5061017a6102103660046125a3565b6106b3565b34801561022157600080fd5b5061017a610741565b34801561023657600080fd5b5061017a610777565b34801561024b57600080fd5b5061017a61025a3660046123cd565b6107c5565b34801561026b57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016101a6565b34801561029d57600080fd5b5061017a6102ac36600461217d565b610851565b3480156102bd57600080fd5b5061017a6102cc3660046121be565b61095d565b3480156102dd57600080fd5b506001546001600160a01b0316610279565b3480156102fb57600080fd5b5061017a61030a366004612754565b6109b5565b34801561031b57600080fd5b5061017a61032a36600461217d565b6109e4565b34801561033b57600080fd5b5061017a610afb565b34801561035057600080fd5b5061017a61035f3660046121be565b610b84565b34801561037057600080fd5b5061017a61037f36600461241c565b610d4c565b34801561039057600080fd5b5061017a61039f36600461217d565b610da3565b3480156103b057600080fd5b5061017a6103bf3660046121be565b610def565b3480156103d057600080fd5b5061017a6103df3660046121be565b610e47565b3480156103f057600080fd5b5061019c6103ff3660046124e8565b610e9f565b61017a610412366004612448565b610ec8565b34801561042357600080fd5b5061017a61043236600461217d565b611445565b34801561044357600080fd5b5061017a61045236600461241c565b6114e0565b61017a6104653660046121f7565b611701565b6000546001600160a01b0316331461049d5760405162461bcd60e51b815260040161049490612a91565b60405180910390fd5b60405162fac06160e41b81526001600160a01b03841690630fac0610906104ca9088908890600401612a02565b600060405180830381600087803b1580156104e457600080fd5b505af11580156104f8573d6000803e3d6000fd5b50505050600085516001600160401b0381111561051757610517612c3b565b604051908082528060200260200182016040528015610540578160200160208202803683370190505b509050600086516001600160401b0381111561055e5761055e612c3b565b604051908082528060200260200182016040528015610587578160200160208202803683370190505b50905060005b87518110156105f257838382815181106105a9576105a9612c25565b602002602001018181525050858282815181106105c8576105c8612c25565b6001600160a01b0390921660209283029190910190910152806105ea81612bf4565b91505061058d565b50600154604051637f25b82b60e11b81526001600160a01b039091169063fe4b7056906106299084908b9087908a90600401612966565b600060405180830381600087803b15801561064357600080fd5b505af1158015610657573d6000803e3d6000fd5b5050505050505050505050565b60006004548b8b8b8b8b8b8b8b8b8b60405160200161068d9b9a99989796959493929190612867565b6040516020818303038152906040528051906020012090509a9950505050505050505050565b6000546001600160a01b031633146106dd5760405162461bcd60e51b815260040161049490612a91565b60405162fac06160e41b81526001600160a01b03821690630fac06109061070a9086908690600401612a02565b600060405180830381600087803b15801561072457600080fd5b505af1158015610738573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b0316331461076b5760405162461bcd60e51b815260040161049490612a91565b6107756000611c4a565b565b6000546001600160a01b031633146107a15760405162461bcd60e51b815260040161049490612a91565b60405133904780156108fc02916000818181858888f1935050505061077557600080fd5b6000546001600160a01b031633146107ef5760405162461bcd60e51b815260040161049490612a91565b604051631949227560e21b81526001600160a01b0383169063652489d49061081b908490600401612a52565b600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b505050505050565b6000546001600160a01b0316331461087b5760405162461bcd60e51b815260040161049490612a91565b6001600160a01b0381166000908152600360209081526040808320308452909152902054806108bc5760405162461bcd60e51b815260040161049490612a65565b6001600160a01b0382166000818152600360209081526040808320308452909152808220919091555163a9059cbb60e01b81523360048201526024810183905263a9059cbb906044015b602060405180830381600087803b15801561092057600080fd5b505af1158015610934573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109589190612732565b505050565b6000546001600160a01b031633146109875760405162461bcd60e51b815260040161049490612a91565b604051631ec019dd60e21b81526001600160a01b038281166004830152831690637b0067749060240161081b565b6000546001600160a01b031633146109df5760405162461bcd60e51b815260040161049490612a91565b600255565b6000546001600160a01b03163314610a0e5760405162461bcd60e51b815260040161049490612a91565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b158015610a5057600080fd5b505afa158015610a64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a88919061276d565b905080610aa75760405162461bcd60e51b815260040161049490612a65565b816001600160a01b031663a9059cbb610ac86000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401610906565b6000546001600160a01b03163314610b255760405162461bcd60e51b815260040161049490612a91565b306000908152600080516020612c678339815191526020526040808220549051339282156108fc02929190818181858888f19350505050610b6557600080fd5b306000908152600080516020612c678339815191526020526040812055565b6000546001600160a01b03163314610bae5760405162461bcd60e51b815260040161049490612a91565b604051634f46384760e11b81526001600160a01b038281166004830152831690639e8c708e90602401600060405180830381600087803b158015610bf157600080fd5b505af1158015610c05573d6000803e3d6000fd5b50506040516370a0823160e01b8152306004820152600092506001600160a01b03841691506370a082319060240160206040518083038186803b158015610c4b57600080fd5b505afa158015610c5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c83919061276d565b905060008111610ca55760405162461bcd60e51b815260040161049490612a65565b816001600160a01b031663a9059cbb610cc66000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401602060405180830381600087803b158015610d0e57600080fd5b505af1158015610d22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d469190612732565b50505050565b6000546001600160a01b03163314610d765760405162461bcd60e51b815260040161049490612a91565b60405163742af72b60e01b8152600481018290526001600160a01b0383169063742af72b9060240161081b565b6000546001600160a01b03163314610dcd5760405162461bcd60e51b815260040161049490612a91565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610e195760405162461bcd60e51b815260040161049490612a91565b60405163d955ec5560e01b81526001600160a01b03828116600483015283169063d955ec559060240161081b565b6000546001600160a01b03163314610e715760405162461bcd60e51b815260040161049490612a91565b60405163f2fde38b60e01b81526001600160a01b03828116600483015283169063f2fde38b9060240161081b565b60006004548b8b8b8b8b8b8b8b8b8b60405160200161068d9b9a999897969594939291906128ee565b4260025482610ed79190612b58565b1015610f1d5760405162461bcd60e51b8152602060048201526015602482015274151c985b9cd858dd1a5bdb881d1a5b5959081bdd5d605a1b6044820152606401610494565b600582604051610f2d919061284b565b9081526040519081900360200190205460ff1615610f865760405162461bcd60e51b815260206004820152601660248201527514da59db985d1d5c9948185b1c9958591e481d5cd95960521b6044820152606401610494565b610f988a8a8a8a8a8a8a8a8a8a611c9a565b610fd95760405162461bcd60e51b81526020600482015260126024820152710a6d2cedcc2e8eae4ca40dad2e6dac2e8c6d60731b6044820152606401610494565b6001600583604051610feb919061284b565b908152604051908190036020019020805491151560ff199092169190911790558315611261576001600160a01b03831661113c57833410156110625760405162461bcd60e51b815260206004820152601060248201526f2737ba1032b737bab3b41032ba3432b960811b6044820152606401610494565b348410156110a257336108fc6110788634612bb1565b6040518115909202916000818181858888f193505050501580156110a0573d6000803e3d6000fd5b505b600060646110b08987612b92565b6110ba9190612b70565b6001600160a01b038a166000908152600080516020612c6783398151915260205260408120805492935083929091906110f4908490612b58565b9091555061110490508186612bb1565b306000908152600080516020612c67833981519152602052604081208054909190611130908490612b58565b90915550611261915050565b6040516323b872dd60e01b8152336004820152306024820152604481018590526001600160a01b038416906323b872dd90606401602060405180830381600087803b15801561118a57600080fd5b505af115801561119e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c29190612732565b50600060646111d18987612b92565b6111db9190612b70565b6001600160a01b038086166000908152600360209081526040808320938e16835292905290812080549293508392909190611217908490612b58565b9091555061122790508186612bb1565b6001600160a01b03851660009081526003602090815260408083203084529091528120805490919061125a908490612b58565b9091555050505b6004548914156113eb57306001600160a01b03168a6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156112ae57600080fd5b505afa1580156112c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e691906121a1565b6001600160a01b031614156113eb57600085516001600160401b0381111561131057611310612c3b565b604051908082528060200260200182016040528015611339578160200160208202803683370190505b50905060005b8651811015611385573382828151811061135b5761135b612c25565b6001600160a01b03909216602092830291909101909101528061137d81612bf4565b91505061133f565b5060405162fac06160e41b81526001600160a01b038c1690630fac0610906113b39089908590600401612a02565b600060405180830381600087803b1580156113cd57600080fd5b505af11580156113e1573d6000803e3d6000fd5b5050505050611439565b896001600160a01b0316336001600160a01b03167fac4e55231c54de48cb8f8d7bee0fe565c27c406c5607758ed20848b2b86dad428789604051611430929190612a30565b60405180910390a35b50505050505050505050565b6000546001600160a01b0316331461146f5760405162461bcd60e51b815260040161049490612a91565b6001600160a01b0381166114d45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610494565b6114dd81611c4a565b50565b6001600160a01b0382166115bd576001600160a01b03821660009081526003602090815260408083203384529091529020548181101561155a5760405162461bcd60e51b8152602060048201526015602482015274416d6f756e74206578636565642062616c616e636560581b6044820152606401610494565b6001600160a01b03831660009081526003602090815260408083203384529091528120805484929061158d908490612bb1565b9091555050604051339083156108fc029084906000818181858888f193505050506115b757600080fd5b506116b9565b6001600160a01b0382166000908152600360209081526040808320338452909152902054806115fe5760405162461bcd60e51b815260040161049490612a65565b6001600160a01b038316600090815260036020908152604080832033845290915281208054849290611631908490612bb1565b909155505060405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb90604401602060405180830381600087803b15801561167e57600080fd5b505af1158015611692573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b69190612732565b50505b604080516001600160a01b03841681526020810183905233917f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb910160405180910390a25050565b42600254846117109190612b58565b10156117565760405162461bcd60e51b8152602060048201526015602482015274151c985b9cd858dd1a5bdb881d1a5b5959081bdd5d605a1b6044820152606401610494565b600584604051611766919061284b565b9081526040519081900360200190205460ff16156117bf5760405162461bcd60e51b815260206004820152601660248201527514da59db985d1d5c9948185b1c9958591e481d5cd95960521b6044820152606401610494565b6117d28c8c8c8c8c8c8c8b8b8b8b611cfe565b6118135760405162461bcd60e51b81526020600482015260126024820152710a6d2cedcc2e8eae4ca40dad2e6dac2e8c6d60731b6044820152606401610494565b6001600585604051611825919061284b565b908152604051908190036020019020805491151560ff1990921691909117905560008715611ab5576001600160a01b038716611975578734101561189e5760405162461bcd60e51b815260206004820152601060248201526f2737ba1032b737bab3b41032ba3432b960811b6044820152606401610494565b348810156118de57336108fc6118b48a34612bb1565b6040518115909202916000818181858888f193505050501580156118dc573d6000803e3d6000fd5b505b60646118ea8c8a612b92565b6118f49190612b70565b6001600160a01b038d166000908152600080516020612c67833981519152602052604081208054929350839290919061192e908490612b58565b9091555061193e90508189612bb1565b306000908152600080516020612c6783398151915260205260408120805490919061196a908490612b58565b90915550611ab59050565b6040516323b872dd60e01b8152336004820152306024820152604481018990526001600160a01b038816906323b872dd90606401602060405180830381600087803b1580156119c357600080fd5b505af11580156119d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fb9190612732565b506064611a088c8a612b92565b611a129190612b70565b90508060036000896001600160a01b03166001600160a01b0316815260200190815260200160002060008e6001600160a01b03166001600160a01b031681526020019081526020016000206000828254611a6c9190612b58565b90915550611a7c90508189612bb1565b6001600160a01b038816600090815260036020908152604080832030845290915281208054909190611aaf908490612b58565b90915550505b600089516001600160401b03811115611ad057611ad0612c3b565b604051908082528060200260200182016040528015611af9578160200160208202803683370190505b50905060005b8a51811015611b455787828281518110611b1b57611b1b612c25565b6001600160a01b039092166020928302919091019091015280611b3d81612bf4565b915050611aff565b5060405162fac06160e41b81526001600160a01b038f1690630fac061090611b73908d908590600401612a02565b600060405180830381600087803b158015611b8d57600080fd5b505af1158015611ba1573d6000803e3d6000fd5b505050831580159150611bb657506002845110155b8015611bcc57506001546001600160a01b031615155b15611bdd57611bdd8e8b8686611d63565b866001600160a01b03168d6001600160a01b03168f6001600160a01b03167f4ea73010f483520738a12822fd2483d8c9eb5751548a9922894538fe879285f68e8e8e8e89604051611c32959493929190612ac6565b60405180910390a45050505050505050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080611caf8c8c8c8c8c8c8c8c8b33610e9f565b90506000611cbc82611f08565b9050611cd06000546001600160a01b031690565b6001600160a01b0316611ce38287611f5b565b6001600160a01b0316149d9c50505050505050505050505050565b600080611d138d8d8d8d8d8d8d8c8c8c610664565b90506000611d2082611f08565b9050611d346000546001600160a01b031690565b6001600160a01b0316611d478289611f5b565b6001600160a01b0316149e9d5050505050505050505050505050565b600083516001600160401b03811115611d7e57611d7e612c3b565b604051908082528060200260200182016040528015611da7578160200160208202803683370190505b509050600084516001600160401b03811115611dc557611dc5612c3b565b604051908082528060200260200182016040528015611dee578160200160208202803683370190505b509050600085516001600160401b03811115611e0c57611e0c612c3b565b604051908082528060200260200182016040528015611e3f57816020015b6060815260200190600190039081611e2a5790505b50905060005b8651811015611ed15787848281518110611e6157611e61612c25565b60200260200101906001600160a01b031690816001600160a01b03168152505084838281518110611e9457611e94612c25565b60200260200101818152505085828281518110611eb357611eb3612c25565b60200260200101819052508080611ec990612bf4565b915050611e45565b50600154604051637f25b82b60e11b81526001600160a01b039091169063fe4b7056906106299086908a9087908790600401612966565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b60008151604114611fae5760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964207369676e6174757265206c656e67746800000000000000006044820152606401610494565b602082810151604080850151606080870151835160008082529681018086528a9052951a928501839052840183905260808401819052919260019060a0016020604051602081039080840390855afa15801561200e573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b803561202e81612c51565b919050565b600082601f83011261204457600080fd5b8135602061205961205483612b35565b612b05565b80838252828201915082860187848660051b890101111561207957600080fd5b60005b858110156120a157813561208f81612c51565b8452928401929084019060010161207c565b5090979650505050505050565b600082601f8301126120bf57600080fd5b813560206120cf61205483612b35565b80838252828201915082860187848660051b89010111156120ef57600080fd5b60005b858110156120a1578135845292840192908401906001016120f2565b600082601f83011261211f57600080fd5b81356001600160401b0381111561213857612138612c3b565b61214b601f8201601f1916602001612b05565b81815284602083860101111561216057600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561218f57600080fd5b813561219a81612c51565b9392505050565b6000602082840312156121b357600080fd5b815161219a81612c51565b600080604083850312156121d157600080fd5b82356121dc81612c51565b915060208301356121ec81612c51565b809150509250929050565b6000806000806000806000806000806000806101808d8f03121561221a57600080fd5b6122238d612023565b9b5061223160208e01612023565b9a5060408d0135995060608d013598506001600160401b0360808e0135111561225957600080fd5b6122698e60808f01358f016120ae565b975060a08d0135965061227e60c08e01612023565b955061228c60e08e01612023565b94506001600160401b036101008e013511156122a757600080fd5b6122b88e6101008f01358f0161210e565b93506101208d013592506001600160401b036101408e013511156122db57600080fd5b6122ec8e6101408f01358f0161210e565b91506101608d013590509295989b509295989b509295989b565b6000806000806000806000806000806101408b8d03121561232657600080fd5b61232f8b612023565b995061233d60208c01612023565b985060408b0135975060608b0135965060808b01356001600160401b038082111561236757600080fd5b6123738e838f016120ae565b975060a08d0135965061238860c08e01612023565b955060e08d013594506101008d01359150808211156123a657600080fd5b506123b38d828e0161210e565b9250506101208b013590509295989b9194979a5092959850565b600080604083850312156123e057600080fd5b82356123eb81612c51565b915060208301356001600160401b0381111561240657600080fd5b6124128582860161210e565b9150509250929050565b6000806040838503121561242f57600080fd5b823561243a81612c51565b946020939093013593505050565b6000806000806000806000806000806101408b8d03121561246857600080fd5b6124718b612023565b995060208b0135985061248660408c01612023565b975060608b0135965060808b0135955060a08b01356001600160401b03808211156124b057600080fd5b6124bc8e838f016120ae565b965060c08d013595506124d160e08e01612023565b94506101008d01359150808211156123a657600080fd5b6000806000806000806000806000806101408b8d03121561250857600080fd5b8a3561251381612c51565b995060208b0135985060408b013561252a81612c51565b975060608b0135965060808b0135955060a08b01356001600160401b0381111561255357600080fd5b61255f8d828e016120ae565b95505060c08b0135935060e08b013561257781612c51565b92506101008b013591506101208b013561259081612c51565b809150509295989b9194979a5092959850565b6000806000606084860312156125b857600080fd5b83356001600160401b03808211156125cf57600080fd5b6125db878388016120ae565b945060208601359150808211156125f157600080fd5b506125fe86828701612033565b925050604084013561260f81612c51565b809150509250925092565b600080600080600060a0868803121561263257600080fd5b85356001600160401b038082111561264957600080fd5b61265589838a016120ae565b965060209150818801358181111561266c57600080fd5b6126788a828b01612033565b965050604088013561268981612c51565b945060608801358181111561269d57600080fd5b8801601f81018a136126ae57600080fd5b80356126bc61205482612b35565b8082825285820191508584018d878560051b87010111156126dc57600080fd5b60005b848110156127165786823511156126f557600080fd5b6127048f89843589010161210e565b845292870192908701906001016126df565b5050809750505050505050608086013590509295509295909350565b60006020828403121561274457600080fd5b8151801515811461219a57600080fd5b60006020828403121561276657600080fd5b5035919050565b60006020828403121561277f57600080fd5b5051919050565b600081518084526020808501945080840160005b838110156127bf5781516001600160a01b03168752958201959082019060010161279a565b509495945050505050565b600081518084526020808501945080840160005b838110156127bf578151875295820195908201906001016127de565b805160009060208084018383156127bf578151875295820195908201906001016127de565b60008151808452612837816020860160208601612bc8565b601f01601f19169290920160200192915050565b6000825161285d818460208701612bc8565b9190910192915050565b8b815260006bffffffffffffffffffffffff19808d60601b166020840152808c60601b1660348401528a60488401528960688401526128a9608884018a6127fa565b888152818860601b166020820152866034820152855191506128d2826054830160208901612bc8565b01605481019390935250506074019a9950505050505050505050565b8b815260006bffffffffffffffffffffffff19808d60601b1660208401528b6034840152808b60601b16605484015289606884015288608884015261293660a88401896127fa565b968752606095861b811660208801526034870194909452505090911b166054820152606801979650505050505050565b6080815260006129796080830187612786565b60208382038185015261298c82886127ca565b915083820360408501526129a082876127ca565b915083820360608501528185518084528284019150828160051b85010183880160005b838110156129f157601f198784030185526129df83835161281f565b948601949250908501906001016129c3565b50909b9a5050505050505050505050565b604081526000612a1560408301856127ca565b8281036020840152612a278185612786565b95945050505050565b604081526000612a4360408301856127ca565b90508260208301529392505050565b60208152600061219a602083018461281f565b6020808252601290820152712737ba3434b733903a37903932b1b7bb32b960711b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b85815260a060208201526000612adf60a08301876127ca565b6040830195909552506001600160a01b0392909216606083015260809091015292915050565b604051601f8201601f191681016001600160401b0381118282101715612b2d57612b2d612c3b565b604052919050565b60006001600160401b03821115612b4e57612b4e612c3b565b5060051b60200190565b60008219821115612b6b57612b6b612c0f565b500190565b600082612b8d57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612bac57612bac612c0f565b500290565b600082821015612bc357612bc3612c0f565b500390565b60005b83811015612be3578181015183820152602001612bcb565b83811115610d465750506000910152565b6000600019821415612c0857612c08612c0f565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146114dd57600080fdfe3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92effa2646970667358221220f179867cd97a180ef4b7a5b56a671acdc262f42245caac5cb5fd7cdbf016365564736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000001
-----Decoded View---------------
Arg [0] : _pnetworkId (uint256): 1
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000001
Deployed Bytecode Sourcemap
342:16503:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14685:789;;;;;;;;;;-1:-1:-1;14685:789:4;;;;;:::i;:::-;;:::i;:::-;;2150:882;;;;;;;;;;-1:-1:-1;2150:882:4;;;;;:::i;:::-;;:::i;:::-;;;19816:25:10;;;19804:2;19789:18;2150:882:4;;;;;;;;1856:191;;;;;;;;;;-1:-1:-1;1856:191:4;;;;;:::i;:::-;-1:-1:-1;;;;;1999:30:4;;;1968:7;1999:30;;;:15;:30;;;;;;;;:40;;;;;;;;;;;;;1856:191;14397:282;;;;;;;;;;-1:-1:-1;14397:282:4;;;;;:::i;:::-;;:::i;1605:92:5:-;;;;;;;;;;;;;:::i;16162:124:4:-;;;;;;;;;;;;;:::i;13669:190::-;;;;;;;;;;-1:-1:-1;13669:190:4;;;;;:::i;:::-;;:::i;973:85:5:-;;;;;;;;;;-1:-1:-1;1019:7:5;1045:6;-1:-1:-1;;;;;1045:6:5;973:85;;;-1:-1:-1;;;;;16732:32:10;;;16714:51;;16702:2;16687:18;973:85:5;16568:203:10;16518:325:4;;;;;;;;;;-1:-1:-1;16518:325:4;;;;;:::i;:::-;;:::i;15480:184::-;;;;;;;;;;-1:-1:-1;15480:184:4;;;;;:::i;:::-;;:::i;1750:100::-;;;;;;;;;;-1:-1:-1;1835:7:4;;-1:-1:-1;;;;;1835:7:4;1750:100;;16004:117;;;;;;;;;;-1:-1:-1;16004:117:4;;;;;:::i;:::-;;:::i;15708:290::-;;;;;;;;;;-1:-1:-1;15708:290:4;;;;;:::i;:::-;;:::i;16292:220::-;;;;;;;;;;;;;:::i;13865:330::-;;;;;;;;;;-1:-1:-1;13865:330:4;;;;;:::i;:::-;;:::i;13481:182::-;;;;;;;;;;-1:-1:-1;13481:182:4;;;;;:::i;:::-;;:::i;1600:116::-;;;;;;;;;;-1:-1:-1;1600:116:4;;;;;:::i;:::-;;:::i;13276:199::-;;;;;;;;;;-1:-1:-1;13276:199:4;;;;;:::i;:::-;;:::i;14201:190::-;;;;;;;;;;-1:-1:-1;14201:190:4;;;;;:::i;:::-;;:::i;4008:899::-;;;;;;;;;;-1:-1:-1;4008:899:4;;;;;:::i;:::-;;:::i;9638:2860::-;;;;;;:::i;:::-;;:::i;1846:189:5:-;;;;;;;;;;-1:-1:-1;1846:189:5;;;;;:::i;:::-;;:::i;12504:729:4:-;;;;;;;;;;-1:-1:-1;12504:729:4;;;;;:::i;:::-;;:::i;6592:3040::-;;;;;;:::i;:::-;;:::i;14685:789::-;1019:7:5;1045:6;-1:-1:-1;;;;;1045:6:5;665:10:8;1185:23:5;1177:68;;;;-1:-1:-1;;;1177:68:5;;;;;;;:::i;:::-;;;;;;;;;14927:107:4::1;::::0;-1:-1:-1;;;14927:107:4;;-1:-1:-1;;;;;14927:55:4;::::1;::::0;::::1;::::0;:107:::1;::::0;14996:4;;15014:10;;14927:107:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15044:25;15086:4;:11;-1:-1:-1::0;;;;;15072:26:4::1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;15072:26:4::1;;15044:54;;15108:34;15159:4;:11;-1:-1:-1::0;;;;;15145:26:4::1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;15145:26:4::1;;15108:63;;15186:9;15181:142;15205:4;:11;15201:1;:15;15181:142;;;15251:8;15237;15246:1;15237:11;;;;;;;;:::i;:::-;;;;;;:22;;;::::0;::::1;15296:16;15273:17;15291:1;15273:20;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15273:39:4;;::::1;:20;::::0;;::::1;::::0;;;;;;;:39;15218:3;::::1;::::0;::::1;:::i;:::-;;;;15181:142;;;-1:-1:-1::0;15332:7:4::1;::::0;:135:::1;::::0;-1:-1:-1;;;15332:135:4;;-1:-1:-1;;;;;15332:7:4;;::::1;::::0;:27:::1;::::0;:135:::1;::::0;15373:17;;15404:4;;15422:8;;15444:13;;15332:135:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14917:557;;14685:789:::0;;;;;:::o;2150:882::-;2528:7;2631:10;;2663:23;2708:14;2744:20;2786:9;2817;2848:6;2876:20;2918:10;2950:13;2985:8;2593:418;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2566:459;;;;;;2547:478;;2150:882;;;;;;;;;;;;:::o;14397:282::-;1019:7:5;1045:6;-1:-1:-1;;;;;1045:6:5;665:10:8;1185:23:5;1177:68;;;;-1:-1:-1;;;1177:68:5;;;;;;;:::i;:::-;14565:107:4::1;::::0;-1:-1:-1;;;14565:107:4;;-1:-1:-1;;;;;14565:55:4;::::1;::::0;::::1;::::0;:107:::1;::::0;14634:4;;14652:10;;14565:107:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14397:282:::0;;;:::o;1605:92:5:-;1019:7;1045:6;-1:-1:-1;;;;;1045:6:5;665:10:8;1185:23:5;1177:68;;;;-1:-1:-1;;;1177:68:5;;;;;;;:::i;:::-;1669:21:::1;1687:1;1669:9;:21::i;:::-;1605:92::o:0;16162:124:4:-;1019:7:5;1045:6;-1:-1:-1;;;;;1045:6:5;665:10:8;1185:23:5;1177:68;;;;-1:-1:-1;;;1177:68:5;;;;;;;:::i;:::-;16231:47:4::1;::::0;16239:10:::1;::::0;16256:21:::1;16231:47:::0;::::1;;;::::0;::::1;::::0;;;16256:21;16239:10;16231:47;::::1;;;;;;16223:56;;;::::0;::::1;13669:190:::0;1019:7:5;1045:6;-1:-1:-1;;;;;1045:6:5;665:10:8;1185:23:5;1177:68;;;;-1:-1:-1;;;1177:68:5;;;;;;;:::i;:::-;13793:59:4::1;::::0;-1:-1:-1;;;13793:59:4;;-1:-1:-1;;;;;13793:47:4;::::1;::::0;::::1;::::0;:59:::1;::::0;13841:10;;13793:59:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13669:190:::0;;:::o;16518:325::-;1019:7:5;1045:6;-1:-1:-1;;;;;1045:6:5;665:10:8;1185:23:5;1177:68;;;;-1:-1:-1;;;1177:68:5;;;;;;;:::i;:::-;-1:-1:-1;;;;;16618:30:4;::::1;16600:15;16618:30:::0;;;:15:::1;:30;::::0;;;;;;;16657:4:::1;16618:45:::0;;;;;;;;16681:12;16673:43:::1;;;;-1:-1:-1::0;;;16673:43:4::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16726:30:4;::::1;16774:1;16726:30:::0;;;:15:::1;:30;::::0;;;;;;;16765:4:::1;16726:45:::0;;;;;;;;:49;;;;16785:51;-1:-1:-1;;;16785:51:4;;16816:10:::1;16785:51;::::0;::::1;17330::10::0;17397:18;;;17390:34;;;16785:30:4::1;::::0;17303:18:10;;16785:51:4::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16590:253;16518:325:::0;:::o;15480:184::-;1019:7:5;1045:6;-1:-1:-1;;;;;1045:6:5;665:10:8;1185:23:5;1177:68;;;;-1:-1:-1;;;1177:68:5;;;;;;;:::i;:::-;15598:59:4::1;::::0;-1:-1:-1;;;15598:59:4;;-1:-1:-1;;;;;16732:32:10;;;15598:59:4::1;::::0;::::1;16714:51:10::0;15598:48:4;::::1;::::0;::::1;::::0;16687:18:10;;15598:59:4::1;16568:203:10::0;16004:117:4;1019:7:5;1045:6;-1:-1:-1;;;;;1045:6:5;665:10:8;1185:23:5;1177:68;;;;-1:-1:-1;;;1177:68:5;;;;;;;:::i;:::-;16083:18:4::1;:31:::0;16004:117::o;15708:290::-;1019:7:5;1045:6;-1:-1:-1;;;;;1045:6:5;665:10:8;1185:23:5;1177:68;;;;-1:-1:-1;;;1177:68:5;;;;;;;:::i;:::-;15799:38:4::1;::::0;-1:-1:-1;;;15799:38:4;;15831:4:::1;15799:38;::::0;::::1;16714:51:10::0;15785:11:4::1;::::0;-1:-1:-1;;;;;15799:23:4;::::1;::::0;::::1;::::0;16687:18:10;;15799:38:4::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15785:52:::0;-1:-1:-1;15855:8:4;15847:39:::1;;;;-1:-1:-1::0;;;15847:39:4::1;;;;;;;:::i;:::-;15962:5;-1:-1:-1::0;;;;;15955:22:4::1;;15978:7;1019::5::0;1045:6;-1:-1:-1;;;;;1045:6:5;;973:85;15978:7:4::1;15955:36;::::0;-1:-1:-1;;;;;;15955:36:4::1;::::0;;;;;;-1:-1:-1;;;;;17348:32:10;;;15955:36:4::1;::::0;::::1;17330:51:10::0;17397:18;;;17390:34;;;17303:18;;15955:36:4::1;17156:274:10::0;16292:220:4;1019:7:5;1045:6;-1:-1:-1;;;;;1045:6:5;665:10:8;1185:23:5;1177:68;;;;-1:-1:-1;;;1177:68:5;;;;;;;:::i;:::-;16432:4:4::1;16396:27;:42:::0;;;-1:-1:-1;;;;;;;;;;;16396:27:4::1;:42:::0;:27;:42;;;;16371:68;;16379:10:::1;::::0;16371:68;::::1;;;::::0;16396:42;16371:68;;16396:27;16371:68;16396:42;16379:10;16371:68;::::1;;;;;;16350:99;;;::::0;::::1;;16495:4;16504:1;16459:42:::0;;;-1:-1:-1;;;;;;;;;;;16459:27:4::1;:42:::0;:27;:42;;:46;16292:220::o;13865:330::-;1019:7:5;1045:6;-1:-1:-1;;;;;1045:6:5;665:10:8;1185:23:5;1177:68;;;;-1:-1:-1;;;1177:68:5;;;;;;;:::i;:::-;13978:54:4::1;::::0;-1:-1:-1;;;13978:54:4;;-1:-1:-1;;;;;16732:32:10;;;13978:54:4::1;::::0;::::1;16714:51:10::0;13978:47:4;::::1;::::0;::::1;::::0;16687:18:10;;13978:54:4::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;14056:38:4::1;::::0;-1:-1:-1;;;14056:38:4;;14088:4:::1;14056:38;::::0;::::1;16714:51:10::0;14042:11:4::1;::::0;-1:-1:-1;;;;;;14056:23:4;::::1;::::0;-1:-1:-1;14056:23:4::1;::::0;16687:18:10;;14056:38:4::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14042:52;;14118:1;14112:3;:7;14104:38;;;;-1:-1:-1::0;;;14104:38:4::1;;;;;;;:::i;:::-;14159:5;-1:-1:-1::0;;;;;14152:22:4::1;;14175:7;1019::5::0;1045:6;-1:-1:-1;;;;;1045:6:5;;973:85;14175:7:4::1;14152:36;::::0;-1:-1:-1;;;;;;14152:36:4::1;::::0;;;;;;-1:-1:-1;;;;;17348:32:10;;;14152:36:4::1;::::0;::::1;17330:51:10::0;17397:18;;;17390:34;;;17303:18;;14152:36:4::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13968:227;13865:330:::0;;:::o;13481:182::-;1019:7:5;1045:6;-1:-1:-1;;;;;1045:6:5;665:10:8;1185:23:5;1177:68;;;;-1:-1:-1;;;1177:68:5;;;;;;;:::i;:::-;13598:58:4::1;::::0;-1:-1:-1;;;13598:58:4;;::::1;::::0;::::1;19816:25:10::0;;;-1:-1:-1;;;;;13598:49:4;::::1;::::0;::::1;::::0;19789:18:10;;13598:58:4::1;19670:177:10::0;1600:116:4;1019:7:5;1045:6;-1:-1:-1;;;;;1045:6:5;665:10:8;1185:23:5;1177:68;;;;-1:-1:-1;;;1177:68:5;;;;;;;:::i;:::-;1685:7:4::1;:24:::0;;-1:-1:-1;;;;;;1685:24:4::1;-1:-1:-1::0;;;;;1685:24:4;;;::::1;::::0;;;::::1;::::0;;1600:116::o;13276:199::-;1019:7:5;1045:6;-1:-1:-1;;;;;1045:6:5;665:10:8;1185:23:5;1177:68;;;;-1:-1:-1;;;1177:68:5;;;;;;;:::i;:::-;13402:66:4::1;::::0;-1:-1:-1;;;13402:66:4;;-1:-1:-1;;;;;16732:32:10;;;13402:66:4::1;::::0;::::1;16714:51:10::0;13402:53:4;::::1;::::0;::::1;::::0;16687:18:10;;13402:66:4::1;16568:203:10::0;14201:190:4;1019:7:5;1045:6;-1:-1:-1;;;;;1045:6:5;665:10:8;1185:23:5;1177:68;;;;-1:-1:-1;;;1177:68:5;;;;;;;:::i;:::-;14322:62:4::1;::::0;-1:-1:-1;;;14322:62:4;;-1:-1:-1;;;;;16732:32:10;;;14322:62:4::1;::::0;::::1;16714:51:10::0;14322:52:4;::::1;::::0;::::1;::::0;16687:18:10;;14322:62:4::1;16568:203:10::0;4008:899:4;4396:7;4499:10;;4531:20;4573:14;4609;4645:20;4687:9;4718;4749:6;4777:20;4819:10;4851:17;4461:425;;;;;;;;;;;;;;;;;;:::i;9638:2860::-;10079:15;10057:18;;10044:10;:31;;;;:::i;:::-;:50;;10023:118;;;;-1:-1:-1;;;10023:118:4;;23543:2:10;10023:118:4;;;23525:21:10;23582:2;23562:18;;;23555:30;-1:-1:-1;;;23601:18:10;;;23594:51;23662:18;;10023:118:4;23341:345:10;10023:118:4;10160:16;10177:10;10160:28;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;10159:29;10151:64;;;;-1:-1:-1;;;10151:64:4;;21781:2:10;10151:64:4;;;21763:21:10;21820:2;21800:18;;;21793:30;-1:-1:-1;;;21839:18:10;;;21832:52;21901:18;;10151:64:4;21579:346:10;10151:64:4;10246:353;10288:20;10326:14;10358;10390:20;10428:9;10455;10482:16;10516:13;10547:10;10575;10246:24;:353::i;:::-;10225:418;;;;-1:-1:-1;;;10225:418:4;;22482:2:10;10225:418:4;;;22464:21:10;22521:2;22501:18;;;22494:30;-1:-1:-1;;;22540:18:10;;;22533:48;22598:18;;10225:418:4;22280:342:10;10225:418:4;10684:4;10653:16;10670:10;10653:28;;;;;;:::i;:::-;;;;;;;;;;;;;;:35;;;;;-1:-1:-1;;10653:35:4;;;;;;;;;10702:21;;10698:1149;;-1:-1:-1;;;;;10743:27:4;;10739:1098;;10811:16;10798:9;:29;;10790:58;;;;-1:-1:-1;;;10790:58:4;;21029:2:10;10790:58:4;;;21011:21:10;21068:2;21048:18;;;21041:30;-1:-1:-1;;;21087:18:10;;;21080:46;21143:18;;10790:58:4;20827:340:10;10790:58:4;10889:9;10870:16;:28;10866:133;;;10930:10;10922:58;10951:28;10963:16;10951:9;:28;:::i;:::-;10922:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10866:133;11016:17;11100:3;11037:39;11056:20;11037:16;:39;:::i;:::-;11036:67;;;;:::i;:::-;-1:-1:-1;;;;;11121:43:4;;:27;:43;;;-1:-1:-1;;;;;;;;;;;11121:27:4;:43;:27;:43;;:56;;11016:87;;-1:-1:-1;11016:87:4;;11121:43;;:27;:56;;11016:87;;11121:56;:::i;:::-;;;;-1:-1:-1;11280:28:4;;-1:-1:-1;11299:9:4;11280:16;:28;:::i;:::-;11252:4;11195:27;:80;;;-1:-1:-1;;;;;;;;;;;11195:27:4;:80;:27;:80;;:114;;:80;;:27;:114;;;;;:::i;:::-;;;;-1:-1:-1;10739:1098:4;;-1:-1:-1;;10739:1098:4;;11348:157;;-1:-1:-1;;;11348:157:4;;11404:10;11348:157;;;17016:34:10;11444:4:4;17066:18:10;;;17059:43;17118:18;;;17111:34;;;-1:-1:-1;;;;;11348:34:4;;;;;16951:18:10;;11348:157:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11523:17:4;11607:3;11544:39;11563:20;11544:16;:39;:::i;:::-;11543:67;;;;:::i;:::-;-1:-1:-1;;;;;11628:30:4;;;;;;;:15;:30;;;;;;;;:46;;;;;;;;;;;:59;;11523:87;;-1:-1:-1;11523:87:4;;11628:46;;:30;:59;;11523:87;;11628:59;:::i;:::-;;;;-1:-1:-1;11793:28:4;;-1:-1:-1;11812:9:4;11793:16;:28;:::i;:::-;-1:-1:-1;;;;;11705:30:4;;;;;;:15;:30;;;;;;;;11765:4;11705:83;;;;;;;:117;;:83;;:30;:117;;;;;:::i;:::-;;;;-1:-1:-1;;;10739:1098:4;11877:10;;11859:14;:28;11856:492;;;11959:4;-1:-1:-1;;;;;11906:58:4;11918:20;-1:-1:-1;;;;;11906:39:4;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11906:58:4;;11903:435;;;11979:27;12023:9;:16;-1:-1:-1;;;;;12009:31:4;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12009:31:4;;11979:61;;12059:9;12054:106;12078:9;:16;12074:1;:20;12054:106;;;12135:10;12119;12130:1;12119:13;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12119:26:4;;;:13;;;;;;;;;;;:26;12096:3;;;;:::i;:::-;;;;12054:106;;;-1:-1:-1;12173:128:4;;-1:-1:-1;;;12173:128:4;;-1:-1:-1;;;;;12173:59:4;;;;;:128;;12250:9;;12277:10;;12173:128;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12315:8;;;11903:435;12415:20;-1:-1:-1;;;;;12362:129:4;12391:10;-1:-1:-1;;;;;12362:129:4;;12449:9;12472;12362:129;;;;;;;:::i;:::-;;;;;;;;9638:2860;;;;;;;;;;;:::o;1846:189:5:-;1019:7;1045:6;-1:-1:-1;;;;;1045:6:5;665:10:8;1185:23:5;1177:68;;;;-1:-1:-1;;;1177:68:5;;;;;;;:::i;:::-;-1:-1:-1;;;;;1934:22:5;::::1;1926:73;;;::::0;-1:-1:-1;;;1926:73:5;;21374:2:10;1926:73:5::1;::::0;::::1;21356:21:10::0;21413:2;21393:18;;;21386:30;21452:34;21432:18;;;21425:62;-1:-1:-1;;;21503:18:10;;;21496:36;21549:19;;1926:73:5::1;21172:402:10::0;1926:73:5::1;2009:19;2019:8;2009:9;:19::i;:::-;1846:189:::0;:::o;12504:729:4:-;-1:-1:-1;;;;;12585:27:4;;12581:587;;-1:-1:-1;;;;;12646:30:4;;12628:15;12646:30;;;:15;:30;;;;;;;;12677:10;12646:42;;;;;;;;12710:18;;;;12702:52;;;;-1:-1:-1;;;12702:52:4;;22132:2:10;12702:52:4;;;22114:21:10;22171:2;22151:18;;;22144:30;-1:-1:-1;;;22190:18:10;;;22183:51;22251:18;;12702:52:4;21930:345:10;12702:52:4;-1:-1:-1;;;;;12768:30:4;;;;;;:15;:30;;;;;;;;12799:10;12768:42;;;;;;;:53;;12814:7;;12768:30;:53;;12814:7;;12768:53;:::i;:::-;;;;-1:-1:-1;;12843:33:4;;12851:10;;12843:33;;;;;12868:7;;12843:33;;;;12868:7;12851:10;12843:33;;;;;;;12835:42;;;;;;12614:274;12581:587;;;-1:-1:-1;;;;;12926:30:4;;12908:15;12926:30;;;:15;:30;;;;;;;;12957:10;12926:42;;;;;;;;12990:12;12982:43;;;;-1:-1:-1;;;12982:43:4;;;;;;;:::i;:::-;-1:-1:-1;;;;;13039:30:4;;;;;;:15;:30;;;;;;;;13070:10;13039:42;;;;;;;:53;;13085:7;;13039:30;:53;;13085:7;;13039:53;:::i;:::-;;;;-1:-1:-1;;13106:51:4;;-1:-1:-1;;;13106:51:4;;13137:10;13106:51;;;17330::10;17397:18;;;17390:34;;;-1:-1:-1;;;;;13106:30:4;;;;;17303:18:10;;13106:51:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12894:274;12581:587;13182:44;;;-1:-1:-1;;;;;17348:32:10;;17330:51;;17412:2;17397:18;;17390:34;;;13191:10:4;;13182:44;;17303:18:10;13182:44:4;;;;;;;12504:729;;:::o;6592:3040::-;7090:15;7068:18;;7055:10;:31;;;;:::i;:::-;:50;;7034:118;;;;-1:-1:-1;;;7034:118:4;;23543:2:10;7034:118:4;;;23525:21:10;23582:2;23562:18;;;23555:30;-1:-1:-1;;;23601:18:10;;;23594:51;23662:18;;7034:118:4;23341:345:10;7034:118:4;7171:16;7188:10;7171:28;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;7170:29;7162:64;;;;-1:-1:-1;;;7162:64:4;;21781:2:10;7162:64:4;;;21763:21:10;21820:2;21800:18;;;21793:30;-1:-1:-1;;;21839:18:10;;;21832:52;21901:18;;7162:64:4;21579:346:10;7162:64:4;7257:372;7290:23;7331:14;7363:20;7401:9;7428;7455:16;7489:13;7520:10;7548;7576:13;7607:8;7257:15;:372::i;:::-;7236:437;;;;-1:-1:-1;;;7236:437:4;;22482:2:10;7236:437:4;;;22464:21:10;22521:2;22501:18;;;22494:30;-1:-1:-1;;;22540:18:10;;;22533:48;22598:18;;7236:437:4;22280:342:10;7236:437:4;7714:4;7683:16;7700:10;7683:28;;;;;;:::i;:::-;;;;;;;;;;;;;;:35;;;;;-1:-1:-1;;7683:35:4;;;;;;;;;:28;7759:21;;7755:1093;;-1:-1:-1;;;;;7800:27:4;;7796:1042;;7868:16;7855:9;:29;;7847:58;;;;-1:-1:-1;;;7847:58:4;;21029:2:10;7847:58:4;;;21011:21:10;21068:2;21048:18;;;21041:30;-1:-1:-1;;;21087:18:10;;;21080:46;21143:18;;7847:58:4;20827:340:10;7847:58:4;7946:9;7927:16;:28;7923:133;;;7987:10;7979:58;8008:28;8020:16;8008:9;:28;:::i;:::-;7979:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7923:133;8129:3;8086:39;8105:20;8086:16;:39;:::i;:::-;8085:47;;;;:::i;:::-;-1:-1:-1;;;;;8150:43:4;;:27;:43;;;-1:-1:-1;;;;;;;;;;;8150:27:4;:43;:27;:43;;:56;;8073:59;;-1:-1:-1;8073:59:4;;8150:43;;:27;:56;;8073:59;;8150:56;:::i;:::-;;;;-1:-1:-1;8309:28:4;;-1:-1:-1;8328:9:4;8309:16;:28;:::i;:::-;8281:4;8224:27;:80;;;-1:-1:-1;;;;;;;;;;;8224:27:4;:80;:27;:80;;:114;;:80;;:27;:114;;;;;:::i;:::-;;;;-1:-1:-1;7796:1042:4;;-1:-1:-1;7796:1042:4;;8377:157;;-1:-1:-1;;;8377:157:4;;8433:10;8377:157;;;17016:34:10;8473:4:4;17066:18:10;;;17059:43;17118:18;;;17111:34;;;-1:-1:-1;;;;;8377:34:4;;;;;16951:18:10;;8377:157:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;8608:3:4;8565:39;8584:20;8565:16;:39;:::i;:::-;8564:47;;;;:::i;:::-;8552:59;;8679:9;8629:15;:30;8645:13;-1:-1:-1;;;;;8629:30:4;-1:-1:-1;;;;;8629:30:4;;;;;;;;;;;;:46;8660:14;-1:-1:-1;;;;;8629:46:4;-1:-1:-1;;;;;8629:46:4;;;;;;;;;;;;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;8794:28:4;;-1:-1:-1;8813:9:4;8794:16;:28;:::i;:::-;-1:-1:-1;;;;;8706:30:4;;;;;;:15;:30;;;;;;;;8766:4;8706:83;;;;;;;:117;;:83;;:30;:117;;;;;:::i;:::-;;;;-1:-1:-1;;7796:1042:4;8857:27;8901:9;:16;-1:-1:-1;;;;;8887:31:4;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8887:31:4;;8857:61;;8933:9;8928:97;8952:9;:16;8948:1;:20;8928:97;;;9005:9;8989:10;9000:1;8989:13;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8989:25:4;;;:13;;;;;;;;;;;:25;8970:3;;;;:::i;:::-;;;;8928:97;;;-1:-1:-1;9034:119:4;;-1:-1:-1;;;9034:119:4;;-1:-1:-1;;;;;9034:62:4;;;;;:119;;9110:9;;9133:10;;9034:119;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9180:13:4;;;;;-1:-1:-1;9180:49:4;;;9228:1;9203:13;9197:27;:32;;9180:49;:85;;;;-1:-1:-1;9242:7:4;;-1:-1:-1;;;;;9242:7:4;9234:30;;9180:85;9163:212;;;9290:74;9304:23;9329:9;9340:13;9355:8;9290:13;:74::i;:::-;9480:9;-1:-1:-1;;;;;9389:236:4;9452:14;-1:-1:-1;;;;;9389:236:4;9415:23;-1:-1:-1;;;;;9389:236:4;;9503:9;9526;9549:16;9579:13;9606:9;9389:236;;;;;;;;;;:::i;:::-;;;;;;;;7024:2608;;6592:3040;;;;;;;;;;;;:::o;2041:169:5:-;2096:16;2115:6;;-1:-1:-1;;;;;2131:17:5;;;-1:-1:-1;;;;;;2131:17:5;;;;;;2163:40;;2115:6;;;;;;;2163:40;;2096:16;2163:40;2086:124;2041:169;:::o;4913:891:4:-;5302:4;5318:19;5340:305;5377:20;5411:14;5439;5467:20;5501:9;5524;5547:6;5567:20;5601:10;5625;5340:23;:305::i;:::-;5318:327;;5655:28;5686:36;5710:11;5686:23;:36::i;:::-;5655:67;;5790:7;1019::5;1045:6;-1:-1:-1;;;;;1045:6:5;;973:85;5790:7:4;-1:-1:-1;;;;;5739:58:4;:47;5753:20;5775:10;5739:13;:47::i;:::-;-1:-1:-1;;;;;5739:58:4;;;4913:891;-1:-1:-1;;;;;;;;;;;;;4913:891:4:o;3095:907::-;3509:4;3525:19;3547:296;3575:23;3612:14;3640:20;3674:9;3697;3720:6;3740:20;3774:10;3798:13;3825:8;3547:14;:296::i;:::-;3525:318;;3853:28;3884:36;3908:11;3884:23;:36::i;:::-;3853:67;;3988:7;1019::5;1045:6;-1:-1:-1;;;;;1045:6:5;;973:85;3988:7:4;-1:-1:-1;;;;;3937:58:4;:47;3951:20;3973:10;3937:13;:47::i;:::-;-1:-1:-1;;;;;3937:58:4;;;3095:907;-1:-1:-1;;;;;;;;;;;;;;3095:907:4:o;5810:739::-;5998:34;6049:9;:16;-1:-1:-1;;;;;6035:31:4;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6035:31:4;;5998:68;;6076:25;6118:9;:16;-1:-1:-1;;;;;6104:31:4;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6104:31:4;;6076:59;;6145:21;6182:9;:16;-1:-1:-1;;;;;6169:30:4;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6145:54;;6214:9;6209:192;6233:9;:16;6229:1;:20;6209:192;;;6293:23;6270:17;6288:1;6270:20;;;;;;;;:::i;:::-;;;;;;:46;-1:-1:-1;;;;;6270:46:4;;;-1:-1:-1;;;;;6270:46:4;;;;;6344:8;6330;6339:1;6330:11;;;;;;;;:::i;:::-;;;;;;:22;;;;;6377:13;6366:5;6372:1;6366:8;;;;;;;;:::i;:::-;;;;;;:24;;;;6251:3;;;;;:::i;:::-;;;;6209:192;;;-1:-1:-1;6410:7:4;;:132;;-1:-1:-1;;;6410:132:4;;-1:-1:-1;;;;;6410:7:4;;;;:27;;:132;;6451:17;;6482:9;;6505:8;;6527:5;;6410:132;;;:::i;88:316:3:-;259:124;;14221:66:10;259:124:3;;;14209:79:10;14304:12;;;14297:28;;;190:7:3;;14341:12:10;;259:124:3;;;;;;;;;;;;232:165;;;;;;213:184;;88:316;;;:::o;410:493::-;534:7;561:10;:17;582:2;561:23;553:60;;;;-1:-1:-1;;;553:60:3;;23190:2:10;553:60:3;;;23172:21:10;23229:2;23209:18;;;23202:30;23268:26;23248:18;;;23241:54;23312:18;;553:60:3;22988:348:10;553:60:3;728:2;712:19;;;706:26;772:2;756:19;;;750:26;824:2;808:19;;;802:26;855:41;;623:9;855:41;;;;;;;;;20079:25:10;;;794:35:3;;20120:18:10;;;20113:45;;;20174:18;;20167:34;;;20217:18;;;20210:34;;;706:26:3;;855:41;;20051:19:10;;855:41:3;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;855:41:3;;-1:-1:-1;;855:41:3;;;410:493;-1:-1:-1;;;;;;;410:493:3:o;14:134:10:-;82:20;;111:31;82:20;111:31;:::i;:::-;14:134;;;:::o;153:748::-;207:5;260:3;253:4;245:6;241:17;237:27;227:55;;278:1;275;268:12;227:55;314:6;301:20;340:4;364:60;380:43;420:2;380:43;:::i;:::-;364:60;:::i;:::-;446:3;470:2;465:3;458:15;498:2;493:3;489:12;482:19;;533:2;525:6;521:15;585:3;580:2;574;571:1;567:10;559:6;555:23;551:32;548:41;545:61;;;602:1;599;592:12;545:61;624:1;634:238;648:2;645:1;642:9;634:238;;;719:3;706:17;736:31;761:5;736:31;:::i;:::-;780:18;;818:12;;;;850;;;;666:1;659:9;634:238;;;-1:-1:-1;890:5:10;;153:748;-1:-1:-1;;;;;;;153:748:10:o;906:673::-;960:5;1013:3;1006:4;998:6;994:17;990:27;980:55;;1031:1;1028;1021:12;980:55;1067:6;1054:20;1093:4;1117:60;1133:43;1173:2;1133:43;:::i;1117:60::-;1199:3;1223:2;1218:3;1211:15;1251:2;1246:3;1242:12;1235:19;;1286:2;1278:6;1274:15;1338:3;1333:2;1327;1324:1;1320:10;1312:6;1308:23;1304:32;1301:41;1298:61;;;1355:1;1352;1345:12;1298:61;1377:1;1387:163;1401:2;1398:1;1395:9;1387:163;;;1458:17;;1446:30;;1496:12;;;;1528;;;;1419:1;1412:9;1387:163;;1584:530;1626:5;1679:3;1672:4;1664:6;1660:17;1656:27;1646:55;;1697:1;1694;1687:12;1646:55;1733:6;1720:20;-1:-1:-1;;;;;1755:2:10;1752:26;1749:52;;;1781:18;;:::i;:::-;1825:55;1868:2;1849:13;;-1:-1:-1;;1845:27:10;1874:4;1841:38;1825:55;:::i;:::-;1905:2;1896:7;1889:19;1951:3;1944:4;1939:2;1931:6;1927:15;1923:26;1920:35;1917:55;;;1968:1;1965;1958:12;1917:55;2033:2;2026:4;2018:6;2014:17;2007:4;1998:7;1994:18;1981:55;2081:1;2056:16;;;2074:4;2052:27;2045:38;;;;2060:7;1584:530;-1:-1:-1;;;1584:530:10:o;2119:247::-;2178:6;2231:2;2219:9;2210:7;2206:23;2202:32;2199:52;;;2247:1;2244;2237:12;2199:52;2286:9;2273:23;2305:31;2330:5;2305:31;:::i;:::-;2355:5;2119:247;-1:-1:-1;;;2119:247:10:o;2371:251::-;2441:6;2494:2;2482:9;2473:7;2469:23;2465:32;2462:52;;;2510:1;2507;2500:12;2462:52;2542:9;2536:16;2561:31;2586:5;2561:31;:::i;2627:388::-;2695:6;2703;2756:2;2744:9;2735:7;2731:23;2727:32;2724:52;;;2772:1;2769;2762:12;2724:52;2811:9;2798:23;2830:31;2855:5;2830:31;:::i;:::-;2880:5;-1:-1:-1;2937:2:10;2922:18;;2909:32;2950:33;2909:32;2950:33;:::i;:::-;3002:7;2992:17;;;2627:388;;;;;:::o;3020:1408::-;3222:6;3230;3238;3246;3254;3262;3270;3278;3286;3294;3302:7;3311;3365:3;3353:9;3344:7;3340:23;3336:33;3333:53;;;3382:1;3379;3372:12;3333:53;3405:29;3424:9;3405:29;:::i;:::-;3395:39;;3453:38;3487:2;3476:9;3472:18;3453:38;:::i;:::-;3443:48;;3538:2;3527:9;3523:18;3510:32;3500:42;;3589:2;3578:9;3574:18;3561:32;3551:42;;-1:-1:-1;;;;;3636:3:10;3625:9;3621:19;3608:33;3605:57;3602:77;;;3675:1;3672;3665:12;3602:77;3698:88;3778:7;3770:3;3759:9;3755:19;3742:33;3731:9;3727:49;3698:88;:::i;:::-;3688:98;;3833:3;3822:9;3818:19;3805:33;3795:43;;3857:39;3891:3;3880:9;3876:19;3857:39;:::i;:::-;3847:49;;3915:39;3949:3;3938:9;3934:19;3915:39;:::i;:::-;3905:49;;-1:-1:-1;;;;;3997:3:10;3986:9;3982:19;3969:33;3966:57;3963:77;;;4036:1;4033;4026:12;3963:77;4059:76;4127:7;4119:3;4108:9;4104:19;4091:33;4080:9;4076:49;4059:76;:::i;:::-;4049:86;;4182:3;4171:9;4167:19;4154:33;4144:43;;-1:-1:-1;;;;;4230:3:10;4219:9;4215:19;4202:33;4199:57;4196:77;;;4269:1;4266;4259:12;4196:77;4293:76;4361:7;4353:3;4342:9;4338:19;4325:33;4314:9;4310:49;4293:76;:::i;:::-;4282:87;;4417:3;4406:9;4402:19;4389:33;4378:44;;3020:1408;;;;;;;;;;;;;;:::o;4433:1137::-;4608:6;4616;4624;4632;4640;4648;4656;4664;4672;4680;4733:3;4721:9;4712:7;4708:23;4704:33;4701:53;;;4750:1;4747;4740:12;4701:53;4773:29;4792:9;4773:29;:::i;:::-;4763:39;;4821:38;4855:2;4844:9;4840:18;4821:38;:::i;:::-;4811:48;;4906:2;4895:9;4891:18;4878:32;4868:42;;4957:2;4946:9;4942:18;4929:32;4919:42;;5012:3;5001:9;4997:19;4984:33;-1:-1:-1;;;;;5077:2:10;5069:6;5066:14;5063:34;;;5093:1;5090;5083:12;5063:34;5116:61;5169:7;5160:6;5149:9;5145:22;5116:61;:::i;:::-;5106:71;;5224:3;5213:9;5209:19;5196:33;5186:43;;5248:39;5282:3;5271:9;5267:19;5248:39;:::i;:::-;5238:49;;5334:3;5323:9;5319:19;5306:33;5296:43;;5392:3;5381:9;5377:19;5364:33;5348:49;;5422:2;5412:8;5409:16;5406:36;;;5438:1;5435;5428:12;5406:36;;5461:51;5504:7;5493:8;5482:9;5478:24;5461:51;:::i;:::-;5451:61;;;5559:3;5548:9;5544:19;5531:33;5521:43;;4433:1137;;;;;;;;;;;;;:::o;5575:456::-;5653:6;5661;5714:2;5702:9;5693:7;5689:23;5685:32;5682:52;;;5730:1;5727;5720:12;5682:52;5769:9;5756:23;5788:31;5813:5;5788:31;:::i;:::-;5838:5;-1:-1:-1;5894:2:10;5879:18;;5866:32;-1:-1:-1;;;;;5910:30:10;;5907:50;;;5953:1;5950;5943:12;5907:50;5976:49;6017:7;6008:6;5997:9;5993:22;5976:49;:::i;:::-;5966:59;;;5575:456;;;;;:::o;6036:315::-;6104:6;6112;6165:2;6153:9;6144:7;6140:23;6136:32;6133:52;;;6181:1;6178;6171:12;6133:52;6220:9;6207:23;6239:31;6264:5;6239:31;:::i;:::-;6289:5;6341:2;6326:18;;;;6313:32;;-1:-1:-1;;;6036:315:10:o;6356:1136::-;6530:6;6538;6546;6554;6562;6570;6578;6586;6594;6602;6655:3;6643:9;6634:7;6630:23;6626:33;6623:53;;;6672:1;6669;6662:12;6623:53;6695:29;6714:9;6695:29;:::i;:::-;6685:39;;6771:2;6760:9;6756:18;6743:32;6733:42;;6794:38;6828:2;6817:9;6813:18;6794:38;:::i;:::-;6784:48;;6879:2;6868:9;6864:18;6851:32;6841:42;;6930:3;6919:9;6915:19;6902:33;6892:43;;6986:3;6975:9;6971:19;6958:33;-1:-1:-1;;;;;7051:2:10;7043:6;7040:14;7037:34;;;7067:1;7064;7057:12;7037:34;7090:61;7143:7;7134:6;7123:9;7119:22;7090:61;:::i;:::-;7080:71;;7198:3;7187:9;7183:19;7170:33;7160:43;;7222:39;7256:3;7245:9;7241:19;7222:39;:::i;:::-;7212:49;;7314:3;7303:9;7299:19;7286:33;7270:49;;7344:2;7334:8;7331:16;7328:36;;;7360:1;7357;7350:12;7497:1253;7662:6;7670;7678;7686;7694;7702;7710;7718;7726;7734;7787:3;7775:9;7766:7;7762:23;7758:33;7755:53;;;7804:1;7801;7794:12;7755:53;7843:9;7830:23;7862:31;7887:5;7862:31;:::i;:::-;7912:5;-1:-1:-1;7964:2:10;7949:18;;7936:32;;-1:-1:-1;8020:2:10;8005:18;;7992:32;8033:33;7992:32;8033:33;:::i;:::-;8085:7;-1:-1:-1;8139:2:10;8124:18;;8111:32;;-1:-1:-1;8190:3:10;8175:19;;8162:33;;-1:-1:-1;8246:3:10;8231:19;;8218:33;-1:-1:-1;;;;;8263:30:10;;8260:50;;;8306:1;8303;8296:12;8260:50;8329:61;8382:7;8373:6;8362:9;8358:22;8329:61;:::i;:::-;8319:71;;;8437:3;8426:9;8422:19;8409:33;8399:43;;8494:3;8483:9;8479:19;8466:33;8508;8533:7;8508:33;:::i;:::-;8560:7;-1:-1:-1;8614:3:10;8599:19;;8586:33;;-1:-1:-1;8671:3:10;8656:19;;8643:33;8685;8643;8685;:::i;:::-;8737:7;8727:17;;;7497:1253;;;;;;;;;;;;;:::o;8755:730::-;8882:6;8890;8898;8951:2;8939:9;8930:7;8926:23;8922:32;8919:52;;;8967:1;8964;8957:12;8919:52;9007:9;8994:23;-1:-1:-1;;;;;9077:2:10;9069:6;9066:14;9063:34;;;9093:1;9090;9083:12;9063:34;9116:61;9169:7;9160:6;9149:9;9145:22;9116:61;:::i;:::-;9106:71;;9230:2;9219:9;9215:18;9202:32;9186:48;;9259:2;9249:8;9246:16;9243:36;;;9275:1;9272;9265:12;9243:36;;9298:63;9353:7;9342:8;9331:9;9327:24;9298:63;:::i;:::-;9288:73;;;9411:2;9400:9;9396:18;9383:32;9424:31;9449:5;9424:31;:::i;:::-;9474:5;9464:15;;;8755:730;;;;;:::o;9490:1693::-;9670:6;9678;9686;9694;9702;9755:3;9743:9;9734:7;9730:23;9726:33;9723:53;;;9772:1;9769;9762:12;9723:53;9812:9;9799:23;-1:-1:-1;;;;;9882:2:10;9874:6;9871:14;9868:34;;;9898:1;9895;9888:12;9868:34;9921:61;9974:7;9965:6;9954:9;9950:22;9921:61;:::i;:::-;9911:71;;10001:2;9991:12;;10056:2;10045:9;10041:18;10028:32;10085:2;10075:8;10072:16;10069:36;;;10101:1;10098;10091:12;10069:36;10124:63;10179:7;10168:8;10157:9;10153:24;10124:63;:::i;:::-;10114:73;;;10237:2;10226:9;10222:18;10209:32;10250:31;10275:5;10250:31;:::i;:::-;10300:5;-1:-1:-1;10358:2:10;10343:18;;10330:32;10374:16;;;10371:36;;;10403:1;10400;10393:12;10371:36;10426:24;;10481:4;10473:13;;10469:27;-1:-1:-1;10459:55:10;;10510:1;10507;10500:12;10459:55;10546:2;10533:16;10569:60;10585:43;10625:2;10585:43;:::i;10569:60::-;10651:3;10675:2;10670:3;10663:15;10703:2;10698:3;10694:12;10687:19;;10734:2;10730;10726:11;10782:7;10777:2;10771;10768:1;10764:10;10760:2;10756:19;10752:28;10749:41;10746:61;;;10803:1;10800;10793:12;10746:61;10825:1;10835:266;10849:2;10846:1;10843:9;10835:266;;;10919:2;10913:3;10900:17;10897:25;10894:45;;;10935:1;10932;10925:12;10894:45;10964:62;11018:7;11013:2;11006:3;10993:17;10989:2;10985:26;10981:35;10964:62;:::i;:::-;10952:75;;11047:12;;;;11079;;;;10867:1;10860:9;10835:266;;;10839:3;;11120:5;11110:15;;;;;;;;11172:3;11161:9;11157:19;11144:33;11134:43;;9490:1693;;;;;;;;:::o;11188:277::-;11255:6;11308:2;11296:9;11287:7;11283:23;11279:32;11276:52;;;11324:1;11321;11314:12;11276:52;11356:9;11350:16;11409:5;11402:13;11395:21;11388:5;11385:32;11375:60;;11431:1;11428;11421:12;11743:180;11802:6;11855:2;11843:9;11834:7;11830:23;11826:32;11823:52;;;11871:1;11868;11861:12;11823:52;-1:-1:-1;11894:23:10;;11743:180;-1:-1:-1;11743:180:10:o;11928:184::-;11998:6;12051:2;12039:9;12030:7;12026:23;12022:32;12019:52;;;12067:1;12064;12057:12;12019:52;-1:-1:-1;12090:16:10;;11928:184;-1:-1:-1;11928:184:10:o;12117:461::-;12170:3;12208:5;12202:12;12235:6;12230:3;12223:19;12261:4;12290:2;12285:3;12281:12;12274:19;;12327:2;12320:5;12316:14;12348:1;12358:195;12372:6;12369:1;12366:13;12358:195;;;12437:13;;-1:-1:-1;;;;;12433:39:10;12421:52;;12493:12;;;;12528:15;;;;12469:1;12387:9;12358:195;;;-1:-1:-1;12569:3:10;;12117:461;-1:-1:-1;;;;;12117:461:10:o;12583:446::-;12647:3;12685:5;12679:12;12712:6;12707:3;12700:19;12738:4;12767:2;12762:3;12758:12;12751:19;;12804:2;12797:5;12793:14;12825:1;12835:169;12849:6;12846:1;12843:13;12835:169;;;12910:13;;12898:26;;12944:12;;;;12979:15;;;;12871:1;12864:9;12835:169;;13034:398;13119:12;;13087:3;;13169:4;13196:14;;;13087:3;13246:13;;13238:169;;13313:13;;13301:26;;13347:12;;;;13382:15;;;;13274:1;13267:9;13238:169;;13437:258;13479:3;13517:5;13511:12;13544:6;13539:3;13532:19;13560:63;13616:6;13609:4;13604:3;13600:14;13593:4;13586:5;13582:16;13560:63;:::i;:::-;13677:2;13656:15;-1:-1:-1;;13652:29:10;13643:39;;;;13684:4;13639:50;;13437:258;-1:-1:-1;;13437:258:10:o;13700:274::-;13829:3;13867:6;13861:13;13883:53;13929:6;13924:3;13917:4;13909:6;13905:17;13883:53;:::i;:::-;13952:16;;;;;13700:274;-1:-1:-1;;13700:274:10:o;14364:1148::-;14856:6;14851:3;14844:19;14826:3;14886:26;14882:31;14964:2;14955:6;14951:2;14947:15;14943:24;14938:2;14933:3;14929:12;14922:46;15019:2;15010:6;15006:2;15002:15;14998:24;14993:2;14988:3;14984:12;14977:46;15053:6;15048:2;15043:3;15039:12;15032:28;15091:6;15085:3;15080;15076:13;15069:29;15120:51;15166:3;15161;15157:13;15149:6;15120:51;:::i;:::-;15194:6;15187:5;15180:21;15254:2;15245:6;15241:2;15237:15;15233:24;15228:2;15221:5;15217:14;15210:48;15290:6;15285:2;15278:5;15274:14;15267:30;15326:6;15320:13;15306:27;;15342:62;15397:6;15392:2;15385:5;15381:14;15376:2;15368:6;15364:15;15342:62;:::i;:::-;15423:18;15465:2;15457:11;;15450:28;;;;-1:-1:-1;;15502:3:10;15494:12;;;-1:-1:-1;;;;;;;;;;14364:1148:10:o;15517:1046::-;15989:6;15984:3;15977:19;15959:3;16019:26;16015:31;16097:2;16088:6;16084:2;16080:15;16076:24;16071:2;16066:3;16062:12;16055:46;16131:6;16126:2;16121:3;16117:12;16110:28;16189:2;16180:6;16176:2;16172:15;16168:24;16163:2;16158:3;16154:12;16147:46;16224:6;16218:3;16213;16209:13;16202:29;16262:6;16256:3;16251;16247:13;16240:29;16291:51;16337:3;16332;16328:13;16320:6;16291:51;:::i;:::-;16351:21;;;16412:2;16408:15;;;16404:24;;16399:2;16388:14;;16381:48;16456:2;16445:14;;16438:30;;;;-1:-1:-1;;16504:16:10;;;16500:25;16495:2;16484:14;;16477:49;16553:3;16542:15;;15517:1046;-1:-1:-1;;;;;;;15517:1046:10:o;17435:1401::-;17868:3;17857:9;17850:22;17831:4;17895:57;17947:3;17936:9;17932:19;17924:6;17895:57;:::i;:::-;17971:2;18021:9;18013:6;18009:22;18004:2;17993:9;17989:18;17982:50;18055:55;18103:6;18095;18055:55;:::i;:::-;18041:69;;18158:9;18150:6;18146:22;18141:2;18130:9;18126:18;18119:50;18192:55;18240:6;18232;18192:55;:::i;:::-;18178:69;;18295:9;18287:6;18283:22;18278:2;18267:9;18263:18;18256:50;18326:6;18361;18355:13;18392:6;18384;18377:22;18427:2;18419:6;18415:15;18408:22;;18486:2;18476:6;18473:1;18469:14;18461:6;18457:27;18453:36;18524:2;18516:6;18512:15;18545:1;18555:252;18569:6;18566:1;18563:13;18555:252;;;18659:2;18655:7;18646:6;18638;18634:19;18630:33;18625:3;18618:46;18687:40;18720:6;18711;18705:13;18687:40;:::i;:::-;18785:12;;;;18677:50;-1:-1:-1;18750:15:10;;;;18591:1;18584:9;18555:252;;;-1:-1:-1;18824:6:10;;17435:1401;-1:-1:-1;;;;;;;;;;;17435:1401:10:o;18841:476::-;19098:2;19087:9;19080:21;19061:4;19124:67;19187:2;19176:9;19172:18;19164:6;19124:67;:::i;:::-;19239:9;19231:6;19227:22;19222:2;19211:9;19207:18;19200:50;19267:44;19304:6;19296;19267:44;:::i;:::-;19259:52;18841:476;-1:-1:-1;;;;;18841:476:10:o;19322:343::-;19529:2;19518:9;19511:21;19492:4;19549:67;19612:2;19601:9;19597:18;19589:6;19549:67;:::i;:::-;19541:75;;19652:6;19647:2;19636:9;19632:18;19625:34;19322:343;;;;;:::o;20255:220::-;20404:2;20393:9;20386:21;20367:4;20424:45;20465:2;20454:9;20450:18;20442:6;20424:45;:::i;20480:342::-;20682:2;20664:21;;;20721:2;20701:18;;;20694:30;-1:-1:-1;;;20755:2:10;20740:18;;20733:48;20813:2;20798:18;;20480:342::o;22627:356::-;22829:2;22811:21;;;22848:18;;;22841:30;22907:34;22902:2;22887:18;;22880:62;22974:2;22959:18;;22627:356::o;23873:585::-;24164:6;24153:9;24146:25;24207:3;24202:2;24191:9;24187:18;24180:31;24127:4;24228:68;24291:3;24280:9;24276:19;24268:6;24228:68;:::i;:::-;24327:2;24312:18;;24305:34;;;;-1:-1:-1;;;;;;24375:32:10;;;;24370:2;24355:18;;24348:60;24439:3;24424:19;;;24417:35;24220:76;23873:585;-1:-1:-1;;23873:585:10:o;24463:275::-;24534:2;24528:9;24599:2;24580:13;;-1:-1:-1;;24576:27:10;24564:40;;-1:-1:-1;;;;;24619:34:10;;24655:22;;;24616:62;24613:88;;;24681:18;;:::i;:::-;24717:2;24710:22;24463:275;;-1:-1:-1;24463:275:10:o;24743:183::-;24803:4;-1:-1:-1;;;;;24828:6:10;24825:30;24822:56;;;24858:18;;:::i;:::-;-1:-1:-1;24903:1:10;24899:14;24915:4;24895:25;;24743:183::o;24931:128::-;24971:3;25002:1;24998:6;24995:1;24992:13;24989:39;;;25008:18;;:::i;:::-;-1:-1:-1;25044:9:10;;24931:128::o;25064:217::-;25104:1;25130;25120:132;;25174:10;25169:3;25165:20;25162:1;25155:31;25209:4;25206:1;25199:15;25237:4;25234:1;25227:15;25120:132;-1:-1:-1;25266:9:10;;25064:217::o;25286:168::-;25326:7;25392:1;25388;25384:6;25380:14;25377:1;25374:21;25369:1;25362:9;25355:17;25351:45;25348:71;;;25399:18;;:::i;:::-;-1:-1:-1;25439:9:10;;25286:168::o;25459:125::-;25499:4;25527:1;25524;25521:8;25518:34;;;25532:18;;:::i;:::-;-1:-1:-1;25569:9:10;;25459:125::o;25589:258::-;25661:1;25671:113;25685:6;25682:1;25679:13;25671:113;;;25761:11;;;25755:18;25742:11;;;25735:39;25707:2;25700:10;25671:113;;;25802:6;25799:1;25796:13;25793:48;;;-1:-1:-1;;25837:1:10;25819:16;;25812:27;25589:258::o;25852:135::-;25891:3;-1:-1:-1;;25912:17:10;;25909:43;;;25932:18;;:::i;:::-;-1:-1:-1;25979:1:10;25968:13;;25852:135::o;25992:127::-;26053:10;26048:3;26044:20;26041:1;26034:31;26084:4;26081:1;26074:15;26108:4;26105:1;26098:15;26124:127;26185:10;26180:3;26176:20;26173:1;26166:31;26216:4;26213:1;26206:15;26240:4;26237:1;26230:15;26256:127;26317:10;26312:3;26308:20;26305:1;26298:31;26348:4;26345:1;26338:15;26372:4;26369:1;26362:15;26388:131;-1:-1:-1;;;;;26463:31:10;;26453:42;;26443:70;;26509:1;26506;26499:12
Swarm Source
ipfs://f179867cd97a180ef4b7a5b56a671acdc262f42245caac5cb5fd7cdbf0163655
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.