Sponsored:   Color - Revolutionizing the Dapp Ecosystem, Bounty & Airdrop, Get 240,000 COL NOW!
Contract Overview
Balance: 0 Ether
Ether Value: $0
Transactions: 3 txns
 Latest 3 txns

TxHash Age From To Value [TxFee]
0xd7c94573d7b30b300a37e361046b6f19eefa9aa79cd01fc248b99f57c052f1bf68 days 12 hrs ago0xe417644420c7cf3f2194189713a3aa0541e792fb  IN   0xf43791ee9f26b92f43e82ef763bc6de35c3639840 Ether0.00062426
0x5a6df99d2f3c84cdc90db63861e0ca32ed3cfb9b1daf1126b5f063120a2d034c68 days 12 hrs ago0xe417644420c7cf3f2194189713a3aa0541e792fb  IN   0xf43791ee9f26b92f43e82ef763bc6de35c3639840 Ether0.002516595
0x6c7d4a54bc75239ba952983fcc0bf9aa7c7c14903264c08c1c369b8c0a1c565b68 days 13 hrs ago0xe417644420c7cf3f2194189713a3aa0541e792fb  IN    Contract Creation0 Ether0.019072872
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
View All
ParentTxHash Block Age From To Value
Warning: The compiled contract might be susceptible to EventStructWrongData (very low-severity) Solidity compiler bugs.

Contract Source Code Verified (Exact match)
Contract Name: AnimalFactory
Compiler Version: v0.4.24+commit.e67f0147
Optimization Enabled: No
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

/**
 * Crypto Bunny Factory
 * Buy,sell,trade and mate crypto based digital bunnies
 * 
 * Developer Team
 * Check on CryptoBunnies.com
 * 
 **/
 
pragma solidity ^0.4.23;

 
library SafeMath {
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

 function div(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b > 0); // Solidity automatically throws when dividing by 0
    uint256 c = a / b;
    assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}

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.
   */
  function Ownable() 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) onlyOwner public {
    require(newOwner != address(0));
    emit OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

}

// The ERC-721 Interface to reference the animal factory token
interface ERC721Interface {
     function totalSupply() public view returns (uint256);
     function safeTransferFrom(address _from, address _to, uint256 _tokenId);
     function burnToken(address tokenOwner, uint256 tid) ;
     function sendToken(address sendTo, uint tid, string tmeta) ;
     function getTotalTokensAgainstAddress(address ownerAddress) public constant returns (uint totalAnimals);
     function getAnimalIdAgainstAddress(address ownerAddress) public constant returns (uint[] listAnimals);
     function balanceOf(address _owner) public view returns (uint256 _balance);
     function ownerOf(uint256 _tokenId) public view returns (address _owner);
     function setAnimalMeta(uint tid, string tmeta);
}


contract AnimalFactory is Ownable
{
    //The structure defining a single animal
    struct AnimalProperties
    {
        uint id;
        string name;
        string desc;
        bool upForSale;
        uint priceForSale;
        bool upForMating;
        bool eggPhase;
        uint priceForMating;
        bool isBornByMating;
        uint parentId1;
        uint parentId2;
        uint birthdate;
        uint costumeId;
        uint generationId;
		bool isSpecial;
    }
    
    using SafeMath for uint256;
 
    // The token being sold
    ERC721Interface public token;
    
    
    //sequentially generated ids for the animals
    uint uniqueAnimalId=0;

    //mapping to show all the animal properties against a single id
    mapping(uint=>AnimalProperties)  animalAgainstId;
    
    //mapping to show how many children does a single animal has
    mapping(uint=>uint[])  childrenIdAgainstAnimalId;
    
    //the animals that have been advertised for mating
    uint[] upForMatingList;

    //the animals that have been advertised for selling
    uint[] upForSaleList;
    
    //the list of addresses that can remove animals from egg phase 
    address[] memberAddresses;

    //animal object to be used in various functions as an intermediate variable
    AnimalProperties  animalObject;

    //The owner percentages from mating and selling transactions
    uint public ownerPerThousandShareForMating = 35;
    uint public ownerPerThousandShareForBuying = 35;

    //the number of free animals an address can claim
    uint public freeAnimalsLimit = 4;
    
    //variable to show whether the contract has been paused or not
    bool public isContractPaused;

    //the fees for advertising an animal for sale and mate
    uint public priceForMateAdvertisement;
    uint public priceForSaleAdvertisement;
    
    uint public priceForBuyingCostume;

    // amount of raised money in wei
    uint256 public weiRaised;

    // Total no of bunnies created
    uint256 public totalBunniesCreated=0;

    //rate of each animal
    uint256 public weiPerAnimal = 1*10**18;
    uint[] eggPhaseAnimalIds;
    uint[] animalIdsWithPendingCostumes;

    /**
     * event for animals purchase logging
     * @param purchaser who paid for the animals
     * @param beneficiary who got the animals
     * @param value weis paid for purchase
     * @param amount of animals purchased
    */
    event AnimalsPurchased(address indexed purchaser, address indexed beneficiary, uint256 value, uint256 amount);

  
   function AnimalFactory(address _walletOwner,address _tokenAddress) public 
   { 
        require(_walletOwner != 0x0);
        owner = _walletOwner;
        isContractPaused = false;
        priceForMateAdvertisement = 1 * 10 ** 16;
        priceForSaleAdvertisement = 1 * 10 ** 16;
        priceForBuyingCostume = 1 * 10 ** 16;
        token = ERC721Interface(_tokenAddress);
    }

    /**
     * function to get animal details by id
     **/ 
    
    function getAnimalById(uint aid) public constant returns 
    (string, string,uint,uint ,uint, uint,uint)
    {
        if(animalAgainstId[aid].eggPhase==true)
        {
            return(animalAgainstId[aid].name,
            animalAgainstId[aid].desc,
            2**256 - 1,
            animalAgainstId[aid].priceForSale,
            animalAgainstId[aid].priceForMating,
            animalAgainstId[aid].parentId1,
            animalAgainstId[aid].parentId2
            );
        }
        else 
        {
            return(animalAgainstId[aid].name,
            animalAgainstId[aid].desc,
            animalAgainstId[aid].id,
            animalAgainstId[aid].priceForSale,
            animalAgainstId[aid].priceForMating,
            animalAgainstId[aid].parentId1,
            animalAgainstId[aid].parentId2
            );
        }
    }
    function getAnimalByIdVisibility(uint aid) public constant 
    returns (bool upforsale,bool upformating,bool eggphase,bool isbornbymating, 
    uint birthdate, uint costumeid, uint generationid)
    {
        return(
            animalAgainstId[aid].upForSale,
            animalAgainstId[aid].upForMating,
            animalAgainstId[aid].eggPhase,
            animalAgainstId[aid].isBornByMating,
            animalAgainstId[aid].birthdate,
            animalAgainstId[aid].costumeId,
            animalAgainstId[aid].generationId

			
            );
    }
    
     function getOwnerByAnimalId(uint aid) public constant 
    returns (address)
    {
        return token.ownerOf(aid);
            
    }
    
    /**
     * function to get all animals against an address
     **/ 
    function getAllAnimalsByAddress(address ad) public constant returns (uint[] listAnimals)
    {
        require (!isContractPaused);
        return token.getAnimalIdAgainstAddress(ad);
    }

    /**
     * claim an animal from animal factory
     **/ 
    function claimFreeAnimalFromAnimalFactory( string animalName, string animalDesc) public
    {
        require(msg.sender != 0x0);
        require (!isContractPaused);
        uint gId=0;
        //owner can claim as many free animals as he or she wants
        if (msg.sender!=owner)
        {
            require(token.getTotalTokensAgainstAddress(msg.sender)<freeAnimalsLimit);
            gId=1;
        }

        //sequentially generated animal id   
        uniqueAnimalId++;
        
        //Generating an Animal Record
        animalObject = AnimalProperties({
            id:uniqueAnimalId,
            name:animalName,
            desc:animalDesc,
            upForSale: false,
            eggPhase: false,
            priceForSale:0,
            upForMating: false,
            priceForMating:0,
            isBornByMating: false,
            parentId1:0,
            parentId2:0,
            birthdate:now,
            costumeId:0, 
            generationId:gId,
			isSpecial:false
        });
        token.sendToken(msg.sender, uniqueAnimalId,animalName);
        
        //updating the mappings to store animal information  
        animalAgainstId[uniqueAnimalId]=animalObject;
        totalBunniesCreated++;
    }
  
    /**
     * Function to buy animals from the factory in exchange for ethers
     **/ 
    function buyAnimalsFromAnimalFactory(string animalName, string animalDesc) public payable 
    {
        require (!isContractPaused);
        require(validPurchase());
        require(msg.sender != 0x0);
    
        uint gId=0;
        //owner can claim as many free animals as he or she wants
        if (msg.sender!=owner)
        {
            gId=1;
        }

    
        uint256 weiAmount = msg.value;
        
        // calculate token amount to be created
        uint256 tokens = weiAmount.div(weiPerAnimal);
        
        // update state
        weiRaised = weiRaised.add(weiAmount);

    
        uniqueAnimalId++;
        //Generating Animal Record
        animalObject = AnimalProperties({
            id:uniqueAnimalId,
            name:animalName,
            desc:animalDesc,
            upForSale: false,
            priceForSale:0,
            upForMating: false,
            eggPhase: false,
            priceForMating:0,
            isBornByMating:false,
            parentId1:0,
            parentId2:0,
            birthdate:now,
            costumeId:0,
            generationId:gId,
			isSpecial:false
        });
          
          
        //transferring the token
        token.sendToken(msg.sender, uniqueAnimalId,animalName); 
        emit AnimalsPurchased(msg.sender, owner, weiAmount, tokens);
        
        //updating the mappings to store animal records
        animalAgainstId[uniqueAnimalId]=animalObject;
        
        
        totalBunniesCreated++;
        
        //transferring the ethers to the owner of the contract
        owner.transfer(msg.value);
    }
  
    /** 
     * Buying animals from a user 
     **/ 
    function buyAnimalsFromUser(uint animalId) public payable 
    {
        require (!isContractPaused);
        require(msg.sender != 0x0);
        address prevOwner=token.ownerOf(animalId);
        
        //checking that a user is not trying to buy an animal from himself
        require(prevOwner!=msg.sender);
        
        //the price of sale
        uint price=animalAgainstId[animalId].priceForSale;

        //the percentage of owner         
        uint OwnerPercentage=animalAgainstId[animalId].priceForSale.mul(ownerPerThousandShareForBuying);
        OwnerPercentage=OwnerPercentage.div(1000);
        uint priceWithOwnerPercentage = animalAgainstId[animalId].priceForSale.add(OwnerPercentage);
        
        //funds sent should be enough to cover the selling price plus the owner fees
        require(msg.value>=priceWithOwnerPercentage); 

        // transfer token only
       // token.mint(prevOwner,msg.sender,1); 
    // transfer token here
        token.safeTransferFrom(prevOwner,msg.sender,animalId);

        // change mapping in animalAgainstId
        animalAgainstId[animalId].upForSale=false;
        animalAgainstId[animalId].priceForSale=0;

        //remove from for sale list
        for (uint j=0;j<upForSaleList.length;j++)
        {
          if (upForSaleList[j] == animalId)
            delete upForSaleList[j];
        }      
        
        //transfer of money from buyer to beneficiary
        prevOwner.transfer(price);
        
        //transfer of percentage money to ownerWallet
        owner.transfer(OwnerPercentage);
        
        // return extra funds if sent by mistake
        if(msg.value>priceWithOwnerPercentage)
        {
            msg.sender.transfer(msg.value.sub(priceWithOwnerPercentage));
        }
    }
  
    /**
     * function to accept a mate offer by offering one of your own animals 
     * and paying ethers ofcourse
     **/ 
    function mateAnimal(uint parent1Id, uint parent2Id, string animalName,string animalDesc) public payable 
    {
        require (!isContractPaused);
        require(msg.sender != 0x0);
        
        //the requester is actually the owner of the animal which he or she is offering for mating
        require (token.ownerOf(parent2Id) == msg.sender);
        
        //a user cannot mate two of his own animals
        require(token.ownerOf(parent2Id)!=token.ownerOf(parent1Id));
        
        //the animal id given was actually advertised for mating
        require(animalAgainstId[parent1Id].upForMating==true);
		
		require(animalAgainstId[parent1Id].isSpecial==false);
		require(animalAgainstId[parent2Id].isSpecial==false);
		

        // the price requested for mating
        uint price=animalAgainstId[parent1Id].priceForMating;
        
        // the owner fees 
        uint OwnerPercentage=animalAgainstId[parent1Id].priceForMating.mul(ownerPerThousandShareForMating);
        OwnerPercentage=OwnerPercentage.div(1000);
        
        uint priceWithOwnerPercentage = animalAgainstId[parent1Id].priceForMating.add(OwnerPercentage);
        
        // the ethers sent should be enough to cover the mating price and the owner fees
        require(msg.value>=priceWithOwnerPercentage);
        uint generationnum = 1;

        if(animalAgainstId[parent1Id].generationId >= animalAgainstId[parent2Id].generationId)
        {
        generationnum = animalAgainstId[parent1Id].generationId+1;
        }
        else{
        generationnum = animalAgainstId[parent2Id].generationId+1;
        
        }
        // sequentially generated id for animal
         uniqueAnimalId++;

        //Adding Saving Animal Record
        animalObject = AnimalProperties({
            id:uniqueAnimalId,
            name:animalName,
            desc:animalDesc,
            upForSale: false,
            priceForSale:0,
            upForMating: false,
            eggPhase: true,     
            priceForMating:0,
            isBornByMating:true,
            parentId1: parent1Id,
            parentId2: parent2Id,
            birthdate:now,
            costumeId:0,
            generationId:generationnum,
			isSpecial:false
          });
        // transfer token only
        token.sendToken(msg.sender,uniqueAnimalId,animalName);
        //updating the mappings to store animal information
        animalAgainstId[uniqueAnimalId]=animalObject;
        //adding the generated animal to egg phase list
        eggPhaseAnimalIds.push(uniqueAnimalId);
        
        //adding this animal as a child to the parents who mated to produce this offspring
        childrenIdAgainstAnimalId[parent1Id].push(uniqueAnimalId);
        childrenIdAgainstAnimalId[parent2Id].push(uniqueAnimalId);

        //remove from for mate list
        for (uint i=0;i<upForMatingList.length;i++)
        {
            if (upForMatingList[i]==parent1Id)
                delete upForMatingList[i];   
        }
        
        //remove the parent animal from mating advertisment      
        animalAgainstId[parent1Id].upForMating = false;
        animalAgainstId[parent1Id].priceForMating = 0;
        
        //transfer of money from beneficiary to mate owner
        token.ownerOf(parent1Id).transfer(price);
        
        //transfer of percentage money to ownerWallet
        owner.transfer(OwnerPercentage);
        
        // return extra funds if sent by mistake
        if(msg.value>priceWithOwnerPercentage)
        {
            msg.sender.transfer(msg.value.sub(priceWithOwnerPercentage));
        }
        
    }

    /**
     * function to transfer an animal to another user
     * direct token cannot be passed as we have disabled the transfer feature
     * all animal transfers should occur through this function
     **/ 
    function TransferAnimalToAnotherUser(uint animalId,address to) public 
    {
        require (!isContractPaused);
        require(msg.sender != 0x0);
        
        //the requester of the transfer is actually the owner of the animal id provided
        require(token.ownerOf(animalId)==msg.sender);
        
        //if an animal has to be transferred, it shouldnt be up for sale or mate
        require(animalAgainstId[animalId].upForSale == false);
        require(animalAgainstId[animalId].upForMating == false);
        token.safeTransferFrom(msg.sender, to, animalId);

        }
    
    /**
     * Advertise your animal for selling in exchange for ethers
     **/ 
    function putSaleRequest(uint animalId, uint salePrice) public payable
    {
        require (!isContractPaused);
        //everyone except owner has to pay the adertisement fees
        if (msg.sender!=owner)
        {
            require(msg.value>=priceForSaleAdvertisement);  
        }
        
        //the advertiser is actually the owner of the animal id provided
        require(token.ownerOf(animalId)==msg.sender);
        
        //you cannot advertise an animal for sale which is in egg phase
        require(animalAgainstId[animalId].eggPhase==false);

        // you cannot advertise an animal for sale which is already on sale
        require(animalAgainstId[animalId].upForSale==false);

        //you cannot put an animal for sale and mate simultaneously
        require(animalAgainstId[animalId].upForMating==false);
        
        //putting up the flag for sale 
        animalAgainstId[animalId].upForSale=true;
        animalAgainstId[animalId].priceForSale=salePrice;
        upForSaleList.push(animalId);
        
        //transferring the sale advertisement price to the owner
        owner.transfer(msg.value);
    }
    
    /**
     * function to withdraw a sale advertisement that was put earlier
     **/ 
    function withdrawSaleRequest(uint animalId) public
    {
        require (!isContractPaused);
        
        // the animal id actually belongs to the requester
        require(token.ownerOf(animalId)==msg.sender);
        
        // the animal in question is still up for sale
        require(animalAgainstId[animalId].upForSale==true);

        // change the animal state to not be on sale
        animalAgainstId[animalId].upForSale=false;
        animalAgainstId[animalId].priceForSale=0;

        // remove the animal from sale list
        for (uint i=0;i<upForSaleList.length;i++)
        {
            if (upForSaleList[i]==animalId)
                delete upForSaleList[i];     
        }
    }

    /**
     * function to put mating request in exchange for ethers
     **/ 
    function putMatingRequest(uint animalId, uint matePrice) public payable
    {
        require(!isContractPaused);
		
		require(animalAgainstId[animalId].isSpecial==false);

        // the owner of the contract does not need to pay the mate advertisement fees
        if (msg.sender!=owner)
        {
            require(msg.value>=priceForMateAdvertisement);
        }
    
        require(token.ownerOf(animalId)==msg.sender);

        // an animal in egg phase cannot be put for mating
        require(animalAgainstId[animalId].eggPhase==false);
        
        // an animal on sale cannot be put for mating
        require(animalAgainstId[animalId].upForSale==false);
        
        // an animal already up for mating cannot be put for mating again
        require(animalAgainstId[animalId].upForMating==false);
        animalAgainstId[animalId].upForMating=true;
        animalAgainstId[animalId].priceForMating=matePrice;
        upForMatingList.push(animalId);

        // transfer the mating advertisement charges to owner
        owner.transfer(msg.value);
    }
    
    /**
     * withdraw the mating request that was put earlier
     **/ 
    function withdrawMatingRequest(uint animalId) public
    {
        require(!isContractPaused);
        require(token.ownerOf(animalId)==msg.sender);
        require(animalAgainstId[animalId].upForMating==true);
        animalAgainstId[animalId].upForMating=false;
        animalAgainstId[animalId].priceForMating=0;
        for (uint i=0;i<upForMatingList.length;i++)
        {
            if (upForMatingList[i]==animalId)
                delete upForMatingList[i];    
        }
    }
  
    // @return true if the transaction can buy tokens
    function validPurchase() internal constant returns (bool) 
    {
        // check validity of purchase
        if(msg.value.div(weiPerAnimal)<1)
            return false;
    
        uint quotient=msg.value.div(weiPerAnimal); 
   
        uint actualVal=quotient.mul(weiPerAnimal);
   
        if(msg.value>actualVal)
            return false;
        else 
            return true;
    }

    /**
     * function to show how many animals does an address have
     **/
    function showMyAnimalBalance() public view returns (uint256 tokenBalance) 
    {
        tokenBalance = token.balanceOf(msg.sender);
    }

    /**
     * function to set the new price 
     * can only be called from owner wallet
     **/ 
    function setPriceRate(uint256 newPrice) public onlyOwner returns (bool) 
    {
        weiPerAnimal = newPrice;
    }
    
     /**
     * function to set the mate advertisement price 
     * can only be called from owner wallet
     **/ 
    function setMateAdvertisementRate(uint256 newPrice) public onlyOwner returns (bool) 
    {
        priceForMateAdvertisement = newPrice;
    }
    
     /**
     * function to set the sale advertisement price
     * can only be called from owner wallet
     **/ 
    function setSaleAdvertisementRate(uint256 newPrice) public onlyOwner returns (bool) 
    {
        priceForSaleAdvertisement = newPrice;
    }
    
     /**
     * function to set the sale advertisement price
     * can only be called from owner wallet
     **/ 
    function setBuyingCostumeRate(uint256 newPrice) public onlyOwner returns (bool) 
    {
        priceForBuyingCostume = newPrice;
    }
    
    
     /**
     * function to get all mating animal ids
     **/ 
    function getAllMatingAnimals() public constant returns (uint[]) 
    {
        return upForMatingList;
    }
    
     /**
     * function to get all sale animals ids
     **/ 
    function getAllSaleAnimals() public constant returns (uint[]) 
    {
        return upForSaleList;
    }
    
     /**
     * function to change the free animals limit for each user
     * can only be called from owner wallet
     **/ 
    function changeFreeAnimalsLimit(uint limit) public onlyOwner
    {
        freeAnimalsLimit = limit;
    }

     /**
     * function to change the owner share on buying transactions
     * can only be called from owner wallet
     **/    
    function changeOwnerSharePerThousandForBuying(uint buyshare) public onlyOwner
    {
        ownerPerThousandShareForBuying = buyshare;
    }
    
    /**
     * function to change the owner share on mating transactions
     * can only be called from owner wallet
     **/  
    function changeOwnerSharePerThousandForMating(uint mateshare) public onlyOwner
    {
        ownerPerThousandShareForMating = mateshare;
    }
    
    /**
     * function to pause the contract
     * can only be called from owner wallet
     **/  
    function pauseContract(bool isPaused) public onlyOwner
    {
        isContractPaused = isPaused;
    }
  
    /**
     * function to remove an animal from egg phase
     * can be called from anyone in the member addresses list
     **/  
    function removeFromEggPhase(uint animalId) public
    {
        for (uint i=0;i<memberAddresses.length;i++)
        {
            if (memberAddresses[i]==msg.sender)
            {
                for (uint j=0;j<eggPhaseAnimalIds.length;j++)
                {
                    if (eggPhaseAnimalIds[j]==animalId)
                    {
                        delete eggPhaseAnimalIds[j];
                    }
                }
                animalAgainstId[animalId].eggPhase = false;
            }
        }
    }
    
    /**
     * function to get all children ids of an animal
     **/  
    function getChildrenAgainstAnimalId(uint id) public constant returns (uint[]) 
    {
        return childrenIdAgainstAnimalId[id];
    }
    
    /**
     * function to get all animals in the egg phase list
     **/  
    function getEggPhaseList() public constant returns (uint[]) 
    {
        return eggPhaseAnimalIds;
    }
    
    
     /**
     * function to get all animals in costume not yet approved list
     **/  
    function getAnimalIdsWithPendingCostume() public constant returns (uint[]) 
    {
        return animalIdsWithPendingCostumes;
    }
    
       /**
     * function to request to buy costume
     **/  
    function buyCostume(uint cId, uint aId) public payable 
    {
        require(msg.value>=priceForBuyingCostume);
        require(!isContractPaused);
        require(token.ownerOf(aId)==msg.sender);
        require(animalAgainstId[aId].costumeId==0);
        animalAgainstId[aId].costumeId=cId;
        animalIdsWithPendingCostumes.push(aId);
        // transfer the mating advertisement charges to owner
        owner.transfer(msg.value);
    }
    
    
    /**
     * function to approve a pending costume
     * can be called from anyone in the member addresses list
     **/  
    function approvePendingCostume(uint animalId) public
    {
        for (uint i=0;i<memberAddresses.length;i++)
        {
            if (memberAddresses[i]==msg.sender)
            {
                for (uint j=0;j<animalIdsWithPendingCostumes.length;j++)
                {
                    if (animalIdsWithPendingCostumes[j]==animalId)
                    {
                        delete animalIdsWithPendingCostumes[j];
                    }
                }
            }
        }
    }
    
    /**
     * function to add a member that could remove animals from egg phase
     * can only be called from owner wallet
     **/  
    function addMember(address member) public onlyOwner 
    { 
        memberAddresses.push(member);
    }
  
    /**
     * function to return the members that could remove an animal from egg phase
     **/  
    function listMembers() public constant returns (address[]) 
    { 
        return memberAddresses;
    }
    
    /**
     * function to delete a member from the list that could remove an animal from egg phase
     * can only be called from owner wallet
     **/  
    function deleteMember(address member) public onlyOwner 
    { 
        for (uint i=0;i<memberAddresses.length;i++)
        {
            if (memberAddresses[i]==member)
            {
                delete memberAddresses[i];
            }
        }
    }
    /**
     * function to update an animal
     * can only be called from owner wallet
     **/  
    function updateAnimal(uint animalId, string name, string desc) public  
    { 
        require(msg.sender==token.ownerOf(animalId));
        animalAgainstId[animalId].name=name;
        animalAgainstId[animalId].desc=desc;
        token.setAnimalMeta(animalId, name);
    }
	
	    /**
     * function to update an animal
     * can only be called from owner wallet
     **/  
    function updateAnimalSpecial(uint animalId, bool isSpecial) public onlyOwner 
    { 
        require(msg.sender==token.ownerOf(animalId));
        animalAgainstId[animalId].isSpecial=isSpecial;
        
    }
   
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"getEggPhaseList","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"cId","type":"uint256"},{"name":"aId","type":"uint256"}],"name":"buyCostume","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"member","type":"address"}],"name":"deleteMember","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"priceForMateAdvertisement","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"animalId","type":"uint256"},{"name":"isSpecial","type":"bool"}],"name":"updateAnimalSpecial","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"showMyAnimalBalance","outputs":[{"name":"tokenBalance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ownerPerThousandShareForMating","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newPrice","type":"uint256"}],"name":"setBuyingCostumeRate","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"animalId","type":"uint256"},{"name":"matePrice","type":"uint256"}],"name":"putMatingRequest","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"animalName","type":"string"},{"name":"animalDesc","type":"string"}],"name":"claimFreeAnimalFromAnimalFactory","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"animalId","type":"uint256"}],"name":"withdrawSaleRequest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"weiPerAnimal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newPrice","type":"uint256"}],"name":"setPriceRate","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"animalId","type":"uint256"},{"name":"to","type":"address"}],"name":"TransferAnimalToAnotherUser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"priceForBuyingCostume","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"id","type":"uint256"}],"name":"getChildrenAgainstAnimalId","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalBunniesCreated","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getAllMatingAnimals","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"animalId","type":"uint256"},{"name":"name","type":"string"},{"name":"desc","type":"string"}],"name":"updateAnimal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"ad","type":"address"}],"name":"getAllAnimalsByAddress","outputs":[{"name":"listAnimals","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"aid","type":"uint256"}],"name":"getAnimalByIdVisibility","outputs":[{"name":"upforsale","type":"bool"},{"name":"upformating","type":"bool"},{"name":"eggphase","type":"bool"},{"name":"isbornbymating","type":"bool"},{"name":"birthdate","type":"uint256"},{"name":"costumeid","type":"uint256"},{"name":"generationid","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"freeAnimalsLimit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"animalName","type":"string"},{"name":"animalDesc","type":"string"}],"name":"buyAnimalsFromAnimalFactory","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"priceForSaleAdvertisement","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ownerPerThousandShareForBuying","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"animalId","type":"uint256"}],"name":"approvePendingCostume","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"listMembers","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"aid","type":"uint256"}],"name":"getAnimalById","outputs":[{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newPrice","type":"uint256"}],"name":"setMateAdvertisementRate","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getAllSaleAnimals","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"member","type":"address"}],"name":"addMember","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getAnimalIdsWithPendingCostume","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"aid","type":"uint256"}],"name":"getOwnerByAnimalId","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"mateshare","type":"uint256"}],"name":"changeOwnerSharePerThousandForMating","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"parent1Id","type":"uint256"},{"name":"parent2Id","type":"uint256"},{"name":"animalName","type":"string"},{"name":"animalDesc","type":"string"}],"name":"mateAnimal","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"isPaused","type":"bool"}],"name":"pauseContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"animalId","type":"uint256"},{"name":"salePrice","type":"uint256"}],"name":"putSaleRequest","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"animalId","type":"uint256"}],"name":"withdrawMatingRequest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"limit","type":"uint256"}],"name":"changeFreeAnimalsLimit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"animalId","type":"uint256"}],"name":"buyAnimalsFromUser","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"newPrice","type":"uint256"}],"name":"setSaleAdvertisementRate","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"animalId","type":"uint256"}],"name":"removeFromEggPhase","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isContractPaused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"buyshare","type":"uint256"}],"name":"changeOwnerSharePerThousandForBuying","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_walletOwner","type":"address"},{"name":"_tokenAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"AnimalsPurchased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

  Contract Creation Code Switch To Opcodes View
608060405260006002556023601655602360175560046018556000601e55670de0b6b3a7640000601f553480156200003657600080fd5b5060405160408062005b998339810180604052810190808051906020019092919080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff1614151515620000cb57600080fd5b816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601960006101000a81548160ff021916908315150217905550662386f26fc10000601a81905550662386f26fc10000601b81905550662386f26fc10000601c8190555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506159f680620001a36000396000f300608060405260043610610246576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806308aeda8b1461024b5780630c2b14fe146102b757806311ffb1d4146102e157806313d1bdfb146103245780631aca120b1461034f5780631ae6c09c1461038857806336471908146103b35780634042b66f146103de5780634713f29b146104095780634a947bdb1461044e5780634ec1646d14610478578063537a082c146105275780635fb80f20146105545780636786ed0e1461057f578063736eec58146105c45780637a6e13841461061157806382acaa391461063c5780638a9c497b146106be5780638c590b5d146106e95780638da5cb5b1461075557806398e12d12146107ac5780639ab42287146108655780639b39f377146108fd5780639d36c500146109785780639f2ccbcc146109a35780639fc20f6014610a45578063a379e62614610a70578063b3f691c214610a9b578063b6afd2ca14610ac8578063b974ddcb14610b34578063c334ea8f14610c69578063c56cf2b214610cae578063ca6d56dc14610d1a578063cae20b5914610d5d578063cfa517df14610dc9578063e0ac61bb14610e36578063e0eb944914610e63578063e272b89214610f19578063e74803db14610f48578063e9dff84714610f72578063ec7f990614610f9f578063edaee1dc14610fcc578063edbae7c614610fec578063f0e1354c14611031578063f2fde38b1461105e578063f4ab2928146110a1578063fa667907146110d0578063fc0c546a146110fd575b600080fd5b34801561025757600080fd5b50610260611154565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102a3578082015181840152602081019050610288565b505050509050019250505060405180910390f35b6102df60048036038101908080359060200190929190803590602001909291905050506111ac565b005b3480156102ed57600080fd5b50610322600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113b6565b005b34801561033057600080fd5b506103396114e0565b6040518082815260200191505060405180910390f35b34801561035b57600080fd5b50610386600480360381019080803590602001909291908035151590602001909291905050506114e6565b005b34801561039457600080fd5b5061039d611678565b6040518082815260200191505060405180910390f35b3480156103bf57600080fd5b506103c8611777565b6040518082815260200191505060405180910390f35b3480156103ea57600080fd5b506103f361177d565b6040518082815260200191505060405180910390f35b34801561041557600080fd5b5061043460048036038101908080359060200190929190505050611783565b604051808215151515815260200191505060405180910390f35b61047660048036038101908080359060200190929190803590602001909291905050506117ec565b005b34801561048457600080fd5b50610525600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611b2f565b005b34801561053357600080fd5b5061055260048036038101908080359060200190929190505050612199565b005b34801561056057600080fd5b5061056961239f565b6040518082815260200191505060405180910390f35b34801561058b57600080fd5b506105aa600480360381019080803590602001909291905050506123a5565b604051808215151515815260200191505060405180910390f35b3480156105d057600080fd5b5061060f60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061240e565b005b34801561061d57600080fd5b506106266126d6565b6040518082815260200191505060405180910390f35b34801561064857600080fd5b50610667600480360381019080803590602001909291905050506126dc565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106aa57808201518184015260208101905061068f565b505050509050019250505060405180910390f35b3480156106ca57600080fd5b506106d3612747565b6040518082815260200191505060405180910390f35b3480156106f557600080fd5b506106fe61274d565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610741578082015181840152602081019050610726565b505050509050019250505060405180910390f35b34801561076157600080fd5b5061076a6127a5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107b857600080fd5b5061086360048036038101908080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506127ca565b005b34801561087157600080fd5b506108a6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a40565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156108e95780820151818401526020810190506108ce565b505050509050019250505060405180910390f35b34801561090957600080fd5b5061092860048036038101908080359060200190929190505050612bb3565b604051808815151515815260200187151515158152602001861515151581526020018515151515815260200184815260200183815260200182815260200197505050505050505060405180910390f35b34801561098457600080fd5b5061098d612cac565b6040518082815260200191505060405180910390f35b610a43600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050612cb2565b005b348015610a5157600080fd5b50610a5a613359565b6040518082815260200191505060405180910390f35b348015610a7c57600080fd5b50610a8561335f565b6040518082815260200191505060405180910390f35b348015610aa757600080fd5b50610ac660048036038101908080359060200190929190505050613365565b005b348015610ad457600080fd5b50610add613458565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610b20578082015181840152602081019050610b05565b505050509050019250505060405180910390f35b348015610b4057600080fd5b50610b5f600480360381019080803590602001909291905050506134e6565b60405180806020018060200188815260200187815260200186815260200185815260200184815260200183810383528a818151815260200191508051906020019080838360005b83811015610bc1578082015181840152602081019050610ba6565b50505050905090810190601f168015610bee5780820380516001836020036101000a031916815260200191505b50838103825289818151815260200191508051906020019080838360005b83811015610c27578082015181840152602081019050610c0c565b50505050905090810190601f168015610c545780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b348015610c7557600080fd5b50610c9460048036038101908080359060200190929190505050613909565b604051808215151515815260200191505060405180910390f35b348015610cba57600080fd5b50610cc3613972565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610d06578082015181840152602081019050610ceb565b505050509050019250505060405180910390f35b348015610d2657600080fd5b50610d5b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506139ca565b005b348015610d6957600080fd5b50610d72613a8e565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610db5578082015181840152602081019050610d9a565b505050509050019250505060405180910390f35b348015610dd557600080fd5b50610df460048036038101908080359060200190929190505050613ae6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610e4257600080fd5b50610e6160048036038101908080359060200190929190505050613bbb565b005b610f176004803603810190808035906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050613c20565b005b348015610f2557600080fd5b50610f466004803603810190808035151590602001909291905050506148d4565b005b610f70600480360381019080803590602001909291908035906020019092919050505061494c565b005b348015610f7e57600080fd5b50610f9d60048036038101908080359060200190929190505050614c59565b005b348015610fab57600080fd5b50610fca60048036038101908080359060200190929190505050614e5f565b005b610fea60048036038101908080359060200190929190505050614ec4565b005b348015610ff857600080fd5b5061101760048036038101908080359060200190929190505050615381565b604051808215151515815260200191505060405180910390f35b34801561103d57600080fd5b5061105c600480360381019080803590602001909291905050506153ea565b005b34801561106a57600080fd5b5061109f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061550c565b005b3480156110ad57600080fd5b506110b6615661565b604051808215151515815260200191505060405180910390f35b3480156110dc57600080fd5b506110fb60048036038101908080359060200190929190505050615674565b005b34801561110957600080fd5b506111126156d9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b606060208054806020026020016040519081016040528092919081815260200182805480156111a257602002820191906000526020600020905b81548152602001906001019080831161118e575b5050505050905090565b601c5434101515156111bd57600080fd5b601960009054906101000a900460ff161515156111d957600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561128157600080fd5b505af1158015611295573d6000803e3d6000fd5b505050506040513d60208110156112ab57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161415156112de57600080fd5b600060036000838152602001908152602001600020600b015414151561130357600080fd5b8160036000838152602001908152602001600020600b018190555060218190806001815401808255809150509060018203906000526020600020016000909192909190915055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156113b1573d6000803e3d6000fd5b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561141357600080fd5b600090505b6007805490508110156114dc578173ffffffffffffffffffffffffffffffffffffffff1660078281548110151561144b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156114cf576007818154811015156114a157fe5b9060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b8080600101915050611418565b5050565b601a5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561154157600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1580156115d257600080fd5b505af11580156115e6573d6000803e3d6000fd5b505050506040513d60208110156115fc57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561164657600080fd5b8060036000848152602001908152602001600020600d0160006101000a81548160ff0219169083151502179055505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561173757600080fd5b505af115801561174b573d6000803e3d6000fd5b505050506040513d602081101561176157600080fd5b8101908080519060200190929190505050905090565b60165481565b601d5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117e057600080fd5b81601c81905550919050565b601960009054906101000a900460ff1615151561180857600080fd5b6000151560036000848152602001908152602001600020600d0160009054906101000a900460ff16151514151561183e57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118a657601a5434101515156118a557600080fd5b5b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561194e57600080fd5b505af1158015611962573d6000803e3d6000fd5b505050506040513d602081101561197857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161415156119ab57600080fd5b600015156003600084815260200190815260200160002060050160019054906101000a900460ff1615151415156119e157600080fd5b600015156003600084815260200190815260200160002060030160009054906101000a900460ff161515141515611a1757600080fd5b600015156003600084815260200190815260200160002060050160009054906101000a900460ff161515141515611a4d57600080fd5b60016003600084815260200190815260200160002060050160006101000a81548160ff02191690831515021790555080600360008481526020019081526020016000206006018190555060058290806001815401808255809150509060018203906000526020600020016000909192909190915055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611b2a573d6000803e3d6000fd5b505050565b6000803373ffffffffffffffffffffffffffffffffffffffff1614151515611b5657600080fd5b601960009054906101000a900460ff16151515611b7257600080fd5b600090506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611cd857601854600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636c609906336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611c8c57600080fd5b505af1158015611ca0573d6000803e3d6000fd5b505050506040513d6020811015611cb657600080fd5b8101908080519060200190929190505050101515611cd357600080fd5b600190505b6002600081548092919060010191905055506101e06040519081016040528060025481526020018481526020018381526020016000151581526020016000815260200160001515815260200160001515815260200160008152602001600015158152602001600081526020016000815260200142815260200160008152602001828152602001600015158152506008600082015181600001556020820151816001019080519060200190611d8d92919061581e565b506040820151816002019080519060200190611daa92919061581e565b5060608201518160030160006101000a81548160ff0219169083151502179055506080820151816004015560a08201518160050160006101000a81548160ff02191690831515021790555060c08201518160050160016101000a81548160ff02191690831515021790555060e082015181600601556101008201518160070160006101000a81548160ff0219169083151502179055506101208201518160080155610140820151816009015561016082015181600a015561018082015181600b01556101a082015181600c01556101c082015181600d0160006101000a81548160ff021916908315150217905550905050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637dce459533600254866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611f81578082015181840152602081019050611f66565b50505050905090810190601f168015611fae5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015611fcf57600080fd5b505af1158015611fe3573d6000803e3d6000fd5b505050506008600360006002548152602001908152602001600020600082015481600001556001820181600101908054600181600116156101000203166002900461202f92919061589e565b506002820181600201908054600181600116156101000203166002900461205792919061589e565b506003820160009054906101000a900460ff168160030160006101000a81548160ff021916908315150217905550600482015481600401556005820160009054906101000a900460ff168160050160006101000a81548160ff0219169083151502179055506005820160019054906101000a900460ff168160050160016101000a81548160ff021916908315150217905550600682015481600601556007820160009054906101000a900460ff168160070160006101000a81548160ff0219169083151502179055506008820154816008015560098201548160090155600a82015481600a0155600b82015481600b0155600c82015481600c0155600d820160009054906101000a900460ff1681600d0160006101000a81548160ff021916908315150217905550905050601e60008154809291906001019190505550505050565b6000601960009054906101000a900460ff161515156121b757600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561225f57600080fd5b505af1158015612273573d6000803e3d6000fd5b505050506040513d602081101561228957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161415156122bc57600080fd5b600115156003600084815260200190815260200160002060030160009054906101000a900460ff1615151415156122f257600080fd5b60006003600084815260200190815260200160002060030160006101000a81548160ff02191690831515021790555060006003600084815260200190815260200160002060040181905550600090505b60068054905081101561239b578160068281548110151561235f57fe5b9060005260206000200154141561238e5760068181548110151561237f57fe5b90600052602060002001600090555b8080600101915050612342565b5050565b601f5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561240257600080fd5b81601f81905550919050565b601960009054906101000a900460ff1615151561242a57600080fd5b60003373ffffffffffffffffffffffffffffffffffffffff161415151561245057600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1580156124f857600080fd5b505af115801561250c573d6000803e3d6000fd5b505050506040513d602081101561252257600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614151561255557600080fd5b600015156003600084815260200190815260200160002060030160009054906101000a900460ff16151514151561258b57600080fd5b600015156003600084815260200190815260200160002060050160009054906101000a900460ff1615151415156125c157600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e3383856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156126ba57600080fd5b505af11580156126ce573d6000803e3d6000fd5b505050505050565b601c5481565b60606004600083815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561273b57602002820191906000526020600020905b815481526020019060010190808311612727575b50505050509050919050565b601e5481565b6060600580548060200260200160405190810160405280929190818152602001828054801561279b57602002820191906000526020600020905b815481526020019060010190808311612787575b5050505050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561285b57600080fd5b505af115801561286f573d6000803e3d6000fd5b505050506040513d602081101561288557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156128cf57600080fd5b816003600085815260200190815260200160002060010190805190602001906128f9929190615925565b5080600360008581526020019081526020016000206002019080519060200190612924929190615925565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637cd7c2bd84846040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156129d65780820151818401526020810190506129bb565b50505050905090810190601f168015612a035780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015612a2357600080fd5b505af1158015612a37573d6000803e3d6000fd5b50505050505050565b6060601960009054906101000a900460ff16151515612a5e57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639b46461e836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015612b1b57600080fd5b505af1158015612b2f573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506020811015612b5957600080fd5b810190808051640100000000811115612b7157600080fd5b82810190506020810184811115612b8757600080fd5b8151856020820283011164010000000082111715612ba457600080fd5b50509291905050509050919050565b60008060008060008060006003600089815260200190815260200160002060030160009054906101000a900460ff16600360008a815260200190815260200160002060050160009054906101000a900460ff16600360008b815260200190815260200160002060050160019054906101000a900460ff16600360008c815260200190815260200160002060070160009054906101000a900460ff16600360008d8152602001908152602001600020600a0154600360008e8152602001908152602001600020600b0154600360008f8152602001908152602001600020600c01549650965096509650965096509650919395979092949650565b60185481565b6000806000601960009054906101000a900460ff16151515612cd357600080fd5b612cdb6156ff565b1515612ce657600080fd5b60003373ffffffffffffffffffffffffffffffffffffffff1614151515612d0c57600080fd5b600092506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612d6b57600192505b349150612d83601f548361577390919063ffffffff16565b9050612d9a82601d546157b490919063ffffffff16565b601d819055506002600081548092919060010191905055506101e06040519081016040528060025481526020018681526020018581526020016000151581526020016000815260200160001515815260200160001515815260200160008152602001600015158152602001600081526020016000815260200142815260200160008152602001848152602001600015158152506008600082015181600001556020820151816001019080519060200190612e5592919061581e565b506040820151816002019080519060200190612e7292919061581e565b5060608201518160030160006101000a81548160ff0219169083151502179055506080820151816004015560a08201518160050160006101000a81548160ff02191690831515021790555060c08201518160050160016101000a81548160ff02191690831515021790555060e082015181600601556101008201518160070160006101000a81548160ff0219169083151502179055506101208201518160080155610140820151816009015561016082015181600a015561018082015181600b01556101a082015181600c01556101c082015181600d0160006101000a81548160ff021916908315150217905550905050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637dce459533600254886040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561304957808201518184015260208101905061302e565b50505050905090810190601f1680156130765780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561309757600080fd5b505af11580156130ab573d6000803e3d6000fd5b505050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ffe2ddcffd7b052c93343c9793276e1af780880df1c382501a7e0433a8f1e66a88484604051808381526020018281526020019250505060405180910390a36008600360006002548152602001908152602001600020600082015481600001556001820181600101908054600181600116156101000203166002900461318592919061589e565b50600282018160020190805460018160011615610100020316600290046131ad92919061589e565b506003820160009054906101000a900460ff168160030160006101000a81548160ff021916908315150217905550600482015481600401556005820160009054906101000a900460ff168160050160006101000a81548160ff0219169083151502179055506005820160019054906101000a900460ff168160050160016101000a81548160ff021916908315150217905550600682015481600601556007820160009054906101000a900460ff168160070160006101000a81548160ff0219169083151502179055506008820154816008015560098201548160090155600a82015481600a0155600b82015481600b0155600c82015481600c0155600d820160009054906101000a900460ff1681600d0160006101000a81548160ff021916908315150217905550905050601e600081548092919060010191905055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015613351573d6000803e3d6000fd5b505050505050565b601b5481565b60175481565b600080600091505b600780549050821015613453573373ffffffffffffffffffffffffffffffffffffffff166007838154811015156133a057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561344657600090505b602180549050811015613445578260218281548110151561340957fe5b906000526020600020015414156134385760218181548110151561342957fe5b90600052602060002001600090555b80806001019150506133ec565b5b818060010192505061336d565b505050565b606060078054806020026020016040519081016040528092919081815260200182805480156134dc57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311613492575b5050505050905090565b606080600080600080600060011515600360008a815260200190815260200160002060050160019054906101000a900460ff16151514156137185760036000898152602001908152602001600020600101600360008a81526020019081526020016000206002017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600360008c815260200190815260200160002060040154600360008d815260200190815260200160002060060154600360008e815260200190815260200160002060080154600360008f815260200190815260200160002060090154868054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561365f5780601f106136345761010080835404028352916020019161365f565b820191906000526020600020905b81548152906001019060200180831161364257829003601f168201915b50505050509650858054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156136fb5780601f106136d0576101008083540402835291602001916136fb565b820191906000526020600020905b8154815290600101906020018083116136de57829003601f168201915b5050505050955084945096509650965096509650965096506138fe565b60036000898152602001908152602001600020600101600360008a8152602001908152602001600020600201600360008b815260200190815260200160002060000154600360008c815260200190815260200160002060040154600360008d815260200190815260200160002060060154600360008e815260200190815260200160002060080154600360008f815260200190815260200160002060090154868054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561384c5780601f106138215761010080835404028352916020019161384c565b820191906000526020600020905b81548152906001019060200180831161382f57829003601f168201915b50505050509650858054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156138e85780601f106138bd576101008083540402835291602001916138e8565b820191906000526020600020905b8154815290600101906020018083116138cb57829003601f168201915b5050505050955096509650965096509650965096505b919395979092949650565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561396657600080fd5b81601a81905550919050565b606060068054806020026020016040519081016040528092919081815260200182805480156139c057602002820191906000526020600020905b8154815260200190600101908083116139ac575b5050505050905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613a2557600080fd5b60078190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60606021805480602002602001604051908101604052809291908181526020018280548015613adc57602002820191906000526020600020905b815481526020019060010190808311613ac8575b5050505050905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015613b7957600080fd5b505af1158015613b8d573d6000803e3d6000fd5b505050506040513d6020811015613ba357600080fd5b81019080805190602001909291905050509050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613c1657600080fd5b8060168190555050565b6000806000806000601960009054906101000a900460ff16151515613c4457600080fd5b60003373ffffffffffffffffffffffffffffffffffffffff1614151515613c6a57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e8a6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015613d1257600080fd5b505af1158015613d26573d6000803e3d6000fd5b505050506040513d6020811015613d3c57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16141515613d6f57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e8a6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015613e0057600080fd5b505af1158015613e14573d6000803e3d6000fd5b505050506040513d6020811015613e2a57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e8a6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015613ee257600080fd5b505af1158015613ef6573d6000803e3d6000fd5b505050506040513d6020811015613f0c57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614151515613f4057600080fd5b60011515600360008b815260200190815260200160002060050160009054906101000a900460ff161515141515613f7657600080fd5b60001515600360008b8152602001908152602001600020600d0160009054906101000a900460ff161515141515613fac57600080fd5b60001515600360008a8152602001908152602001600020600d0160009054906101000a900460ff161515141515613fe257600080fd5b600360008a8152602001908152602001600020600601549450614026601654600360008c8152602001908152602001600020600601546157d290919063ffffffff16565b935061403d6103e88561577390919063ffffffff16565b935061406884600360008c8152602001908152602001600020600601546157b490919063ffffffff16565b925082341015151561407957600080fd5b6001915060036000898152602001908152602001600020600c0154600360008b8152602001908152602001600020600c01541015156140d3576001600360008b8152602001908152602001600020600c01540191506140f0565b6001600360008a8152602001908152602001600020600c01540191505b6002600081548092919060010191905055506101e060405190810160405280600254815260200188815260200187815260200160001515815260200160008152602001600015158152602001600115158152602001600081526020016001151581526020018a8152602001898152602001428152602001600081526020018381526020016000151581525060086000820151816000015560208201518160010190805190602001906141a392919061581e565b5060408201518160020190805190602001906141c092919061581e565b5060608201518160030160006101000a81548160ff0219169083151502179055506080820151816004015560a08201518160050160006101000a81548160ff02191690831515021790555060c08201518160050160016101000a81548160ff02191690831515021790555060e082015181600601556101008201518160070160006101000a81548160ff0219169083151502179055506101208201518160080155610140820151816009015561016082015181600a015561018082015181600b01556101a082015181600c01556101c082015181600d0160006101000a81548160ff021916908315150217905550905050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637dce4595336002548a6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561439757808201518184015260208101905061437c565b50505050905090810190601f1680156143c45780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156143e557600080fd5b505af11580156143f9573d6000803e3d6000fd5b505050506008600360006002548152602001908152602001600020600082015481600001556001820181600101908054600181600116156101000203166002900461444592919061589e565b506002820181600201908054600181600116156101000203166002900461446d92919061589e565b506003820160009054906101000a900460ff168160030160006101000a81548160ff021916908315150217905550600482015481600401556005820160009054906101000a900460ff168160050160006101000a81548160ff0219169083151502179055506005820160019054906101000a900460ff168160050160016101000a81548160ff021916908315150217905550600682015481600601556007820160009054906101000a900460ff168160070160006101000a81548160ff0219169083151502179055506008820154816008015560098201548160090155600a82015481600a0155600b82015481600b0155600c82015481600c0155600d820160009054906101000a900460ff1681600d0160006101000a81548160ff02191690831515021790555090505060206002549080600181540180825580915050906001820390600052602060002001600090919290919091505550600460008a81526020019081526020016000206002549080600181540180825580915050906001820390600052602060002001600090919290919091505550600460008981526020019081526020016000206002549080600181540180825580915050906001820390600052602060002001600090919290919091505550600090505b6005805490508110156146a2578860058281548110151561466657fe5b906000526020600020015414156146955760058181548110151561468657fe5b90600052602060002001600090555b8080600101915050614649565b6000600360008b815260200190815260200160002060050160006101000a81548160ff0219169083151502179055506000600360008b815260200190815260200160002060060181905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e8a6040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561477e57600080fd5b505af1158015614792573d6000803e3d6000fd5b505050506040513d60208110156147a857600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f193505050501580156147fe573d6000803e3d6000fd5b506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f19350505050158015614866573d6000803e3d6000fd5b50823411156148c9573373ffffffffffffffffffffffffffffffffffffffff166108fc61489c853461580590919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156148c7573d6000803e3d6000fd5b505b505050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561492f57600080fd5b80601960006101000a81548160ff02191690831515021790555050565b601960009054906101000a900460ff1615151561496857600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156149d057601b5434101515156149cf57600080fd5b5b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015614a7857600080fd5b505af1158015614a8c573d6000803e3d6000fd5b505050506040513d6020811015614aa257600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16141515614ad557600080fd5b600015156003600084815260200190815260200160002060050160019054906101000a900460ff161515141515614b0b57600080fd5b600015156003600084815260200190815260200160002060030160009054906101000a900460ff161515141515614b4157600080fd5b600015156003600084815260200190815260200160002060050160009054906101000a900460ff161515141515614b7757600080fd5b60016003600084815260200190815260200160002060030160006101000a81548160ff02191690831515021790555080600360008481526020019081526020016000206004018190555060068290806001815401808255809150509060018203906000526020600020016000909192909190915055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015614c54573d6000803e3d6000fd5b505050565b6000601960009054906101000a900460ff16151515614c7757600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e846040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015614d1f57600080fd5b505af1158015614d33573d6000803e3d6000fd5b505050506040513d6020811015614d4957600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16141515614d7c57600080fd5b600115156003600084815260200190815260200160002060050160009054906101000a900460ff161515141515614db257600080fd5b60006003600084815260200190815260200160002060050160006101000a81548160ff02191690831515021790555060006003600084815260200190815260200160002060060181905550600090505b600580549050811015614e5b5781600582815481101515614e1f57fe5b90600052602060002001541415614e4e57600581815481101515614e3f57fe5b90600052602060002001600090555b8080600101915050614e02565b5050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515614eba57600080fd5b8060188190555050565b6000806000806000601960009054906101000a900460ff16151515614ee857600080fd5b60003373ffffffffffffffffffffffffffffffffffffffff1614151515614f0e57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e876040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b158015614f9f57600080fd5b505af1158015614fb3573d6000803e3d6000fd5b505050506040513d6020811015614fc957600080fd5b810190808051906020019092919050505094503373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415151561501757600080fd5b6003600087815260200190815260200160002060040154935061505b60175460036000898152602001908152602001600020600401546157d290919063ffffffff16565b92506150726103e88461577390919063ffffffff16565b925061509d8360036000898152602001908152602001600020600401546157b490919063ffffffff16565b91508134101515156150ae57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342842e0e8633896040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b1580156151a757600080fd5b505af11580156151bb573d6000803e3d6000fd5b5050505060006003600088815260200190815260200160002060030160006101000a81548160ff02191690831515021790555060006003600088815260200190815260200160002060040181905550600090505b600680549050811015615268578560068281548110151561522c57fe5b9060005260206000200154141561525b5760068181548110151561524c57fe5b90600052602060002001600090555b808060010191505061520f565b8473ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f193505050501580156152ae573d6000803e3d6000fd5b506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015615316573d6000803e3d6000fd5b5081341115615379573373ffffffffffffffffffffffffffffffffffffffff166108fc61534c843461580590919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015615377573d6000803e3d6000fd5b505b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156153de57600080fd5b81601b81905550919050565b600080600091505b600780549050821015615507573373ffffffffffffffffffffffffffffffffffffffff1660078381548110151561542557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156154fa57600090505b6020805490508110156154ca578260208281548110151561548e57fe5b906000526020600020015414156154bd576020818154811015156154ae57fe5b90600052602060002001600090555b8080600101915050615471565b60006003600085815260200190815260200160002060050160016101000a81548160ff0219169083151502179055505b81806001019250506153f2565b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561556757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156155a357600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601960009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156156cf57600080fd5b8060178190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000600161571b601f543461577390919063ffffffff16565b101561572a576000925061576e565b61573f601f543461577390919063ffffffff16565b9150615756601f54836157d290919063ffffffff16565b905080341115615769576000925061576e565b600192505b505090565b60008060008311151561578257fe5b828481151561578d57fe5b049050828481151561579b57fe5b0681840201841415156157aa57fe5b8091505092915050565b60008082840190508381101515156157c857fe5b8091505092915050565b600080828402905060008414806157f357508284828115156157f057fe5b04145b15156157fb57fe5b8091505092915050565b600082821115151561581357fe5b818303905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061585f57805160ff191683800117855561588d565b8280016001018555821561588d579182015b8281111561588c578251825591602001919060010190615871565b5b50905061589a91906159a5565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106158d75780548555615914565b8280016001018555821561591457600052602060002091601f016020900482015b828111156159135782548255916001019190600101906158f8565b5b50905061592191906159a5565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061596657805160ff1916838001178555615994565b82800160010185558215615994579182015b82811115615993578251825591602001919060010190615978565b5b5090506159a191906159a5565b5090565b6159c791905b808211156159c35760008160009055506001016159ab565b5090565b905600a165627a7a7230582073944aab42e2edac6fe642ed7c7a2f48586bfe8ffd27d124f76552fc0d737bbc0029000000000000000000000000e417644420c7cf3f2194189713a3aa0541e792fb000000000000000000000000ae67bc61d2dd356112b9e588c2faef40c5a72ba0

    Constructor Arguments (ABI-encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000e417644420c7cf3f2194189713a3aa0541e792fb000000000000000000000000ae67bc61d2dd356112b9e588c2faef40c5a72ba0

-----Decoded View---------------
Found 2 constructor arguments :
Arg [0] : 000000000000000000000000e417644420c7cf3f2194189713a3aa0541e792fb
Arg [1] : 000000000000000000000000ae67bc61d2dd356112b9e588c2faef40c5a72ba0


   Swarm Source:
bzzr://73944aab42e2edac6fe642ed7c7a2f48586bfe8ffd27d124f76552fc0d737bbc

 

View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "downvote" button for any spammy posts, and the "upvote" for interesting conversations.