More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 488 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Remove Operator | 12383291 | 1203 days ago | IN | 0 ETH | 0.00077116 | ||||
Add Operator | 12383285 | 1203 days ago | IN | 0 ETH | 0.0024323 | ||||
Generate Single ... | 12317546 | 1213 days ago | IN | 0 ETH | 0.01290271 | ||||
Generate Single ... | 12316684 | 1213 days ago | IN | 0 ETH | 0.0135009 | ||||
Generate Single ... | 12316650 | 1213 days ago | IN | 0 ETH | 0.01347955 | ||||
Generate Single ... | 12199879 | 1231 days ago | IN | 0 ETH | 0.042525 | ||||
Generate Single ... | 12199879 | 1231 days ago | IN | 0 ETH | 0.03915 | ||||
Generate Single ... | 12199879 | 1231 days ago | IN | 0 ETH | 0.0408842 | ||||
Generate Single ... | 12105796 | 1246 days ago | IN | 0 ETH | 0.04042675 | ||||
Generate Single ... | 12105796 | 1246 days ago | IN | 0 ETH | 0.04219787 | ||||
Generate Single ... | 12105794 | 1246 days ago | IN | 0 ETH | 0.04221875 | ||||
Generate Single ... | 12104872 | 1246 days ago | IN | 0 ETH | 0.06482035 | ||||
Generate Single ... | 12101333 | 1247 days ago | IN | 0 ETH | 0.06451811 | ||||
Generate Single ... | 12101333 | 1247 days ago | IN | 0 ETH | 0.05303973 | ||||
Generate Single ... | 12101333 | 1247 days ago | IN | 0 ETH | 0.04354653 | ||||
Generate Single ... | 11960567 | 1268 days ago | IN | 0 ETH | 0.03307255 | ||||
Generate Single ... | 11960567 | 1268 days ago | IN | 0 ETH | 0.03307255 | ||||
Generate Single ... | 11960567 | 1268 days ago | IN | 0 ETH | 0.03453765 | ||||
Generate Single ... | 11116312 | 1398 days ago | IN | 0 ETH | 0.00740663 | ||||
Generate Single ... | 11072601 | 1405 days ago | IN | 0 ETH | 0.00796375 | ||||
Generate Single ... | 11030474 | 1411 days ago | IN | 0 ETH | 0.0110823 | ||||
Generate Single ... | 11006093 | 1415 days ago | IN | 0 ETH | 0.02464122 | ||||
Generate Single ... | 11005439 | 1415 days ago | IN | 0 ETH | 0.01904326 | ||||
Generate Single ... | 10943507 | 1425 days ago | IN | 0 ETH | 0.01627402 | ||||
Generate Single ... | 10795155 | 1447 days ago | IN | 0 ETH | 0.05227438 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
CutieGenerator
Compiler Version
v0.4.26+commit.4563c3fc
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-01-13 */ pragma solidity ^0.4.23; pragma solidity ^0.4.23; pragma solidity ^0.4.23; pragma solidity ^0.4.23; /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address public owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor() public { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) public onlyOwner { require(newOwner != address(0)); emit OwnershipTransferred(owner, newOwner); owner = newOwner; } } /** * @title Pausable * @dev Base contract which allows children to implement an emergency stop mechanism. */ contract Pausable is Ownable { event Pause(); event Unpause(); bool public paused = false; /** * @dev Modifier to make a function callable only when the contract is not paused. */ modifier whenNotPaused() { require(!paused); _; } /** * @dev Modifier to make a function callable only when the contract is paused. */ modifier whenPaused() { require(paused); _; } /** * @dev called by the owner to pause, triggers stopped state */ function pause() onlyOwner whenNotPaused public { paused = true; emit Pause(); } /** * @dev called by the owner to unpause, returns to normal state */ function unpause() onlyOwner whenPaused public { paused = false; emit Unpause(); } } pragma solidity ^0.4.23; /// @author https://BlockChainArchitect.iocontract Bank is CutiePluginBase contract PluginInterface { /// @dev simply a boolean to indicate this is the contract we expect to be function isPluginInterface() public pure returns (bool); function onRemove() public; /// @dev Begins new feature. /// @param _cutieId - ID of token to auction, sender must be owner. /// @param _parameter - arbitrary parameter /// @param _seller - Old owner, if not the message sender function run( uint40 _cutieId, uint256 _parameter, address _seller ) public payable; /// @dev Begins new feature, approved and signed by COO. /// @param _cutieId - ID of token to auction, sender must be owner. /// @param _parameter - arbitrary parameter function runSigned( uint40 _cutieId, uint256 _parameter, address _owner ) external payable; function withdraw() external; } pragma solidity ^0.4.23; pragma solidity ^0.4.23; /// @title BlockchainCuties: Collectible and breedable cuties on the Ethereum blockchain. /// @author https://BlockChainArchitect.io /// @dev This is the BlockchainCuties configuration. It can be changed redeploying another version. interface ConfigInterface { function isConfig() external pure returns (bool); function getCooldownIndexFromGeneration(uint16 _generation, uint40 _cutieId) external view returns (uint16); function getCooldownEndTimeFromIndex(uint16 _cooldownIndex, uint40 _cutieId) external view returns (uint40); function getCooldownIndexFromGeneration(uint16 _generation) external view returns (uint16); function getCooldownEndTimeFromIndex(uint16 _cooldownIndex) external view returns (uint40); function getCooldownIndexCount() external view returns (uint256); function getBabyGenFromId(uint40 _momId, uint40 _dadId) external view returns (uint16); function getBabyGen(uint16 _momGen, uint16 _dadGen) external pure returns (uint16); function getTutorialBabyGen(uint16 _dadGen) external pure returns (uint16); function getBreedingFee(uint40 _momId, uint40 _dadId) external view returns (uint256); } contract CutieCoreInterface { function isCutieCore() pure public returns (bool); ConfigInterface public config; function transferFrom(address _from, address _to, uint256 _cutieId) external; function transfer(address _to, uint256 _cutieId) external; function ownerOf(uint256 _cutieId) external view returns (address owner); function getCutie(uint40 _id) external view returns ( uint256 genes, uint40 birthTime, uint40 cooldownEndTime, uint40 momId, uint40 dadId, uint16 cooldownIndex, uint16 generation ); function getGenes(uint40 _id) public view returns ( uint256 genes ); function getCooldownEndTime(uint40 _id) public view returns ( uint40 cooldownEndTime ); function getCooldownIndex(uint40 _id) public view returns ( uint16 cooldownIndex ); function getGeneration(uint40 _id) public view returns ( uint16 generation ); function getOptional(uint40 _id) public view returns ( uint64 optional ); function changeGenes( uint40 _cutieId, uint256 _genes) public; function changeCooldownEndTime( uint40 _cutieId, uint40 _cooldownEndTime) public; function changeCooldownIndex( uint40 _cutieId, uint16 _cooldownIndex) public; function changeOptional( uint40 _cutieId, uint64 _optional) public; function changeGeneration( uint40 _cutieId, uint16 _generation) public; function createSaleAuction( uint40 _cutieId, uint128 _startPrice, uint128 _endPrice, uint40 _duration ) public; function getApproved(uint256 _tokenId) external returns (address); function totalSupply() view external returns (uint256); function createPromoCutie(uint256 _genes, address _owner) external; function checkOwnerAndApprove(address _claimant, uint40 _cutieId, address _pluginsContract) external view; function breedWith(uint40 _momId, uint40 _dadId) public payable returns (uint40); function getBreedingFee(uint40 _momId, uint40 _dadId) public view returns (uint256); function restoreCutieToAddress(uint40 _cutieId, address _recipient) external; function createGen0Auction(uint256 _genes, uint128 startPrice, uint128 endPrice, uint40 duration) external; function createGen0AuctionWithTokens(uint256 _genes, uint128 startPrice, uint128 endPrice, uint40 duration, address[] allowedTokens) external; function createPromoCutieWithGeneration(uint256 _genes, address _owner, uint16 _generation) external; function createPromoCutieBulk(uint256[] _genes, address _owner, uint16 _generation) external; } pragma solidity ^0.4.23; pragma solidity ^0.4.23; pragma solidity ^0.4.23; // ---------------------------------------------------------------------------- contract ERC20 { // ERC Token Standard #223 Interface // https://github.com/ethereum/EIPs/issues/223 string public symbol; string public name; uint8 public decimals; function transfer(address _to, uint _value, bytes _data) external returns (bool success); // approveAndCall function approveAndCall(address spender, uint tokens, bytes data) external returns (bool success); // ERC Token Standard #20 Interface // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md function totalSupply() public view returns (uint); function balanceOf(address tokenOwner) public view returns (uint balance); function allowance(address tokenOwner, address spender) public view returns (uint remaining); function transfer(address to, uint tokens) public returns (bool success); function approve(address spender, uint tokens) public returns (bool success); function transferFrom(address from, address to, uint tokens) public returns (bool success); event Transfer(address indexed from, address indexed to, uint tokens); event Approval(address indexed tokenOwner, address indexed spender, uint tokens); // bulk operations function transferBulk(address[] to, uint[] tokens) public; function approveBulk(address[] spender, uint[] tokens) public; } pragma solidity ^0.4.23; /// @title ERC-721 Non-Fungible Token Standard /// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md /// Note: the ERC-165 identifier for this interface is 0x6466353c interface ERC721 /*is ERC165*/ { /// @notice Query if a contract implements an interface /// @param interfaceID The interface identifier, as specified in ERC-165 /// @dev Interface identification is specified in ERC-165. This function /// uses less than 30,000 gas. /// @return `true` if the contract implements `interfaceID` and /// `interfaceID` is not 0xffffffff, `false` otherwise function supportsInterface(bytes4 interfaceID) external view returns (bool); /// @dev This emits when ownership of any NFT changes by any mechanism. /// This event emits when NFTs are created (`from` == 0) and destroyed /// (`to` == 0). Exception: during contract creation, any number of NFTs /// may be created and assigned without emitting Transfer. At the time of /// any transfer, the approved address for that NFT (if any) is reset to none. event Transfer(address indexed _from, address indexed _to, uint256 _tokenId); /// @dev This emits when the approved address for an NFT is changed or /// reaffirmed. The zero address indicates there is no approved address. /// When a Transfer event emits, this also indicates that the approved /// address for that NFT (if any) is reset to none. event Approval(address indexed _owner, address indexed _approved, uint256 _tokenId); /// @dev This emits when an operator is enabled or disabled for an owner. /// The operator can manage all NFTs of the owner. event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); /// @notice Count all NFTs assigned to an owner /// @dev NFTs assigned to the zero address are considered invalid, and this /// function throws for queries about the zero address. /// @param _owner An address for whom to query the balance /// @return The number of NFTs owned by `_owner`, possibly zero function balanceOf(address _owner) external view returns (uint256); /// @notice Find the owner of an NFT /// @param _tokenId The identifier for an NFT /// @dev NFTs assigned to zero address are considered invalid, and queries /// about them do throw. /// @return The address of the owner of the NFT function ownerOf(uint256 _tokenId) external view returns (address); /// @notice Transfers the ownership of an NFT from one address to another address /// @dev Throws unless `msg.sender` is the current owner, an authorized /// operator, or the approved address for this NFT. Throws if `_from` is /// not the current owner. Throws if `_to` is the zero address. Throws if /// `_tokenId` is not a valid NFT. When transfer is complete, this function /// checks if `_to` is a smart contract (code size > 0). If so, it calls /// `onERC721Received` on `_to` and throws if the return value is not /// `bytes4(keccak256("onERC721Received(address,uint256,bytes)"))`. /// @param _from The current owner of the NFT /// @param _to The new owner /// @param _tokenId The NFT to transfer /// @param data Additional data with no specified format, sent in call to `_to` function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external; /// @notice Transfers the ownership of an NFT from one address to another address /// @dev This works identically to the other function with an extra data parameter, /// except this function just sets data to "" /// @param _from The current owner of the NFT /// @param _to The new owner /// @param _tokenId The NFT to transfer function safeTransferFrom(address _from, address _to, uint256 _tokenId) external; /// @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE /// TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE /// THEY MAY BE PERMANENTLY LOST /// @dev Throws unless `msg.sender` is the current owner, an authorized /// operator, or the approved address for this NFT. Throws if `_from` is /// not the current owner. Throws if `_to` is the zero address. Throws if /// `_tokenId` is not a valid NFT. /// @param _from The current owner of the NFT /// @param _to The new owner /// @param _tokenId The NFT to transfer function transferFrom(address _from, address _to, uint256 _tokenId) external; /// @notice Set or reaffirm the approved address for an NFT /// @dev The zero address indicates there is no approved address. /// @dev Throws unless `msg.sender` is the current NFT owner, or an authorized /// operator of the current owner. /// @param _approved The new approved NFT controller /// @param _tokenId The NFT to approve function approve(address _approved, uint256 _tokenId) external; /// @notice Enable or disable approval for a third party ("operator") to manage /// all your asset. /// @dev Emits the ApprovalForAll event /// @param _operator Address to add to the set of authorized operators. /// @param _approved True if the operators is approved, false to revoke approval function setApprovalForAll(address _operator, bool _approved) external; /// @notice Get the approved address for a single NFT /// @dev Throws if `_tokenId` is not a valid NFT /// @param _tokenId The NFT to find the approved address for /// @return The approved address for this NFT, or the zero address if there is none function getApproved(uint256 _tokenId) external view returns (address); /// @notice Query if an address is an authorized operator for another address /// @param _owner The address that owns the NFTs /// @param _operator The address that acts on behalf of the owner /// @return True if `_operator` is an approved operator for `_owner`, false otherwise function isApprovedForAll(address _owner, address _operator) external view returns (bool); /// @notice A descriptive name for a collection of NFTs in this contract function name() external pure returns (string _name); /// @notice An abbreviated name for NFTs in this contract function symbol() external pure returns (string _symbol); /// @notice A distinct Uniform Resource Identifier (URI) for a given asset. /// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC /// 3986. The URI may point to a JSON file that conforms to the "ERC721 /// Metadata JSON Schema". function tokenURI(uint256 _tokenId) external view returns (string); /// @notice Count NFTs tracked by this contract /// @return A count of valid NFTs tracked by this contract, where each one of /// them has an assigned and queryable owner not equal to the zero address function totalSupply() external view returns (uint256); /// @notice Enumerate valid NFTs /// @dev Throws if `_index` >= `totalSupply()`. /// @param _index A counter less than `totalSupply()` /// @return The token identifier for the `_index`th NFT, /// (sort order not specified) function tokenByIndex(uint256 _index) external view returns (uint256); /// @notice Enumerate NFTs assigned to an owner /// @dev Throws if `_index` >= `balanceOf(_owner)` or if /// `_owner` is the zero address, representing invalid NFTs. /// @param _owner An address where we are interested in NFTs owned by them /// @param _index A counter less than `balanceOf(_owner)` /// @return The token identifier for the `_index`th NFT assigned to `_owner`, /// (sort order not specified) function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256); /// @notice Transfers a Cutie to another address. When transferring to a smart /// contract, ensure that it is aware of ERC-721 (or /// BlockchainCuties specifically), otherwise the Cutie may be lost forever. /// @param _to The address of the recipient, can be a user or contract. /// @param _cutieId The ID of the Cutie to transfer. function transfer(address _to, uint256 _cutieId) external; } pragma solidity ^0.4.23; pragma solidity ^0.4.23; /** * @title ERC165 * @dev https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md */ interface ERC165 { /** * @notice Query if a contract implements an interface * @param _interfaceId The interface identifier, as specified in ERC-165 * @dev Interface identification is specified in ERC-165. This function * uses less than 30,000 gas. */ function supportsInterface(bytes4 _interfaceId) external view returns (bool); } /** @title ERC-1155 Multi Token Standard @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1155.md Note: The ERC-165 identifier for this interface is 0xd9b67a26. */ interface IERC1155 /* is ERC165 */ { /** @dev Either `TransferSingle` or `TransferBatch` MUST emit when tokens are transferred, including zero value transfers as well as minting or burning (see "Safe Transfer Rules" section of the standard). The `_operator` argument MUST be msg.sender. The `_from` argument MUST be the address of the holder whose balance is decreased. The `_to` argument MUST be the address of the recipient whose balance is increased. The `_id` argument MUST be the token type being transferred. The `_value` argument MUST be the number of tokens the holder balance is decreased by and match what the recipient balance is increased by. When minting/creating tokens, the `_from` argument MUST be set to `0x0` (i.e. zero address). When burning/destroying tokens, the `_to` argument MUST be set to `0x0` (i.e. zero address). */ event TransferSingle(address indexed _operator, address indexed _from, address indexed _to, uint256 _id, uint256 _value); /** @dev Either `TransferSingle` or `TransferBatch` MUST emit when tokens are transferred, including zero value transfers as well as minting or burning (see "Safe Transfer Rules" section of the standard). The `_operator` argument MUST be msg.sender. The `_from` argument MUST be the address of the holder whose balance is decreased. The `_to` argument MUST be the address of the recipient whose balance is increased. The `_ids` argument MUST be the list of tokens being transferred. The `_values` argument MUST be the list of number of tokens (matching the list and order of tokens specified in _ids) the holder balance is decreased by and match what the recipient balance is increased by. When minting/creating tokens, the `_from` argument MUST be set to `0x0` (i.e. zero address). When burning/destroying tokens, the `_to` argument MUST be set to `0x0` (i.e. zero address). */ event TransferBatch(address indexed _operator, address indexed _from, address indexed _to, uint256[] _ids, uint256[] _values); /** @dev MUST emit when approval for a second party/operator address to manage all tokens for an owner address is enabled or disabled (absense of an event assumes disabled). */ event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); /** @dev MUST emit when the URI is updated for a token ID. URIs are defined in RFC 3986. The URI MUST point a JSON file that conforms to the "ERC-1155 Metadata URI JSON Schema". The URI value allows for ID substitution by clients. If the string {id} exists in any URI, clients MUST replace this with the actual token ID in hexadecimal form. */ event URI(string _value, uint256 indexed _id); /** @notice Transfers `_value` amount of an `_id` from the `_from` address to the `_to` address specified (with safety call). @dev Caller must be approved to manage the tokens being transferred out of the `_from` account (see "Approval" section of the standard). MUST revert if `_to` is the zero address. MUST revert if balance of holder for token `_id` is lower than the `_value` sent. MUST revert on any other error. MUST emit the `TransferSingle` event to reflect the balance change (see "Safe Transfer Rules" section of the standard). After the above conditions are met, this function MUST check if `_to` is a smart contract (e.g. code size > 0). If so, it MUST call `onERC1155Received` on `_to` and act appropriately (see "Safe Transfer Rules" section of the standard). @param _from Source address @param _to Target address @param _id ID of the token type @param _value Transfer amount @param _data Additional data with no specified format, MUST be sent unaltered in call to `onERC1155Received` on `_to` */ function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes _data) external; /** @notice Transfers `_values` amount(s) of `_ids` from the `_from` address to the `_to` address specified (with safety call). @dev Caller must be approved to manage the tokens being transferred out of the `_from` account (see "Approval" section of the standard). MUST revert if `_to` is the zero address. MUST revert if length of `_ids` is not the same as length of `_values`. MUST revert if any of the balance(s) of the holder(s) for token(s) in `_ids` is lower than the respective amount(s) in `_values` sent to the recipient. MUST revert on any other error. MUST emit `TransferSingle` or `TransferBatch` event(s) such that all the balance changes are reflected (see "Safe Transfer Rules" section of the standard). Balance changes and events MUST follow the ordering of the arrays (_ids[0]/_values[0] before _ids[1]/_values[1], etc). After the above conditions for the transfer(s) in the batch are met, this function MUST check if `_to` is a smart contract (e.g. code size > 0). If so, it MUST call the relevant `ERC1155TokenReceiver` hook(s) on `_to` and act appropriately (see "Safe Transfer Rules" section of the standard). @param _from Source address @param _to Target address @param _ids IDs of each token type (order and length must match _values array) @param _values Transfer amounts per token type (order and length must match _ids array) @param _data Additional data with no specified format, MUST be sent unaltered in call to the `ERC1155TokenReceiver` hook(s) on `_to` */ function safeBatchTransferFrom(address _from, address _to, uint256[] _ids, uint256[] _values, bytes _data) external; /** @notice Get the balance of an account's Tokens. @param _owner The address of the token holder @param _id ID of the Token @return The _owner's balance of the Token type requested */ function balanceOf(address _owner, uint256 _id) external view returns (uint256); /** @notice Get the balance of multiple account/token pairs @param _owners The addresses of the token holders @param _ids ID of the Tokens @return The _owner's balance of the Token types requested (i.e. balance for each (owner, id) pair) */ function balanceOfBatch(address[] _owners, uint256[] _ids) external view returns (uint256[] memory); /** @notice Enable or disable approval for a third party ("operator") to manage all of the caller's tokens. @dev MUST emit the ApprovalForAll event on success. @param _operator Address to add to the set of authorized operators @param _approved True if the operator is approved, false to revoke approval */ function setApprovalForAll(address _operator, bool _approved) external; /** @notice Queries the approval status of an operator for a given owner. @param _owner The owner of the Tokens @param _operator Address of authorized operator @return True if the operator is approved, false if not */ function isApprovedForAll(address _owner, address _operator) external view returns (bool); } contract Operators { mapping (address=>bool) ownerAddress; mapping (address=>bool) operatorAddress; constructor() public { ownerAddress[msg.sender] = true; } modifier onlyOwner() { require(ownerAddress[msg.sender]); _; } function isOwner(address _addr) public view returns (bool) { return ownerAddress[_addr]; } function addOwner(address _newOwner) external onlyOwner { require(_newOwner != address(0)); ownerAddress[_newOwner] = true; } function removeOwner(address _oldOwner) external onlyOwner { delete(ownerAddress[_oldOwner]); } modifier onlyOperator() { require(isOperator(msg.sender)); _; } function isOperator(address _addr) public view returns (bool) { return operatorAddress[_addr] || ownerAddress[_addr]; } function addOperator(address _newOperator) external onlyOwner { require(_newOperator != address(0)); operatorAddress[_newOperator] = true; } function removeOperator(address _oldOperator) external onlyOwner { delete(operatorAddress[_oldOperator]); } function withdrawERC20(ERC20 _tokenContract) external onlyOwner { uint256 balance = _tokenContract.balanceOf(address(this)); _tokenContract.transfer(msg.sender, balance); } function approveERC721(ERC721 _tokenContract) external onlyOwner { _tokenContract.setApprovalForAll(msg.sender, true); } function approveERC1155(IERC1155 _tokenContract) external onlyOwner { _tokenContract.setApprovalForAll(msg.sender, true); } function withdrawEth() external onlyOwner { if (address(this).balance > 0) { msg.sender.transfer(address(this).balance); } } } /** * @title Pausable * @dev Base contract which allows children to implement an emergency stop mechanism. */ contract PausableOperators is Operators { event Pause(); event Unpause(); bool public paused = false; /** * @dev Modifier to make a function callable only when the contract is not paused. */ modifier whenNotPaused() { require(!paused); _; } /** * @dev Modifier to make a function callable only when the contract is paused. */ modifier whenPaused() { require(paused); _; } /** * @dev called by the owner to pause, triggers stopped state */ function pause() onlyOwner whenNotPaused public { paused = true; emit Pause(); } /** * @dev called by the owner to unpause, returns to normal state */ function unpause() onlyOwner whenPaused public { paused = false; emit Unpause(); } } /// @author https://BlockChainArchitect.iocontract Bank is CutiePluginBase contract CutiePluginBase is PluginInterface, PausableOperators { function isPluginInterface() public pure returns (bool) { return true; } // Reference to contract tracking NFT ownership CutieCoreInterface public coreContract; address public pluginsContract; // @dev Throws if called by any account other than the owner. modifier onlyCore() { require(msg.sender == address(coreContract)); _; } modifier onlyPlugins() { require(msg.sender == pluginsContract); _; } /// @dev Constructor creates a reference to the NFT ownership contract /// and verifies the owner cut is in the valid range. /// @param _coreAddress - address of a deployed contract implementing /// the Nonfungible Interface. function setup(address _coreAddress, address _pluginsContract) public onlyOwner { CutieCoreInterface candidateContract = CutieCoreInterface(_coreAddress); require(candidateContract.isCutieCore()); coreContract = candidateContract; pluginsContract = _pluginsContract; } /// @dev Returns true if the claimant owns the token. /// @param _claimant - Address claiming to own the token. /// @param _cutieId - ID of token whose ownership to verify. function _isOwner(address _claimant, uint40 _cutieId) internal view returns (bool) { return (coreContract.ownerOf(_cutieId) == _claimant); } /// @dev Escrows the NFT, assigning ownership to this contract. /// Throws if the escrow fails. /// @param _owner - Current owner address of token to escrow. /// @param _cutieId - ID of token whose approval to verify. function _escrow(address _owner, uint40 _cutieId) internal { // it will throw if transfer fails coreContract.transferFrom(_owner, this, _cutieId); } /// @dev Transfers an NFT owned by this contract to another address. /// Returns true if the transfer succeeds. /// @param _receiver - Address to transfer NFT to. /// @param _cutieId - ID of token to transfer. function _transfer(address _receiver, uint40 _cutieId) internal { // it will throw if transfer fails coreContract.transfer(_receiver, _cutieId); } function withdraw() external { require( isOwner(msg.sender) || msg.sender == address(coreContract) || msg.sender == pluginsContract ); _withdraw(); } function _withdraw() internal { if (address(this).balance > 0) { address(coreContract).transfer(address(this).balance); } } function onRemove() public onlyPlugins { _withdraw(); } function run(uint40, uint256, address) public payable onlyCore { revert(); } function runSigned(uint40, uint256, address) external payable onlyCore { revert(); } } /// @dev Receives payments for payd features from players for Blockchain Cuties /// @author https://BlockChainArchitect.io contract CutieGenerator is CutiePluginBase { uint40[] public parents; uint public parentIndex; CutieCoreInterface public proxy; function setupGenerator(CutieCoreInterface _proxy, uint40 _parent1, uint40 _parent2) external onlyOwner { addParent(_parent1); addParent(_parent2); proxy = _proxy; } function generateSingle(uint _genome, uint16 _generation, address _target) external onlyOperator returns (uint40 babyId) { return _generate(_genome, _generation, _target); } function generateSingleBreed(uint _genome, uint16 _generation, address _target) external onlyOperator returns (uint40 babyId) { return _generateBreed(_genome, _generation, _target); } function generateSinglePromo(uint _genome, uint16 _generation, address _target) external onlyOperator returns (uint40 babyId) { require(_generation == 0); return _generatePromo(_genome, _target); } function generate(uint _genome, uint16 _generation, address[] _target) external onlyOperator { for (uint i = 0; i < _target.length; i++) { _generate(_genome, _generation, _target[i]); } } function _generate(uint _genome, uint16 _generation, address _target) internal returns (uint40 babyId) { if (_generation == 0) { return _generatePromo(_genome, _target); } else { return uint40(_generateBreed(_genome, _generation, _target)); } } function _generatePromo(uint _genome, address _target) internal returns (uint40 babyId) { proxy.createPromoCutie(_genome, _target); return uint40(coreContract.totalSupply()); } function addParent(uint40 _newParent) public onlyOwner { parents.push(_newParent); } function removeParent(uint40 _index) external onlyOwner { parents[_index] = parents[parents.length-1]; parents.length--; } function addParents(uint40[] _newParents) external onlyOwner { for (uint i = 0; i < _newParents.length; i++) { parents.push(_newParents[i]); } } function _getNextParent() internal returns (uint40 parent) { parent = parents[parentIndex]; parentIndex++; if (parentIndex >= parents.length) { parentIndex = 0; } } function _generateBreed(uint _genome, uint16 _generation, address _target) internal returns (uint40 babyId) { uint40 momId = _getNextParent(); uint40 dadId = _getNextParent(); coreContract.changeCooldownEndTime(momId, 0); coreContract.changeCooldownEndTime(dadId, 0); coreContract.changeCooldownIndex(momId, 0); coreContract.changeCooldownIndex(dadId, 0); babyId = coreContract.breedWith(momId, dadId); coreContract.changeCooldownIndex(babyId, _generation); coreContract.changeGeneration(babyId, _generation); coreContract.changeGenes(babyId, _genome); coreContract.transfer(_target, babyId); return babyId; } function recreate(uint40 _cutieId, uint _genome, uint16 _generation) external onlyOwner { coreContract.changeGeneration(_cutieId, _generation); coreContract.changeGenes(_cutieId, _genome); } function recoverCutie(uint40 _cutieId) external onlyOwner { coreContract.transfer(msg.sender, _cutieId); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[],"name":"onRemove","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_oldOwner","type":"address"}],"name":"removeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_proxy","type":"address"},{"name":"_parent1","type":"uint40"},{"name":"_parent2","type":"uint40"}],"name":"setupGenerator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_coreAddress","type":"address"},{"name":"_pluginsContract","type":"address"}],"name":"setup","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenContract","type":"address"}],"name":"approveERC721","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newParents","type":"uint40[]"}],"name":"addParents","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_index","type":"uint40"}],"name":"removeParent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"isOperator","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"addOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_genome","type":"uint256"},{"name":"_generation","type":"uint16"},{"name":"_target","type":"address"}],"name":"generateSingle","outputs":[{"name":"babyId","type":"uint40"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"parentIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_cutieId","type":"uint40"},{"name":"_genome","type":"uint256"},{"name":"_generation","type":"uint16"}],"name":"recreate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"parents","outputs":[{"name":"","type":"uint40"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_genome","type":"uint256"},{"name":"_generation","type":"uint16"},{"name":"_target","type":"address"}],"name":"generateSinglePromo","outputs":[{"name":"babyId","type":"uint40"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_cutieId","type":"uint40"}],"name":"recoverCutie","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isPluginInterface","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"","type":"uint40"},{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"runSigned","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"pluginsContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOperator","type":"address"}],"name":"addOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"","type":"uint40"},{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"run","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawEth","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_genome","type":"uint256"},{"name":"_generation","type":"uint16"},{"name":"_target","type":"address"}],"name":"generateSingleBreed","outputs":[{"name":"babyId","type":"uint40"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_oldOperator","type":"address"}],"name":"removeOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_genome","type":"uint256"},{"name":"_generation","type":"uint16"},{"name":"_target","type":"address[]"}],"name":"generate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenContract","type":"address"}],"name":"approveERC1155","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newParent","type":"uint40"}],"name":"addParent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"coreContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"proxy","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenContract","type":"address"}],"name":"withdrawERC20","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"}]
Contract Creation Code
608060409081526002805460ff19908116909155336000908152602081905291909120805490911660011790556118a78061003b6000396000f3006080604052600436106101925763ffffffff60e060020a600035041663119523698114610197578063173825d9146101ae5780631b5cb066146101cf5780632d34ba79146102005780632f54bf6e146102275780633ccfd60b1461025c5780633f4ba83a1461027157806346195c12146102865780635368672e146102a75780635c975abb146102c75780636cc6b419146102dc5780636d70f7ae146102fb5780637065cb481461031c5780637895fe981461033d5780637948690a146103825780638456cb59146103a9578063897efe5c146103be578063898572a6146103e757806389bdf45b146103ff578063940bb2171461042a57806394a89233146104495780639652713e1461045e578063976ef75b1461047f5780639870d7fe146104b0578063a055d4551461045e578063a0ef91df146104d1578063ab69e5ea146104e6578063ac8a584a14610511578063bb620e3c14610532578063c6b72a1f14610286578063d116f5491461055e578063e80db5db1461057d578063ec55688914610592578063f4f3b200146105a7575b600080fd5b3480156101a357600080fd5b506101ac6105c8565b005b3480156101ba57600080fd5b506101ac600160a060020a03600435166105e9565b3480156101db57600080fd5b506101ac600160a060020a036004351664ffffffffff60243581169060443516610628565b34801561020c57600080fd5b506101ac600160a060020a0360043581169060243516610689565b34801561023357600080fd5b50610248600160a060020a0360043516610775565b604080519115158252519081900360200190f35b34801561026857600080fd5b506101ac610793565b34801561027d57600080fd5b506101ac6107d6565b34801561029257600080fd5b506101ac600160a060020a036004351661083a565b3480156102b357600080fd5b506101ac60048035602481019101356108da565b3480156102d357600080fd5b50610248610967565b3480156102e857600080fd5b506101ac64ffffffffff60043516610970565b34801561030757600080fd5b50610248600160a060020a0360043516610a2b565b34801561032857600080fd5b506101ac600160a060020a0360043516610a70565b34801561034957600080fd5b5061036860043561ffff60243516600160a060020a0360443516610ac7565b6040805164ffffffffff9092168252519081900360200190f35b34801561038e57600080fd5b50610397610af2565b60408051918252519081900360200190f35b3480156103b557600080fd5b506101ac610af8565b3480156103ca57600080fd5b506101ac64ffffffffff6004351660243561ffff60443516610b5e565b3480156103f357600080fd5b50610368600435610ca2565b34801561040b57600080fd5b5061036860043561ffff60243516600160a060020a0360443516610cdb565b34801561043657600080fd5b506101ac64ffffffffff60043516610d0a565b34801561045557600080fd5b50610248610d9e565b6101ac64ffffffffff60043516602435600160a060020a0360443516610da4565b34801561048b57600080fd5b50610494610dc0565b60408051600160a060020a039092168252519081900360200190f35b3480156104bc57600080fd5b506101ac600160a060020a0360043516610dcf565b3480156104dd57600080fd5b506101ac610e29565b3480156104f257600080fd5b5061036860043561ffff60243516600160a060020a0360443516610e81565b34801561051d57600080fd5b506101ac600160a060020a0360043516610ea2565b34801561053e57600080fd5b506101ac60048035906024803561ffff1691604435918201910135610ee1565b34801561056a57600080fd5b506101ac64ffffffffff60043516610f32565b34801561058957600080fd5b50610494610fb1565b34801561059e57600080fd5b50610494610fc5565b3480156105b357600080fd5b506101ac600160a060020a0360043516610fd4565b600354600160a060020a031633146105df57600080fd5b6105e761111b565b565b3360009081526020819052604090205460ff16151561060757600080fd5b600160a060020a03166000908152602081905260409020805460ff19169055565b3360009081526020819052604090205460ff16151561064657600080fd5b61064f82610f32565b61065881610f32565b50506006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b3360009081526020819052604081205460ff1615156106a757600080fd5b82905080600160a060020a0316634d6a813a6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156106e857600080fd5b505af11580156106fc573d6000803e3d6000fd5b505050506040513d602081101561071257600080fd5b5051151561071f57600080fd5b6002805474ffffffffffffffffffffffffffffffffffffffff001916610100600160a060020a03938416021790556003805473ffffffffffffffffffffffffffffffffffffffff19169290911691909117905550565b600160a060020a031660009081526020819052604090205460ff1690565b61079c33610775565b806107b657506002546101009004600160a060020a031633145b806107cb5750600354600160a060020a031633145b15156105df57600080fd5b3360009081526020819052604090205460ff1615156107f457600080fd5b60025460ff16151561080557600080fd5b6002805460ff191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b3360009081526020819052604090205460ff16151561085857600080fd5b604080517fa22cb465000000000000000000000000000000000000000000000000000000008152336004820152600160248201529051600160a060020a0383169163a22cb46591604480830192600092919082900301818387803b1580156108bf57600080fd5b505af11580156108d3573d6000803e3d6000fd5b5050505050565b3360009081526020819052604081205460ff1615156108f857600080fd5b5060005b8181101561096257600483838381811061091257fe5b835460018181018655600095865260209586902060068084049091018054600592909406919091026101000a64ffffffffff979094029590950135861683029290950219161790915550016108fc565b505050565b60025460ff1681565b3360009081526020819052604090205460ff16151561098e57600080fd5b6004805460001981019081106109a057fe5b90600052602060002090600691828204019190066005029054906101000a900464ffffffffff1660048264ffffffffff168154811015156109dd57fe5b90600052602060002090600691828204019190066005026101000a81548164ffffffffff021916908364ffffffffff1602179055506004805480919060019003610a279190611833565b5050565b600160a060020a03811660009081526001602052604081205460ff1680610a6a5750600160a060020a03821660009081526020819052604090205460ff165b92915050565b3360009081526020819052604090205460ff161515610a8e57600080fd5b600160a060020a0381161515610aa357600080fd5b600160a060020a03166000908152602081905260409020805460ff19166001179055565b6000610ad233610a2b565b1515610add57600080fd5b610ae8848484611166565b90505b9392505050565b60055481565b3360009081526020819052604090205460ff161515610b1657600080fd5b60025460ff1615610b2657600080fd5b6002805460ff191660011790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b3360009081526020819052604090205460ff161515610b7c57600080fd5b600254604080517f5a3f88f000000000000000000000000000000000000000000000000000000000815264ffffffffff8616600482015261ffff841660248201529051610100909204600160a060020a031691635a3f88f09160448082019260009290919082900301818387803b158015610bf657600080fd5b505af1158015610c0a573d6000803e3d6000fd5b5050600254604080517fe1af915d00000000000000000000000000000000000000000000000000000000815264ffffffffff88166004820152602481018790529051610100909204600160a060020a0316935063e1af915d925060448082019260009290919082900301818387803b158015610c8557600080fd5b505af1158015610c99573d6000803e3d6000fd5b50505050505050565b6004805482908110610cb057fe5b9060005260206000209060069182820401919006600502915054906101000a900464ffffffffff1681565b6000610ce633610a2b565b1515610cf157600080fd5b61ffff831615610d0057600080fd5b610ae8848361118f565b3360009081526020819052604090205460ff161515610d2857600080fd5b600254604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815233600482015264ffffffffff841660248201529051610100909204600160a060020a03169163a9059cbb9160448082019260009290919082900301818387803b1580156108bf57600080fd5b60015b90565b6002546101009004600160a060020a0316331461019257600080fd5b600354600160a060020a031681565b3360009081526020819052604090205460ff161515610ded57600080fd5b600160a060020a0381161515610e0257600080fd5b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b3360009081526020819052604090205460ff161515610e4757600080fd5b6000303111156105e7576040513390303180156108fc02916000818181858888f19350505050158015610e7e573d6000803e3d6000fd5b50565b6000610e8c33610a2b565b1515610e9757600080fd5b610ae884848461129e565b3360009081526020819052604090205460ff161515610ec057600080fd5b600160a060020a03166000908152600160205260409020805460ff19169055565b6000610eec33610a2b565b1515610ef757600080fd5b5060005b818110156108d357610f298585858585818110610f1457fe5b90506020020135600160a060020a0316611166565b50600101610efb565b3360009081526020819052604090205460ff161515610f5057600080fd5b6004805460018101825560009190915260068082047f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01805464ffffffffff948516600593909406929092026101000a928302939092021916919091179055565b6002546101009004600160a060020a031681565b600654600160a060020a031681565b3360009081526020819052604081205460ff161515610ff257600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561105357600080fd5b505af1158015611067573d6000803e3d6000fd5b505050506040513d602081101561107d57600080fd5b5051604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390529051919250600160a060020a0384169163a9059cbb916044808201926020929091908290030181600087803b1580156110eb57600080fd5b505af11580156110ff573d6000803e3d6000fd5b505050506040513d602081101561111557600080fd5b50505050565b6000303111156105e757600254604051600160a060020a036101009092049190911690303180156108fc02916000818181858888f19350505050158015610e7e573d6000803e3d6000fd5b600061ffff831615156111845761117d848361118f565b9050610aeb565b61117d84848461129e565b600654604080517f210fcbf600000000000000000000000000000000000000000000000000000000815260048101859052600160a060020a0384811660248301529151600093929092169163210fcbf691604480820192869290919082900301818387803b15801561120057600080fd5b505af1158015611214573d6000803e3d6000fd5b50505050600260019054906101000a9004600160a060020a0316600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561126b57600080fd5b505af115801561127f573d6000803e3d6000fd5b505050506040513d602081101561129557600080fd5b50519392505050565b60008060006112ab6117df565b91506112b56117df565b600254604080517fc479142100000000000000000000000000000000000000000000000000000000815264ffffffffff861660048201526000602482018190529151939450610100909204600160a060020a03169263c479142192604480820193929182900301818387803b15801561132d57600080fd5b505af1158015611341573d6000803e3d6000fd5b5050600254604080517fc479142100000000000000000000000000000000000000000000000000000000815264ffffffffff861660048201526000602482018190529151610100909304600160a060020a0316945063c479142193506044808201939182900301818387803b1580156113b957600080fd5b505af11580156113cd573d6000803e3d6000fd5b5050600254604080517fcf7e69f800000000000000000000000000000000000000000000000000000000815264ffffffffff871660048201526000602482018190529151610100909304600160a060020a0316945063cf7e69f893506044808201939182900301818387803b15801561144557600080fd5b505af1158015611459573d6000803e3d6000fd5b5050600254604080517fcf7e69f800000000000000000000000000000000000000000000000000000000815264ffffffffff861660048201526000602482018190529151610100909304600160a060020a0316945063cf7e69f893506044808201939182900301818387803b1580156114d157600080fd5b505af11580156114e5573d6000803e3d6000fd5b5050600254604080517fc30bc5ef00000000000000000000000000000000000000000000000000000000815264ffffffffff8781166004830152861660248201529051610100909204600160a060020a0316935063c30bc5ef92506044808201926020929091908290030181600087803b15801561156257600080fd5b505af1158015611576573d6000803e3d6000fd5b505050506040513d602081101561158c57600080fd5b5051600254604080517fcf7e69f800000000000000000000000000000000000000000000000000000000815264ffffffffff8416600482015261ffff891660248201529051929550610100909104600160a060020a03169163cf7e69f89160448082019260009290919082900301818387803b15801561160b57600080fd5b505af115801561161f573d6000803e3d6000fd5b5050600254604080517f5a3f88f000000000000000000000000000000000000000000000000000000000815264ffffffffff8816600482015261ffff8a1660248201529051610100909204600160a060020a03169350635a3f88f0925060448082019260009290919082900301818387803b15801561169d57600080fd5b505af11580156116b1573d6000803e3d6000fd5b5050600254604080517fe1af915d00000000000000000000000000000000000000000000000000000000815264ffffffffff88166004820152602481018b90529051610100909204600160a060020a0316935063e1af915d925060448082019260009290919082900301818387803b15801561172c57600080fd5b505af1158015611740573d6000803e3d6000fd5b5050600254604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a03898116600483015264ffffffffff891660248301529151610100909304909116935063a9059cbb925060448082019260009290919082900301818387803b1580156117be57600080fd5b505af11580156117d2573d6000803e3d6000fd5b5050505050509392505050565b600060046005548154811015156117f257fe5b600091825260209091206006808304909101546005805460010180825560045493909406026101000a900464ffffffffff16925011610da157600060055590565b8154818355818111156109625760008381526020902061096291610da19160066005928301819004820192860104015b808211156118775760008155600101611863565b50905600a165627a7a72305820ecdec03e9e70c0728410da6a26f17739c4ea33081cff9e06936751b706af18250029
Deployed Bytecode
0x6080604052600436106101925763ffffffff60e060020a600035041663119523698114610197578063173825d9146101ae5780631b5cb066146101cf5780632d34ba79146102005780632f54bf6e146102275780633ccfd60b1461025c5780633f4ba83a1461027157806346195c12146102865780635368672e146102a75780635c975abb146102c75780636cc6b419146102dc5780636d70f7ae146102fb5780637065cb481461031c5780637895fe981461033d5780637948690a146103825780638456cb59146103a9578063897efe5c146103be578063898572a6146103e757806389bdf45b146103ff578063940bb2171461042a57806394a89233146104495780639652713e1461045e578063976ef75b1461047f5780639870d7fe146104b0578063a055d4551461045e578063a0ef91df146104d1578063ab69e5ea146104e6578063ac8a584a14610511578063bb620e3c14610532578063c6b72a1f14610286578063d116f5491461055e578063e80db5db1461057d578063ec55688914610592578063f4f3b200146105a7575b600080fd5b3480156101a357600080fd5b506101ac6105c8565b005b3480156101ba57600080fd5b506101ac600160a060020a03600435166105e9565b3480156101db57600080fd5b506101ac600160a060020a036004351664ffffffffff60243581169060443516610628565b34801561020c57600080fd5b506101ac600160a060020a0360043581169060243516610689565b34801561023357600080fd5b50610248600160a060020a0360043516610775565b604080519115158252519081900360200190f35b34801561026857600080fd5b506101ac610793565b34801561027d57600080fd5b506101ac6107d6565b34801561029257600080fd5b506101ac600160a060020a036004351661083a565b3480156102b357600080fd5b506101ac60048035602481019101356108da565b3480156102d357600080fd5b50610248610967565b3480156102e857600080fd5b506101ac64ffffffffff60043516610970565b34801561030757600080fd5b50610248600160a060020a0360043516610a2b565b34801561032857600080fd5b506101ac600160a060020a0360043516610a70565b34801561034957600080fd5b5061036860043561ffff60243516600160a060020a0360443516610ac7565b6040805164ffffffffff9092168252519081900360200190f35b34801561038e57600080fd5b50610397610af2565b60408051918252519081900360200190f35b3480156103b557600080fd5b506101ac610af8565b3480156103ca57600080fd5b506101ac64ffffffffff6004351660243561ffff60443516610b5e565b3480156103f357600080fd5b50610368600435610ca2565b34801561040b57600080fd5b5061036860043561ffff60243516600160a060020a0360443516610cdb565b34801561043657600080fd5b506101ac64ffffffffff60043516610d0a565b34801561045557600080fd5b50610248610d9e565b6101ac64ffffffffff60043516602435600160a060020a0360443516610da4565b34801561048b57600080fd5b50610494610dc0565b60408051600160a060020a039092168252519081900360200190f35b3480156104bc57600080fd5b506101ac600160a060020a0360043516610dcf565b3480156104dd57600080fd5b506101ac610e29565b3480156104f257600080fd5b5061036860043561ffff60243516600160a060020a0360443516610e81565b34801561051d57600080fd5b506101ac600160a060020a0360043516610ea2565b34801561053e57600080fd5b506101ac60048035906024803561ffff1691604435918201910135610ee1565b34801561056a57600080fd5b506101ac64ffffffffff60043516610f32565b34801561058957600080fd5b50610494610fb1565b34801561059e57600080fd5b50610494610fc5565b3480156105b357600080fd5b506101ac600160a060020a0360043516610fd4565b600354600160a060020a031633146105df57600080fd5b6105e761111b565b565b3360009081526020819052604090205460ff16151561060757600080fd5b600160a060020a03166000908152602081905260409020805460ff19169055565b3360009081526020819052604090205460ff16151561064657600080fd5b61064f82610f32565b61065881610f32565b50506006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b3360009081526020819052604081205460ff1615156106a757600080fd5b82905080600160a060020a0316634d6a813a6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156106e857600080fd5b505af11580156106fc573d6000803e3d6000fd5b505050506040513d602081101561071257600080fd5b5051151561071f57600080fd5b6002805474ffffffffffffffffffffffffffffffffffffffff001916610100600160a060020a03938416021790556003805473ffffffffffffffffffffffffffffffffffffffff19169290911691909117905550565b600160a060020a031660009081526020819052604090205460ff1690565b61079c33610775565b806107b657506002546101009004600160a060020a031633145b806107cb5750600354600160a060020a031633145b15156105df57600080fd5b3360009081526020819052604090205460ff1615156107f457600080fd5b60025460ff16151561080557600080fd5b6002805460ff191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b3360009081526020819052604090205460ff16151561085857600080fd5b604080517fa22cb465000000000000000000000000000000000000000000000000000000008152336004820152600160248201529051600160a060020a0383169163a22cb46591604480830192600092919082900301818387803b1580156108bf57600080fd5b505af11580156108d3573d6000803e3d6000fd5b5050505050565b3360009081526020819052604081205460ff1615156108f857600080fd5b5060005b8181101561096257600483838381811061091257fe5b835460018181018655600095865260209586902060068084049091018054600592909406919091026101000a64ffffffffff979094029590950135861683029290950219161790915550016108fc565b505050565b60025460ff1681565b3360009081526020819052604090205460ff16151561098e57600080fd5b6004805460001981019081106109a057fe5b90600052602060002090600691828204019190066005029054906101000a900464ffffffffff1660048264ffffffffff168154811015156109dd57fe5b90600052602060002090600691828204019190066005026101000a81548164ffffffffff021916908364ffffffffff1602179055506004805480919060019003610a279190611833565b5050565b600160a060020a03811660009081526001602052604081205460ff1680610a6a5750600160a060020a03821660009081526020819052604090205460ff165b92915050565b3360009081526020819052604090205460ff161515610a8e57600080fd5b600160a060020a0381161515610aa357600080fd5b600160a060020a03166000908152602081905260409020805460ff19166001179055565b6000610ad233610a2b565b1515610add57600080fd5b610ae8848484611166565b90505b9392505050565b60055481565b3360009081526020819052604090205460ff161515610b1657600080fd5b60025460ff1615610b2657600080fd5b6002805460ff191660011790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b3360009081526020819052604090205460ff161515610b7c57600080fd5b600254604080517f5a3f88f000000000000000000000000000000000000000000000000000000000815264ffffffffff8616600482015261ffff841660248201529051610100909204600160a060020a031691635a3f88f09160448082019260009290919082900301818387803b158015610bf657600080fd5b505af1158015610c0a573d6000803e3d6000fd5b5050600254604080517fe1af915d00000000000000000000000000000000000000000000000000000000815264ffffffffff88166004820152602481018790529051610100909204600160a060020a0316935063e1af915d925060448082019260009290919082900301818387803b158015610c8557600080fd5b505af1158015610c99573d6000803e3d6000fd5b50505050505050565b6004805482908110610cb057fe5b9060005260206000209060069182820401919006600502915054906101000a900464ffffffffff1681565b6000610ce633610a2b565b1515610cf157600080fd5b61ffff831615610d0057600080fd5b610ae8848361118f565b3360009081526020819052604090205460ff161515610d2857600080fd5b600254604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815233600482015264ffffffffff841660248201529051610100909204600160a060020a03169163a9059cbb9160448082019260009290919082900301818387803b1580156108bf57600080fd5b60015b90565b6002546101009004600160a060020a0316331461019257600080fd5b600354600160a060020a031681565b3360009081526020819052604090205460ff161515610ded57600080fd5b600160a060020a0381161515610e0257600080fd5b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b3360009081526020819052604090205460ff161515610e4757600080fd5b6000303111156105e7576040513390303180156108fc02916000818181858888f19350505050158015610e7e573d6000803e3d6000fd5b50565b6000610e8c33610a2b565b1515610e9757600080fd5b610ae884848461129e565b3360009081526020819052604090205460ff161515610ec057600080fd5b600160a060020a03166000908152600160205260409020805460ff19169055565b6000610eec33610a2b565b1515610ef757600080fd5b5060005b818110156108d357610f298585858585818110610f1457fe5b90506020020135600160a060020a0316611166565b50600101610efb565b3360009081526020819052604090205460ff161515610f5057600080fd5b6004805460018101825560009190915260068082047f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01805464ffffffffff948516600593909406929092026101000a928302939092021916919091179055565b6002546101009004600160a060020a031681565b600654600160a060020a031681565b3360009081526020819052604081205460ff161515610ff257600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561105357600080fd5b505af1158015611067573d6000803e3d6000fd5b505050506040513d602081101561107d57600080fd5b5051604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390529051919250600160a060020a0384169163a9059cbb916044808201926020929091908290030181600087803b1580156110eb57600080fd5b505af11580156110ff573d6000803e3d6000fd5b505050506040513d602081101561111557600080fd5b50505050565b6000303111156105e757600254604051600160a060020a036101009092049190911690303180156108fc02916000818181858888f19350505050158015610e7e573d6000803e3d6000fd5b600061ffff831615156111845761117d848361118f565b9050610aeb565b61117d84848461129e565b600654604080517f210fcbf600000000000000000000000000000000000000000000000000000000815260048101859052600160a060020a0384811660248301529151600093929092169163210fcbf691604480820192869290919082900301818387803b15801561120057600080fd5b505af1158015611214573d6000803e3d6000fd5b50505050600260019054906101000a9004600160a060020a0316600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561126b57600080fd5b505af115801561127f573d6000803e3d6000fd5b505050506040513d602081101561129557600080fd5b50519392505050565b60008060006112ab6117df565b91506112b56117df565b600254604080517fc479142100000000000000000000000000000000000000000000000000000000815264ffffffffff861660048201526000602482018190529151939450610100909204600160a060020a03169263c479142192604480820193929182900301818387803b15801561132d57600080fd5b505af1158015611341573d6000803e3d6000fd5b5050600254604080517fc479142100000000000000000000000000000000000000000000000000000000815264ffffffffff861660048201526000602482018190529151610100909304600160a060020a0316945063c479142193506044808201939182900301818387803b1580156113b957600080fd5b505af11580156113cd573d6000803e3d6000fd5b5050600254604080517fcf7e69f800000000000000000000000000000000000000000000000000000000815264ffffffffff871660048201526000602482018190529151610100909304600160a060020a0316945063cf7e69f893506044808201939182900301818387803b15801561144557600080fd5b505af1158015611459573d6000803e3d6000fd5b5050600254604080517fcf7e69f800000000000000000000000000000000000000000000000000000000815264ffffffffff861660048201526000602482018190529151610100909304600160a060020a0316945063cf7e69f893506044808201939182900301818387803b1580156114d157600080fd5b505af11580156114e5573d6000803e3d6000fd5b5050600254604080517fc30bc5ef00000000000000000000000000000000000000000000000000000000815264ffffffffff8781166004830152861660248201529051610100909204600160a060020a0316935063c30bc5ef92506044808201926020929091908290030181600087803b15801561156257600080fd5b505af1158015611576573d6000803e3d6000fd5b505050506040513d602081101561158c57600080fd5b5051600254604080517fcf7e69f800000000000000000000000000000000000000000000000000000000815264ffffffffff8416600482015261ffff891660248201529051929550610100909104600160a060020a03169163cf7e69f89160448082019260009290919082900301818387803b15801561160b57600080fd5b505af115801561161f573d6000803e3d6000fd5b5050600254604080517f5a3f88f000000000000000000000000000000000000000000000000000000000815264ffffffffff8816600482015261ffff8a1660248201529051610100909204600160a060020a03169350635a3f88f0925060448082019260009290919082900301818387803b15801561169d57600080fd5b505af11580156116b1573d6000803e3d6000fd5b5050600254604080517fe1af915d00000000000000000000000000000000000000000000000000000000815264ffffffffff88166004820152602481018b90529051610100909204600160a060020a0316935063e1af915d925060448082019260009290919082900301818387803b15801561172c57600080fd5b505af1158015611740573d6000803e3d6000fd5b5050600254604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a03898116600483015264ffffffffff891660248301529151610100909304909116935063a9059cbb925060448082019260009290919082900301818387803b1580156117be57600080fd5b505af11580156117d2573d6000803e3d6000fd5b5050505050509392505050565b600060046005548154811015156117f257fe5b600091825260209091206006808304909101546005805460010180825560045493909406026101000a900464ffffffffff16925011610da157600060055590565b8154818355818111156109625760008381526020902061096291610da19160066005928301819004820192860104015b808211156118775760008155600101611863565b50905600a165627a7a72305820ecdec03e9e70c0728410da6a26f17739c4ea33081cff9e06936751b706af18250029
Deployed Bytecode Sourcemap
31681:3615:0:-;;;;;;;;;-1:-1:-1;;;31681:3615:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31259:74;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31259:74:0;;;;;;26102:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26102:109:0;-1:-1:-1;;;;;26102:109:0;;;;;31832:202;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;31832:202:0;-1:-1:-1;;;;;31832:202:0;;;;;;;;;;;;;;29352:311;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;29352:311:0;-1:-1:-1;;;;;29352:311:0;;;;;;;;;;25832:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;25832:104:0;-1:-1:-1;;;;;25832:104:0;;;;;;;;;;;;;;;;;;;;;;;30845:225;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30845:225:0;;;;28337:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28337:105:0;;;;26964:139;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26964:139:0;-1:-1:-1;;;;;26964:139:0;;;;;33753:194;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;33753:194:0;;;;;;;;;;;;27654:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27654:26:0;;;;33595:150;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;33595:150:0;;;;;;;26313:133;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26313:133:0;-1:-1:-1;;;;;26313:133:0;;;;;25944:150;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;25944:150:0;-1:-1:-1;;;;;25944:150:0;;;;;32042:192;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;32042:192:0;;;;;;;-1:-1:-1;;;;;32042:192:0;;;;;;;;;;;;;;;;;;;;;;;;31762:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31762:23:0;;;;;;;;;;;;;;;;;;;;28139:103;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28139:103:0;;;;34942:218;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;34942:218:0;;;;;;;;;;;;;31732:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;31732:23:0;;;;;32452:225;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;32452:225:0;;;;;;;-1:-1:-1;;;;;32452:225:0;;;;;35168:125;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;35168:125:0;;;;;;;28598:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28598:91:0;;;;31444:103;;;;;;;;-1:-1:-1;;;;;31444:103:0;;;;;28795:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28795:30:0;;;;;;;;-1:-1:-1;;;;;28795:30:0;;;;;;;;;;;;;;26454:165;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26454:165:0;-1:-1:-1;;;;;26454:165:0;;;;;27261:174;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27261:174:0;;;;32242:202;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;32242:202:0;;;;;;;-1:-1:-1;;;;;32242:202:0;;;;;26627:121;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26627:121:0;-1:-1:-1;;;;;26627:121:0;;;;;32685:237;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;32685:237:0;;;;;;;;;;;;;;;;;;;;;33484:103;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;33484:103:0;;;;;;;28750:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28750:38:0;;;;31792:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31792:31:0;;;;26756:200;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26756:200:0;-1:-1:-1;;;;;26756:200:0;;;;;31259:74;29060:15;;-1:-1:-1;;;;;29060:15:0;29046:10;:29;29038:38;;;;;;31314:11;:9;:11::i;:::-;31259:74::o;26102:109::-;25792:10;25779:12;:24;;;;;;;;;;;;;25771:33;;;;;;;;-1:-1:-1;;;;;26179:23:0;:12;:23;;;;;;;;;;26172:31;;-1:-1:-1;;26172:31:0;;;26102:109::o;31832:202::-;25792:10;25779:12;:24;;;;;;;;;;;;;25771:33;;;;;;;;31952:19;31962:8;31952:9;:19::i;:::-;31982;31992:8;31982:9;:19::i;:::-;-1:-1:-1;;32012:5:0;:14;;-1:-1:-1;;32012:14:0;-1:-1:-1;;;;;32012:14:0;;;;;;;;;;31832:202::o;29352:311::-;25792:10;29443:36;25779:24;;;;;;;;;;;;;25771:33;;;;;;;;29501:12;29443:71;;29533:17;-1:-1:-1;;;;;29533:29:0;;:31;;;;;-1:-1:-1;;;29533:31:0;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29533:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29533:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29533:31:0;29525:40;;;;;;;;29576:12;:32;;-1:-1:-1;;29576:32:0;;-1:-1:-1;;;;;29576:32:0;;;;;;;29621:15;:34;;-1:-1:-1;;29621:34:0;;;;;;;;;;;-1:-1:-1;29352:311:0:o;25832:104::-;-1:-1:-1;;;;;25909:19:0;25885:4;25909:19;;;;;;;;;;;;;;25832:104::o;30845:225::-;30912:19;30920:10;30912:7;:19::i;:::-;:71;;;-1:-1:-1;30970:12:0;;;;;-1:-1:-1;;;;;30970:12:0;30948:10;:35;30912:71;:117;;;-1:-1:-1;31014:15:0;;-1:-1:-1;;;;;31014:15:0;31000:10;:29;30912:117;30890:150;;;;;;;28337:105;25792:10;25779:12;:24;;;;;;;;;;;;;25771:33;;;;;;;;28020:6;;;;28012:15;;;;;;;;28395:6;:14;;-1:-1:-1;;28395:14:0;;;28425:9;;;;28404:5;;28425:9;28337:105::o;26964:139::-;25792:10;25779:12;:24;;;;;;;;;;;;;25771:33;;;;;;;;27045:50;;;;;;27078:10;27045:50;;;;27090:4;27045:50;;;;;;-1:-1:-1;;;;;27045:32:0;;;;;:50;;;;;-1:-1:-1;;27045:50:0;;;;;;;-1:-1:-1;27045:32:0;:50;;;5:2:-1;;;;30:1;27;20:12;5:2;27045:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27045:50:0;;;;26964:139;:::o;33753:194::-;25792:10;33835:6;25779:24;;;;;;;;;;;;;25771:33;;;;;;;;-1:-1:-1;33844:1:0;33830:110;33847:22;;;33830:110;;;33900:7;33913:11;;33925:1;33913:14;;;;;;;27:10:-1;;39:1;23:18;;;45:23;;-1:-1;33900:28:0;;;33913:14;33900:28;;;;;;;;;;;;;;;;;;;;;;;;33913:14;;;;;;;;;;;;33900:28;;;;;;;;;;;;-1:-1:-1;33871:3:0;33830:110;;;33753:194;;;:::o;27654:26::-;;;;;;:::o;33595:150::-;25792:10;25779:12;:24;;;;;;;;;;;;;25771:33;;;;;;;;33685:7;33693:14;;-1:-1:-1;;33693:16:0;;;33685:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33667:7;33675:6;33667:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;33721:7;:16;;;;;;;;;;;;:::i;:::-;;33595:150;:::o;26313:133::-;-1:-1:-1;;;;;26393:22:0;;26369:4;26393:22;;;:15;:22;;;;;;;;;:45;;-1:-1:-1;;;;;;26419:19:0;;:12;:19;;;;;;;;;;;;;26393:45;26386:52;26313:133;-1:-1:-1;;26313:133:0:o;25944:150::-;25792:10;25779:12;:24;;;;;;;;;;;;;25771:33;;;;;;;;-1:-1:-1;;;;;26019:23:0;;;;26011:32;;;;;;-1:-1:-1;;;;;26056:23:0;:12;:23;;;;;;;;;;:30;;-1:-1:-1;;26056:30:0;26082:4;26056:30;;;25944:150::o;32042:192::-;32148:13;26262:22;26273:10;26262;:22::i;:::-;26254:31;;;;;;;;32186:40;32196:7;32205:11;32218:7;32186:9;:40::i;:::-;32179:47;;26296:1;32042:192;;;;;:::o;31762:23::-;;;;:::o;28139:103::-;25792:10;25779:12;:24;;;;;;;;;;;;;25771:33;;;;;;;;27842:6;;;;27841:7;27833:16;;;;;;28198:6;:13;;-1:-1:-1;;28198:13:0;28207:4;28198:13;;;28227:7;;;;28198:6;;28227:7;28139:103::o;34942:218::-;25792:10;25779:12;:24;;;;;;;;;;;;;25771:33;;;;;;;;35046:12;;:52;;;;;;;;;;;;;;;;;;;;;;:12;;;;-1:-1:-1;;;;;35046:12:0;;:29;;:52;;;;;-1:-1:-1;;35046:52:0;;;;;;;;-1:-1:-1;35046:12:0;:52;;;5:2:-1;;;;30:1;27;20:12;5:2;35046:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;35109:12:0;;:43;;;;;;;;;;;;;;;;;;;;;:12;;;;-1:-1:-1;;;;;35109:12:0;;-1:-1:-1;35109:24:0;;-1:-1:-1;35109:43:0;;;;;-1:-1:-1;;35109:43:0;;;;;;;;-1:-1:-1;35109:12:0;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;35109:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;35109:43:0;;;;34942:218;;;:::o;31732:23::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;32452:225::-;32563:13;26262:22;26273:10;26262;:22::i;:::-;26254:31;;;;;;;;32602:16;;;;32594:25;;;;;;32637:32;32652:7;32661;32637:14;:32::i;35168:125::-;25792:10;25779:12;:24;;;;;;;;;;;;;25771:33;;;;;;;;35242:12;;:43;;;;;;35264:10;35242:43;;;;;;;;;;;;;:12;;;;-1:-1:-1;;;;;35242:12:0;;:21;;:43;;;;;-1:-1:-1;;35242:43:0;;;;;;;;-1:-1:-1;35242:12:0;:43;;;5:2:-1;;;;30:1;27;20:12;28598:91:0;28677:4;28598:91;;:::o;31444:103::-;28962:12;;;;;-1:-1:-1;;;;;28962:12:0;28940:10;:35;28932:44;;;;;28795:30;;;-1:-1:-1;;;;;28795:30:0;;:::o;26454:165::-;25792:10;25779:12;:24;;;;;;;;;;;;;25771:33;;;;;;;;-1:-1:-1;;;;;26535:26:0;;;;26527:35;;;;;;-1:-1:-1;;;;;26575:29:0;;;;;26607:4;26575:29;;;;;;;;:36;;-1:-1:-1;;26575:36:0;;;;;;26454:165::o;27261:174::-;25792:10;25779:12;:24;;;;;;;;;;;;;25771:33;;;;;;;;27347:1;27331:4;27323:21;:25;27319:109;;;27374:42;;:10;;27402:4;27394:21;27374:42;;;;;;;;;27394:21;27374:10;:42;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27374:42:0;27261:174::o;32242:202::-;32353:13;26262:22;26273:10;26262;:22::i;:::-;26254:31;;;;;;;;32391:45;32406:7;32415:11;32428:7;32391:14;:45::i;26627:121::-;25792:10;25779:12;:24;;;;;;;;;;;;;25771:33;;;;;;;;-1:-1:-1;;;;;26710:29:0;;;;;:15;:29;;;;;26703:37;;-1:-1:-1;;26703:37:0;;;26627:121::o;32685:237::-;32799:6;26262:22;26273:10;26262;:22::i;:::-;26254:31;;;;;;;;-1:-1:-1;32808:1:0;32794:121;32811:18;;;32794:121;;;32860:43;32870:7;32879:11;32892:7;;32900:1;32892:10;;;;;;;;;;;;;-1:-1:-1;;;;;32892:10:0;32860:9;:43::i;:::-;-1:-1:-1;32831:3:0;;32794:121;;33484:103;25792:10;25779:12;:24;;;;;;;;;;;;;25771:33;;;;;;;;33555:7;27:10:-1;;39:1;23:18;;45:23;;-1:-1;33555:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33484:103::o;28750:38::-;;;;;;-1:-1:-1;;;;;28750:38:0;;:::o;31792:31::-;;;-1:-1:-1;;;;;31792:31:0;;:::o;26756:200::-;25792:10;26836:15;25779:24;;;;;;;;;;;;;25771:33;;;;;;;;26854:39;;;;;;26887:4;26854:39;;;;;;-1:-1:-1;;;;;26854:24:0;;;;;:39;;;;;;;;;;;;;;-1:-1:-1;26854:24:0;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;26854:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26854:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26854:39:0;26904:44;;;;;;26928:10;26904:44;;;;;;;;;;;;26854:39;;-1:-1:-1;;;;;;26904:23:0;;;;;:44;;;;;26854:39;;26904:44;;;;;;;;-1:-1:-1;26904:23:0;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;26904:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26904:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;26756:200:0:o;31078:173::-;31152:1;31136:4;31128:21;:25;31124:120;;;31187:12;;31179:53;;-1:-1:-1;;;;;31187:12:0;;;;;;;;;31218:4;31210:21;31179:53;;;;;;;;;31210:21;31187:12;31179:53;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;32930:334:0;33018:13;33053:16;;;;33049:208;;;33102:32;33117:7;33126;33102:14;:32::i;:::-;33095:39;;;;33049:208;33199:45;33214:7;33223:11;33236:7;33199:14;:45::i;33272:204::-;33376:5;;:40;;;;;;;;;;;;-1:-1:-1;;;;;33376:40:0;;;;;;;;;33345:13;;33376:5;;;;;:22;;:40;;;;;33345:13;;33376:40;;;;;;;;33345:13;33376:5;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;33376:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33376:40:0;;;;33441:12;;;;;;;;;-1:-1:-1;;;;;33441:12:0;-1:-1:-1;;;;;33441:24:0;;:26;;;;;-1:-1:-1;;;33441:26:0;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33441:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33441:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33441:26:0;;33272:204;-1:-1:-1;;;33272:204:0:o;34195:739::-;34288:13;34319:12;34361;34334:16;:14;:16::i;:::-;34319:31;;34376:16;:14;:16::i;:::-;34405:12;;:44;;;;;;;;;;;;;-1:-1:-1;34405:44:0;;;;;;;;34361:31;;-1:-1:-1;34405:12:0;;;;-1:-1:-1;;;;;34405:12:0;;:34;;:44;;;;;-1:-1:-1;34405:44:0;;;;;;-1:-1:-1;34405:12:0;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;34405:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;34460:12:0;;:44;;;;;;;;;;;;;-1:-1:-1;34460:44:0;;;;;;;;:12;;;;-1:-1:-1;;;;;34460:12:0;;-1:-1:-1;34460:34:0;;-1:-1:-1;34460:44:0;;;;;;;;;;;-1:-1:-1;34460:12:0;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;34460:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;34515:12:0;;:42;;;;;;;;;;;;;-1:-1:-1;34515:42:0;;;;;;;;:12;;;;-1:-1:-1;;;;;34515:12:0;;-1:-1:-1;34515:32:0;;-1:-1:-1;34515:42:0;;;;;;;;;;;-1:-1:-1;34515:12:0;:42;;;5:2:-1;;;;30:1;27;20:12;5:2;34515:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;34568:12:0;;:42;;;;;;;;;;;;;-1:-1:-1;34568:42:0;;;;;;;;:12;;;;-1:-1:-1;;;;;34568:12:0;;-1:-1:-1;34568:32:0;;-1:-1:-1;34568:42:0;;;;;;;;;;;-1:-1:-1;34568:12:0;:42;;;5:2:-1;;;;30:1;27;20:12;5:2;34568:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;34632:12:0;;:36;;;;;;;;;;;;;;;;;;;;;;:12;;;;-1:-1:-1;;;;;34632:12:0;;-1:-1:-1;34632:22:0;;-1:-1:-1;34632:36:0;;;;;;;;;;;;;;;-1:-1:-1;34632:12:0;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;34632:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;34632:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;34632:36:0;34681:12;;:53;;;;;;;;;;;;;;;;;;;;;;34632:36;;-1:-1:-1;34681:12:0;;;;-1:-1:-1;;;;;34681:12:0;;:32;;:53;;;;;-1:-1:-1;;34681:53:0;;;;;;;;-1:-1:-1;34681:12:0;:53;;;5:2:-1;;;;30:1;27;20:12;5:2;34681:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;34745:12:0;;:50;;;;;;;;;;;;;;;;;;;;;;:12;;;;-1:-1:-1;;;;;34745:12:0;;-1:-1:-1;34745:29:0;;-1:-1:-1;34745:50:0;;;;;-1:-1:-1;;34745:50:0;;;;;;;;-1:-1:-1;34745:12:0;:50;;;5:2:-1;;;;30:1;27;20:12;5:2;34745:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;34808:12:0;;:41;;;;;;;;;;;;;;;;;;;;;:12;;;;-1:-1:-1;;;;;34808:12:0;;-1:-1:-1;34808:24:0;;-1:-1:-1;34808:41:0;;;;;-1:-1:-1;;34808:41:0;;;;;;;;-1:-1:-1;34808:12:0;:41;;;5:2:-1;;;;30:1;27;20:12;5:2;34808:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;34862:12:0;;:38;;;;;;-1:-1:-1;;;;;34862:38:0;;;;;;;;;;;;;;;;:12;;;;;;;;-1:-1:-1;34862:21:0;;-1:-1:-1;34862:38:0;;;;;-1:-1:-1;;34862:38:0;;;;;;;;-1:-1:-1;34862:12:0;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;34862:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;34195:739:0;;;;;;;:::o;33955:232::-;33999:13;34039:7;34047:11;;34039:20;;;;;;;;;;;;;;;;;;;;;;;;;;;34070:13;;;;;;;34113:7;:14;34039:20;;;;;;;;;;;;-1:-1:-1;;34094:86:0;;34167:1;34153:11;:15;33955:232;:::o;31681:3615::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Swarm Source
bzzr://ecdec03e9e70c0728410da6a26f17739c4ea33081cff9e06936751b706af1825
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
MATIC | 100.00% | $0.519782 | 0.1 | $0.051978 |
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.