ETH Price: $2,551.13 (+0.30%)

Token

MyHero (MH)
 

Overview

Max Total Supply

1,104 MH

Holders

104

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

Balance
3 MH
0x1cb58619dc5e5cedc230de47fcc732af242b141d
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
HeroCore

Compiler Version
v0.4.18+commit.9cf6e910

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-03-06
*/

pragma solidity ^0.4.18;

contract HeroAccessControl {
    event ContractUpgrade(address newContract);
    address public leaderAddress;
    address public opmAddress;
    
    bool public paused = false;

    modifier onlyLeader() {
        require(msg.sender == leaderAddress);
        _;
    }
    modifier onlyOPM() {
        require(msg.sender == opmAddress);
        _;
    }

    modifier onlyMLevel() {
        require(
            msg.sender == opmAddress ||
            msg.sender == leaderAddress
        );
        _;
    }

    function setLeader(address _newLeader) public onlyLeader {
        require(_newLeader != address(0));
        leaderAddress = _newLeader;
    }

    function setOPM(address _newOPM) public onlyLeader {
        require(_newOPM != address(0));
        opmAddress = _newOPM;
    }

    function withdrawBalance() external onlyLeader {
        leaderAddress.transfer(this.balance);
    }


    modifier whenNotPaused() {
        require(!paused);
        _;
    }

    modifier whenPaused {
        require(paused);
        _;
    }

    function pause() public onlyMLevel whenNotPaused {
        paused = true;
    }

    function unpause() public onlyLeader whenPaused {
        paused = false;
    }
    
    
}


contract ERC20{

bool public isERC20 = true;

function balanceOf(address who) constant returns (uint256);

function transfer(address _to, uint256 _value) returns (bool);

function transferFrom(address _from, address _to, uint256 _value) returns (bool);

function approve(address _spender, uint256 _value) returns (bool);

function allowance(address _owner, address _spender) constant returns (uint256);

}


contract HeroLedger is HeroAccessControl{
    ERC20 public erc20;
    
    mapping (address => uint256) public ownerIndexToERC20Balance;  
    mapping (address => uint256) public ownerIndexToERC20Used;  
    uint256 public totalBalance;
    uint256 public totalUsed;
    
    uint256 public totalPromo;
    uint256 public candy;
        
    function setERC20Address(address _address,uint256 _totalPromo,uint256 _candy) public onlyLeader {
        ERC20 candidateContract = ERC20(_address);
        require(candidateContract.isERC20());
        erc20 = candidateContract; 
        uint256 realTotal = erc20.balanceOf(this); 
        require(realTotal >= _totalPromo);
        totalPromo=_totalPromo;
        candy=_candy;
    }
    
    function setERC20TotalPromo(uint256 _totalPromo,uint256 _candy) public onlyLeader {
        uint256 realTotal = erc20.balanceOf(this);
        totalPromo +=_totalPromo;
        require(realTotal - totalBalance >= totalPromo); 
        
        candy=_candy;
    }
 
    function charge(uint256 amount) public {
    		if(erc20.transferFrom(msg.sender, this, amount)){
    				ownerIndexToERC20Balance[msg.sender] += amount;
    				totalBalance +=amount;
    		}
    }	
		
		function collect(uint256 amount) public {
				require(ownerIndexToERC20Balance[msg.sender] >= amount);
    		if(erc20.transfer(msg.sender, amount)){
    				ownerIndexToERC20Balance[msg.sender] -= amount;
    				totalBalance -=amount;
    		}
    }
    
    function withdrawERC20Balance(uint256 amount) external onlyLeader {
        uint256 realTotal = erc20.balanceOf(this);
     		require((realTotal -  (totalPromo  + totalBalance- totalUsed ) )  >=amount);
        erc20.transfer(leaderAddress, amount);
        totalBalance -=amount;
        totalUsed -=amount;
    }
    
    
    function withdrawOtherERC20Balance(uint256 amount, address _address) external onlyLeader {
    		require(_address != address(erc20));
    		require(_address != address(this));
        ERC20 candidateContract = ERC20(_address);
        uint256 realTotal = candidateContract.balanceOf(this);
        require( realTotal >= amount );
        candidateContract.transfer(leaderAddress, amount);
    }
    

}

contract HeroBase is  HeroLedger{
    event Recruitment(address indexed owner, uint256 heroId, uint256 yinId, uint256 yangId, uint256 talent);
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    event ItmesChange(uint256 indexed tokenId, uint256 items);
    
    address public magicStore;

    struct Hero {
        uint256 talent;
        uint64 recruitmentTime;
        uint64 cooldownEndTime;
        uint32 yinId;
        uint32 yangId;
        uint16 cooldownIndex;
        uint16 generation;        
        uint256 belongings;       
        uint32 items;
    }    
    
    uint32[14] public cooldowns = [
    
        uint32(1 minutes),
        uint32(2 minutes),
        uint32(5 minutes),
        uint32(10 minutes),
        uint32(30 minutes),
        uint32(1 hours),
        uint32(2 hours),
        uint32(4 hours),
        uint32(8 hours),
        uint32(16 hours),
        uint32(1 days),
        uint32(2 days),
        uint32(4 days),
        uint32(7 days)
    ];
        
    uint128 public cdFee = 118102796674000; 

    Hero[] heroes;
    mapping (uint256 => address) public heroIndexToOwner;
    mapping (address => uint256) ownershipTokenCount;

    mapping (uint256 => address) public heroIndexToApproved;   
    mapping (uint256 => uint32) public heroIndexToWin;   
    mapping (uint256 => uint32) public heroIndexToLoss;
  
    function _transfer(address _from, address _to, uint256 _tokenId) internal {
        ownershipTokenCount[_to]++;
        heroIndexToOwner[_tokenId] = _to;
        if (_from != address(0)) {
            ownershipTokenCount[_from]--;
            delete heroIndexToApproved[_tokenId];
        }
        Transfer(_from, _to, _tokenId);
    }

    function _createHero(
        uint256 _yinId,
        uint256 _yangId,
        uint256 _generation,
        uint256 _talent,
        address _owner
	)
        internal
        returns (uint)
    {
        require(_generation <= 65535);
       
        
        uint16 _cooldownIndex = uint16(_generation/2);
        if(_cooldownIndex > 13){
        	_cooldownIndex =13;
        }   
        Hero memory _hero = Hero({
            talent: _talent,
            recruitmentTime: uint64(now),
            cooldownEndTime: 0,
            yinId: uint32(_yinId),
            yangId: uint32(_yangId),
            cooldownIndex: _cooldownIndex,
            generation: uint16(_generation),
            belongings: _talent,
            items: uint32(0)
        });
        uint256 newHeroId = heroes.push(_hero) - 1;
        require(newHeroId <= 4294967295);
        Recruitment(
            _owner,
            newHeroId,
            uint256(_hero.yinId),
            uint256(_hero.yangId),
            _hero.talent
        );
        _transfer(0, _owner, newHeroId);

        return newHeroId;
    } 
    
    function setMagicStore(address _address) public onlyOPM{
       magicStore = _address;
    }
 
}

contract ERC721 {
    function implementsERC721() public pure returns (bool);
    function totalSupply() public view returns (uint256 total);
    function balanceOf(address _owner) public view returns (uint256 balance);
    function ownerOf(uint256 _tokenId) public view returns (address owner);
    function approve(address _to, uint256 _tokenId) public;
    function transferFrom(address _from, address _to, uint256 _tokenId) public;
    function transfer(address _to, uint256 _tokenId) public;
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
}

contract HeroOwnership is HeroBase, ERC721 {

    string public name = "MyHero";
    string public symbol = "MH";

    function implementsERC721() public pure returns (bool)
    {
        return true;
    }
    
    function _owns(address _claimant, uint256 _tokenId) internal view returns (bool) {
        return heroIndexToOwner[_tokenId] == _claimant;
    }

    function _approvedFor(address _claimant, uint256 _tokenId) internal view returns (bool) {
        return heroIndexToApproved[_tokenId] == _claimant;
    }

    function _approve(uint256 _tokenId, address _approved) internal {
        heroIndexToApproved[_tokenId] = _approved;
    }

    function rescueLostHero(uint256 _heroId, address _recipient) public onlyOPM whenNotPaused {
        require(_owns(this, _heroId));
        _transfer(this, _recipient, _heroId);
    }

    function balanceOf(address _owner) public view returns (uint256 count) {
        return ownershipTokenCount[_owner];
    }

    function transfer(
        address _to,
        uint256 _tokenId
    )
        public
    {
        require(_to != address(0));
        require(_owns(msg.sender, _tokenId));
        _transfer(msg.sender, _to, _tokenId);
    }

    function approve(
        address _to,
        uint256 _tokenId
    )
        public
        whenNotPaused
    {
        require(_owns(msg.sender, _tokenId));
        _approve(_tokenId, _to);
        Approval(msg.sender, _to, _tokenId);
    }

    function transferFrom(
        address _from,
        address _to,
        uint256 _tokenId
    )
        public
    {
        require(_approvedFor(msg.sender, _tokenId));
        require(_owns(_from, _tokenId));
        _transfer(_from, _to, _tokenId);
    }

    function totalSupply() public view returns (uint) {
        return heroes.length - 1;
    }

    function ownerOf(uint256 _tokenId)
        public
        view
        returns (address owner)
    {
        owner = heroIndexToOwner[_tokenId];

        require(owner != address(0));
    }

    function tokensOfOwnerByIndex(address _owner, uint256 _index)
        external
        view
        returns (uint256 tokenId)
    {
        uint256 count = 0;
        for (uint256 i = 1; i <= totalSupply(); i++) {
            if (heroIndexToOwner[i] == _owner) {
                if (count == _index) {
                    return i;
                } else {
                    count++;
                }
            }
        }
        revert();
    }

}

contract MasterRecruitmentInterface {
    function isMasterRecruitment() public pure returns (bool);   
    function fightMix(uint256 belongings1, uint256 belongings2) public returns (bool,uint256,uint256,uint256);    
}


contract HeroFighting is HeroOwnership {
  
    MasterRecruitmentInterface public masterRecruitment;
    function setMasterRecruitmentAddress(address _address) public onlyLeader {
        MasterRecruitmentInterface candidateContract = MasterRecruitmentInterface(_address);
        require(candidateContract.isMasterRecruitment());
        masterRecruitment = candidateContract;
    }

    function _triggerCooldown(Hero storage _newHero) internal {
        _newHero.cooldownEndTime = uint64(now + cooldowns[_newHero.cooldownIndex]);
        if (_newHero.cooldownIndex < 13) {
            _newHero.cooldownIndex += 1;
        }
    }

    function isReadyToFight(uint256 _heroId)
        public
        view
        returns (bool)
    {
        require(_heroId > 0);
	      Hero memory hero = heroes[_heroId];
        return (hero.cooldownEndTime <= now);
    }

    function _fight(uint32 _yinId, uint32 _yangId)
        internal 
        whenNotPaused
        returns(uint256)
    {
        Hero storage yin = heroes[_yinId];
        require(yin.recruitmentTime != 0);
        Hero storage yang = heroes[_yangId];
        uint16 parentGen = yin.generation;
        if (yang.generation > yin.generation) {
            parentGen = yang.generation;
        }        
        var (flag, childTalent, belongings1,  belongings2) = masterRecruitment.fightMix(yin.belongings,yang.belongings);
        yin.belongings = belongings1;
        yang.belongings = belongings2;                
	      if(!flag){      
           (_yinId,_yangId) = (_yangId,_yinId);
        }    
        address owner = heroIndexToOwner[_yinId];
        heroIndexToWin[_yinId] +=1;
        heroIndexToLoss[_yangId] +=1;
        uint256 newHeroId = _createHero(_yinId, _yangId, parentGen + 1, childTalent, owner); 
        _triggerCooldown(yang);
        _triggerCooldown(yin);
        return (newHeroId );
    }
    
    
   
    
     function reduceCDFee(uint256 heroId) 
         public 
         view 
         returns (uint256 fee)
    {
    		Hero memory hero = heroes[heroId];
    		require(hero.cooldownEndTime > now);
    		uint64 cdTime = uint64(hero.cooldownEndTime-now);
    		fee= uint256(cdTime * cdFee * (hero.cooldownIndex+1));
    		
    }
    
    
    
}


contract ClockAuction {
    //bool public isClockAuction = true;
    
    function withdrawBalance() external ;
      
    function order(uint256 _tokenId, uint256 orderAmount ,address buyer)
        public  returns (bool);
    
     function createAuction(
        uint256 _tokenId,
        uint256 _startingPrice,
        uint256 _endingPrice,
        uint256 _startingPriceEth,
        uint256 _endingPriceEth,
        uint256 _duration,
        address _seller
    )
        public;
    
    function getSeller(uint256 _tokenId)
        public
        returns
    (
        address seller
    ); 
    
     function getCurrentPrice(uint256 _tokenId, uint8 ccy)
        public
        view
        returns (uint256);
        
}

contract FightClockAuction is ClockAuction {
    bool public isFightClockAuction = true;
}

contract SaleClockAuction is ClockAuction {
    bool public isSaleClockAuction = true;
    function averageGen0SalePrice() public view returns (uint256);
}

contract HeroAuction is HeroFighting {

		SaleClockAuction public saleAuction;
    FightClockAuction public fightAuction;
    uint256 public ownerCut =500;    
    
    function setSaleAuctionAddress(address _address) public onlyLeader {
        SaleClockAuction candidateContract = SaleClockAuction(_address);
        require(candidateContract.isSaleClockAuction());
        saleAuction = candidateContract;
    }

    function setFightAuctionAddress(address _address) public onlyLeader {
        FightClockAuction candidateContract = FightClockAuction(_address);
        require(candidateContract.isFightClockAuction());
        fightAuction = candidateContract;
    }
    

    function createSaleAuction(
        uint256 _heroId,
        uint256 _startingPrice,
        uint256 _endingPrice,
        uint256 _startingPriceEth,
        uint256 _endingPriceEth,
        uint256 _duration
    )
        public
    {
        require(_owns(msg.sender, _heroId));
        _approve(_heroId, saleAuction);
        saleAuction.createAuction(
            _heroId,
            _startingPrice,
            _endingPrice,
            _startingPriceEth,
            _endingPriceEth,
            _duration,
            msg.sender
        );
    }
    
    function orderOnSaleAuction(
        uint256 _heroId,
        uint256 orderAmount
    )
        public
    {
        require(ownerIndexToERC20Balance[msg.sender] >= orderAmount); 
        address saller = saleAuction.getSeller(_heroId);
        uint256 price = saleAuction.getCurrentPrice(_heroId,1);
        require( price <= orderAmount && saller != address(0));
       
        if(saleAuction.order(_heroId, orderAmount, msg.sender)  &&orderAmount >0 ){
         
	          ownerIndexToERC20Balance[msg.sender] -= orderAmount;
	    		  ownerIndexToERC20Used[msg.sender] += orderAmount;  
	    		  
	    		  if( saller == address(this)){
	    		     totalUsed +=orderAmount;
	    		  }else{
	    		     uint256 cut = _computeCut(price);
	    		     totalUsed += (orderAmount - price +cut);
	    		     ownerIndexToERC20Balance[saller] += price -cut;
	    		  }	
         } 
          
        
    }
    

    function createFightAuction(
        uint256 _heroId,
        uint256 _startingPrice,
        uint256 _endingPrice,
        uint256 _duration
    )
        public
        whenNotPaused
    {
        require(_owns(msg.sender, _heroId));
        require(isReadyToFight(_heroId));
        _approve(_heroId, fightAuction);
        fightAuction.createAuction(
            _heroId,
            _startingPrice,
            _endingPrice,
            0,
            0,
            _duration,
            msg.sender
        );
    }    

    function orderOnFightAuction(
        uint256 _yangId,
        uint256 _yinId,
        uint256 orderAmount
    )
        public
        whenNotPaused
    {
        require(_owns(msg.sender, _yinId));
        require(isReadyToFight(_yinId));
        require(_yinId !=_yangId);
        require(ownerIndexToERC20Balance[msg.sender] >= orderAmount);
        
        address saller= fightAuction.getSeller(_yangId);
        uint256 price = fightAuction.getCurrentPrice(_yangId,1);
      
        require( price <= orderAmount && saller != address(0));
        
        if(fightAuction.order(_yangId, orderAmount, msg.sender)){
	         _fight(uint32(_yinId), uint32(_yangId));
	        ownerIndexToERC20Balance[msg.sender] -= orderAmount;
	    		ownerIndexToERC20Used[msg.sender] += orderAmount;  
	    		
    		  if( saller == address(this)){
    		     totalUsed +=orderAmount;
    		  }else{
    		     uint256 cut = _computeCut(price);
    		     totalUsed += (orderAmount - price+cut);
    		     ownerIndexToERC20Balance[saller] += price-cut;
    		  }	  
	        
        }
    }

    function withdrawAuctionBalances() external onlyOPM {
        saleAuction.withdrawBalance();
        fightAuction.withdrawBalance();
    }
    
    function setCut(uint256 newCut) public onlyOPM{
        ownerCut = newCut;
    }
    
    
    function _computeCut(uint256 _price) internal view returns (uint256) {
        return _price * ownerCut / 10000;
    }  
    
    
    function promoBun(address _address) public {
        require(msg.sender == address(saleAuction));
        if(totalPromo >= candy && candy > 0){
          ownerIndexToERC20Balance[_address] += candy;
          totalPromo -=candy;
         }
    } 

}

contract HeroMinting is HeroAuction {

    uint256 public promoCreationLimit = 5000;
    uint256 public gen0CreationLimit = 50000;
    
    uint256 public gen0StartingPrice = 100000000000000000;
    uint256 public gen0AuctionDuration = 1 days;

    uint256 public promoCreatedCount;
    uint256 public gen0CreatedCount;

    function createPromoHero(uint256 _talent, address _owner) public onlyOPM {
        if (_owner == address(0)) {
             _owner = opmAddress;
        }
        require(promoCreatedCount < promoCreationLimit);
        require(gen0CreatedCount < gen0CreationLimit);

        promoCreatedCount++;
        gen0CreatedCount++;
        _createHero(0, 0, 0, _talent, _owner);
    }

    function createGen0Auction(uint256 _talent,uint256 price) public onlyOPM {
        require(gen0CreatedCount < gen0CreationLimit);
        require(price < 340282366920938463463374607431768211455);

        uint256 heroId = _createHero(0, 0, 0, _talent, address(this));
        _approve(heroId, saleAuction);
				if(price == 0 ){
				     price = _computeNextGen0Price();
				}
				
        saleAuction.createAuction(
            heroId,
            price *1000,
            0,
            price,
            0,
            gen0AuctionDuration,
            address(this)
        );

        gen0CreatedCount++;
    }

    function _computeNextGen0Price() internal view returns (uint256) {
        uint256 avePrice = saleAuction.averageGen0SalePrice();

        require(avePrice < 340282366920938463463374607431768211455);

        uint256 nextPrice = avePrice + (avePrice / 2);

        if (nextPrice < gen0StartingPrice) {
            nextPrice = gen0StartingPrice;
        }

        return nextPrice;
    }
    
    
}

contract HeroCore is HeroMinting {

    address public newContractAddress;

    function HeroCore() public {

        paused = true;

        leaderAddress = msg.sender;

        opmAddress = msg.sender;

        _createHero(0, 0, 0, uint256(-1), address(0));
    }

    function setNewAddress(address _v2Address) public onlyLeader whenPaused {
        newContractAddress = _v2Address;
        ContractUpgrade(_v2Address);
    }

    function() external payable {
        require(
            msg.sender != address(0)
        );
    }
    
    function getHero(uint256 _id)
        public
        view
        returns (
        bool isReady,
        uint256 cooldownIndex,
        uint256 nextActionAt,
        uint256 recruitmentTime,
        uint256 yinId,
        uint256 yangId,
        uint256 generation,
	      uint256 talent,
	      uint256 belongings,
	      uint32 items
	    
    ) {
        Hero storage her = heroes[_id];
        isReady = (her.cooldownEndTime <= now);
        cooldownIndex = uint256(her.cooldownIndex);
        nextActionAt = uint256(her.cooldownEndTime);
        recruitmentTime = uint256(her.recruitmentTime);
        yinId = uint256(her.yinId);
        yangId = uint256(her.yangId);
        generation = uint256(her.generation);
	      talent = her.talent;
	      belongings = her.belongings;
	      items = her.items;
    }

    function unpause() public onlyLeader whenPaused {
        require(saleAuction != address(0));
        require(fightAuction != address(0));
        require(masterRecruitment != address(0));
        require(erc20 != address(0));
        require(newContractAddress == address(0));

        super.unpause();
    }
    
    
     function setNewCdFee(uint128 _cdFee) public onlyOPM {
        cdFee = _cdFee;
    }
     
    function reduceCD(uint256 heroId,uint256 reduceAmount) 
         public  
         whenNotPaused 
    {
    		Hero storage hero = heroes[heroId];
    		require(hero.cooldownEndTime > now);
    		require(ownerIndexToERC20Balance[msg.sender] >= reduceAmount);
    		
    		uint64 cdTime = uint64(hero.cooldownEndTime-now);
    		require(reduceAmount >= uint256(cdTime * cdFee * (hero.cooldownIndex+1)));
    		
    		ownerIndexToERC20Balance[msg.sender] -= reduceAmount;
    		ownerIndexToERC20Used[msg.sender] += reduceAmount;  
        totalUsed +=reduceAmount;
    		hero.cooldownEndTime = uint64(now);
    }
    
    function useItems(uint32 _items, uint256 tokenId, address owner, uint256 fee) public returns (bool flag){
      require(msg.sender == magicStore);
      require(owner == heroIndexToOwner[tokenId]);        
         heroes[tokenId].items=_items;
         ItmesChange(tokenId,_items);      
      ownerIndexToERC20Balance[owner] -= fee;
    	ownerIndexToERC20Used[owner] += fee;  
      totalUsed +=fee;
      
      flag = true;
    }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"promoCreatedCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_heroId","type":"uint256"},{"name":"_startingPrice","type":"uint256"},{"name":"_endingPrice","type":"uint256"},{"name":"_duration","type":"uint256"}],"name":"createFightAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"implementsERC721","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"leaderAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_yangId","type":"uint256"},{"name":"_yinId","type":"uint256"},{"name":"orderAmount","type":"uint256"}],"name":"orderOnFightAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"setMagicStore","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"uint256"}],"name":"getHero","outputs":[{"name":"isReady","type":"bool"},{"name":"cooldownIndex","type":"uint256"},{"name":"nextActionAt","type":"uint256"},{"name":"recruitmentTime","type":"uint256"},{"name":"yinId","type":"uint256"},{"name":"yangId","type":"uint256"},{"name":"generation","type":"uint256"},{"name":"talent","type":"uint256"},{"name":"belongings","type":"uint256"},{"name":"items","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"ownerIndexToERC20Used","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"setFightAuctionAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"gen0CreationLimit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newLeader","type":"address"}],"name":"setLeader","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_index","type":"uint256"}],"name":"tokensOfOwnerByIndex","outputs":[{"name":"tokenId","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_heroId","type":"uint256"},{"name":"orderAmount","type":"uint256"}],"name":"orderOnSaleAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"ownerIndexToERC20Balance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_totalPromo","type":"uint256"},{"name":"_candy","type":"uint256"}],"name":"setERC20TotalPromo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_heroId","type":"uint256"},{"name":"_startingPrice","type":"uint256"},{"name":"_endingPrice","type":"uint256"},{"name":"_startingPriceEth","type":"uint256"},{"name":"_endingPriceEth","type":"uint256"},{"name":"_duration","type":"uint256"}],"name":"createSaleAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"setMasterRecruitmentAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"},{"name":"_totalPromo","type":"uint256"},{"name":"_candy","type":"uint256"}],"name":"setERC20Address","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":"withdrawBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"masterRecruitment","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOPM","type":"address"}],"name":"setOPM","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"newContractAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"setSaleAuctionAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"count","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_v2Address","type":"address"}],"name":"setNewAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newCut","type":"uint256"}],"name":"setCut","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"erc20","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_heroId","type":"uint256"},{"name":"_recipient","type":"address"}],"name":"rescueLostHero","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ownerCut","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"magicStore","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawAuctionBalances","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"heroIndexToWin","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"cooldowns","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fightAuction","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_talent","type":"uint256"},{"name":"_owner","type":"address"}],"name":"createPromoHero","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"cdFee","outputs":[{"name":"","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_cdFee","type":"uint128"}],"name":"setNewCdFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"heroIndexToLoss","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"heroIndexToOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"heroId","type":"uint256"}],"name":"reduceCDFee","outputs":[{"name":"fee","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"withdrawERC20Balance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"gen0StartingPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"},{"name":"_address","type":"address"}],"name":"withdrawOtherERC20Balance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalUsed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"heroId","type":"uint256"},{"name":"reduceAmount","type":"uint256"}],"name":"reduceCD","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"promoCreationLimit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"collect","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"promoBun","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalPromo","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"opmAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"heroIndexToApproved","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_items","type":"uint32"},{"name":"tokenId","type":"uint256"},{"name":"owner","type":"address"},{"name":"fee","type":"uint256"}],"name":"useItems","outputs":[{"name":"flag","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"charge","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"saleAuction","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gen0AuctionDuration","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_heroId","type":"uint256"}],"name":"isReadyToFight","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gen0CreatedCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"candy","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_talent","type":"uint256"},{"name":"price","type":"uint256"}],"name":"createGen0Auction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":true,"name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"approved","type":"address"},{"indexed":true,"name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":false,"name":"heroId","type":"uint256"},{"indexed":false,"name":"yinId","type":"uint256"},{"indexed":false,"name":"yangId","type":"uint256"},{"indexed":false,"name":"talent","type":"uint256"}],"name":"Recruitment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"items","type":"uint256"}],"name":"ItmesChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newContract","type":"address"}],"name":"ContractUpgrade","type":"event"}]

606060409081526001805460a060020a60ff02191690556101c090519081016040908152603c82526078602083015261012c9082015261025860608201526107086080820152610e1060a0820152611c2060c082015261384060e082015261708061010082015261e100610120820152620151806101408201526202a3006101608201526205460061018082015262093a806101a0820152620000a790600a90600e6200053c565b50600c80546001608060020a031916656b69f33e23d017905560408051908101604052600681527f4d794865726f00000000000000000000000000000000000000000000000000006020820152601390805162000109929160200190620005df565b5060408051908101604052600281527f4d480000000000000000000000000000000000000000000000000000000000006020820152601490805162000153929160200190620005df565b506101f460185561138860195561c350601a5567016345785d8a0000601b5562015180601c5534156200018557600080fd5b6001805460008054600160a060020a033316600160a060020a03199182168117835560a060020a60ff0219909316740100000000000000000000000000000000000000001716909117909155620001f09080806000198164010000000062002e96620001f782021704565b5062000780565b6000806200020462000660565b600061ffff8711156200021657600080fd5b600287049250600d8361ffff1611156200022f57600d92505b61012060405190810160409081528782526001604060020a0342166020830152600090820181905263ffffffff808c1660608401528a16608083015261ffff80861660a0840152891660c083015260e08201889052610100820152600d8054919350600191808301620002a38382620006ac565b6000928352602090922085916004020181518155602082015160018201805467ffffffffffffffff19166001604060020a039290921691909117905560408201518160010160086101000a8154816001604060020a0302191690836001604060020a0316021790555060608201518160010160106101000a81548163ffffffff021916908363ffffffff16021790555060808201518160010160146101000a81548163ffffffff021916908363ffffffff16021790555060a08201518160010160186101000a81548161ffff021916908361ffff16021790555060c082015181600101601a6101000a81548161ffff021916908361ffff16021790555060e08201518160020155610100820151600391909101805463ffffffff191663ffffffff92831617905592909103925050811115620003de57600080fd5b84600160a060020a03167f9b73c004d86df6be87798e8c67fba0e1dafd8860823270bc5c66a5ba3c4235d282846060015163ffffffff16856080015163ffffffff1686516040518085815260200184815260200183815260200182815260200194505050505060405180910390a2620004686000868364010000000062002d7c6200047482021704565b98975050505050505050565b600160a060020a038083166000818152600f6020908152604080832080546001019055858352600e90915290208054600160a060020a0319169091179055831615620004f657600160a060020a0383166000908152600f602090815260408083208054600019019055838352601090915290208054600160a060020a03191690555b8082600160a060020a031684600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600283019183908215620005cd5791602002820160005b838211156200059957835183826101000a81548163ffffffff021916908363ffffffff160217905550926020019260040160208160030104928301926001030262000553565b8015620005cb5782816101000a81549063ffffffff021916905560040160208160030104928301926001030262000599565b505b50620005db929150620006e0565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200062257805160ff191683800117855562000652565b8280016001018555821562000652579182015b828111156200065257825182559160200191906001019062000635565b50620005db92915062000707565b6101206040519081016040908152600080835260208301819052908201819052606082018190526080820181905260a0820181905260c0820181905260e0820181905261010082015290565b815481835581811511620006db57600402816004028360005260206000209182019101620006db919062000724565b505050565b6200070491905b80821115620005db57805463ffffffff19168155600101620006e7565b90565b6200070491905b80821115620005db57600081556001016200070e565b6200070491905b80821115620005db5760008082556001820180547fffffffff00000000000000000000000000000000000000000000000000000000169055600282015560038101805463ffffffff191690556004016200072b565b61335d80620007906000396000f30060606040526004361061031e5763ffffffff60e060020a60003504166305e45546811461033557806306fdde031461035a57806307120872146103e4578063095ea7b3146104035780631051db341461042557806310abda2b1461044c57806318160ddd1461047b5780631a4377801461048e5780631cbdca8f146104aa57806321d80111146104c957806323b872dd1461053c578063362f2610146105645780633dac35df146105835780633f4ba83a146105a2578063404d0e3e146105b55780634331e8dd146105c85780634707f44f146105e757806355f03816146106095780635701b9271461062257806357f5abe51461064157806359179dbd1461065a57806359b583851461067f5780635b7fa2f91461069e5780635c975abb146106c35780635fd8c710146106d657806360af9f91146106e95780636352211e146106fc57806363a1512e146107125780636af04a57146107315780636fbde40d1461074457806370a08231146107635780637158798814610782578063727cdf87146107a1578063785e9e86146107b75780637e9cd30c146107ca57806383b5ff8b146107ec5780638456cb59146107ff5780638ba93fcb1461081257806391876e5714610825578063949a59f21461083857806395d89b41146108675780639d6fac6f1461087a578063a3d0745214610890578063a48de68b146108a3578063a515aaeb146108c5578063a56b3d11146108f4578063a6504c9b14610913578063a9059cbb14610929578063aa54beac1461094b578063ab9af16614610961578063ad7a672f14610977578063addf08131461098a578063ae4d0ff7146109a0578063b2a11ab1146109b3578063b2e2c75f146109d5578063b37139e6146109e8578063b531933514610a01578063ce3f865f14610a14578063d357eb8714610a2a578063d79e375514610a49578063dc31e47314610a5c578063de3e305f14610a6f578063e22fcd0814610a85578063e457e1e514610ab3578063e6cbe35114610ac9578063eb845c1714610adc578063edc11a1114610aef578063f1ca941014610b05578063f616ce3c14610b18578063fd01249c14610b2b575b33600160a060020a0316151561033357600080fd5b005b341561034057600080fd5b610348610b44565b60405190815260200160405180910390f35b341561036557600080fd5b61036d610b4a565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156103a9578082015183820152602001610391565b50505050905090810190601f1680156103d65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103ef57600080fd5b610333600435602435604435606435610be8565b341561040e57600080fd5b610333600160a060020a0360043516602435610cd8565b341561043057600080fd5b610438610d53565b604051901515815260200160405180910390f35b341561045757600080fd5b61045f610d59565b604051600160a060020a03909116815260200160405180910390f35b341561048657600080fd5b610348610d68565b341561049957600080fd5b610333600435602435604435610d72565b34156104b557600080fd5b610333600160a060020a0360043516611013565b34156104d457600080fd5b6104df600435611050565b6040519915158a5260208a01989098526040808a01979097526060890195909552608088019390935260a087019190915260c086015260e085015261010084015263ffffffff909116610120830152610140909101905180910390f35b341561054757600080fd5b610333600160a060020a0360043581169060243516604435611191565b341561056f57600080fd5b610348600160a060020a03600435166111cb565b341561058e57600080fd5b610333600160a060020a03600435166111dd565b34156105ad57600080fd5b61033361128a565b34156105c057600080fd5b610348611339565b34156105d357600080fd5b610333600160a060020a036004351661133f565b34156105f257600080fd5b610348600160a060020a0360043516602435611391565b341561061457600080fd5b6103336004356024356113f3565b341561062d57600080fd5b610348600160a060020a0360043516611644565b341561064c57600080fd5b610333600435602435611656565b341561066557600080fd5b61033360043560243560443560643560843560a43561170b565b341561068a57600080fd5b610333600160a060020a03600435166117d1565b34156106a957600080fd5b610333600160a060020a036004351660243560443561187e565b34156106ce57600080fd5b6104386119b1565b34156106e157600080fd5b6103336119c1565b34156106f457600080fd5b61045f611a15565b341561070757600080fd5b61045f600435611a24565b341561071d57600080fd5b610333600160a060020a0360043516611a4d565b341561073c57600080fd5b61045f611a9f565b341561074f57600080fd5b610333600160a060020a0360043516611aae565b341561076e57600080fd5b610348600160a060020a0360043516611b5b565b341561078d57600080fd5b610333600160a060020a0360043516611b76565b34156107ac57600080fd5b610333600435611c04565b34156107c257600080fd5b61045f611c24565b34156107d557600080fd5b610333600435600160a060020a0360243516611c33565b34156107f757600080fd5b610348611c89565b341561080a57600080fd5b610333611c8f565b341561081d57600080fd5b61045f611d02565b341561083057600080fd5b610333611d11565b341561084357600080fd5b61084e600435611dd0565b60405163ffffffff909116815260200160405180910390f35b341561087257600080fd5b61036d611de8565b341561088557600080fd5b61084e600435611e53565b341561089b57600080fd5b61045f611e80565b34156108ae57600080fd5b610333600435600160a060020a0360243516611e8f565b34156108d057600080fd5b6108d8611f0b565b6040516001608060020a03909116815260200160405180910390f35b34156108ff57600080fd5b6103336001608060020a0360043516611f1a565b341561091e57600080fd5b61084e600435611f60565b341561093457600080fd5b610333600160a060020a0360043516602435611f78565b341561095657600080fd5b61045f600435611fad565b341561096c57600080fd5b610348600435611fc8565b341561098257600080fd5b6103486120f6565b341561099557600080fd5b6103336004356120fc565b34156109ab57600080fd5b610348612242565b34156109be57600080fd5b610333600435600160a060020a0360243516612248565b34156109e057600080fd5b6103486123ac565b34156109f357600080fd5b6103336004356024356123b2565b3415610a0c57600080fd5b61034861250a565b3415610a1f57600080fd5b610333600435612510565b3415610a3557600080fd5b610333600160a060020a03600435166125e1565b3415610a5457600080fd5b610348612648565b3415610a6757600080fd5b61045f61264e565b3415610a7a57600080fd5b61045f60043561265d565b3415610a9057600080fd5b61043863ffffffff60043516602435600160a060020a0360443516606435612678565b3415610abe57600080fd5b610333600435612778565b3415610ad457600080fd5b61045f61282d565b3415610ae757600080fd5b61034861283c565b3415610afa57600080fd5b610438600435612842565b3415610b1057600080fd5b610348612930565b3415610b2357600080fd5b610348612936565b3415610b3657600080fd5b61033360043560243561293c565b601d5481565b60138054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610be05780601f10610bb557610100808354040283529160200191610be0565b820191906000526020600020905b815481529060010190602001808311610bc357829003601f168201915b505050505081565b60015460a060020a900460ff1615610bff57600080fd5b610c093385612a73565b1515610c1457600080fd5b610c1d84612842565b1515610c2857600080fd5b601754610c3f908590600160a060020a0316612a93565b601754600160a060020a0316632b549b82858585600080873360405160e060020a63ffffffff8a160281526004810197909752602487019590955260448601939093526064850191909152608484015260a4830152600160a060020a031660c482015260e401600060405180830381600087803b1515610cbe57600080fd5b6102c65a03f11515610ccf57600080fd5b50505050505050565b60015460a060020a900460ff1615610cef57600080fd5b610cf93382612a73565b1515610d0457600080fd5b610d0e8183612a93565b8082600160a060020a031633600160a060020a03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60015b90565b600054600160a060020a031681565b600d546000190190565b6001546000908190819060a060020a900460ff1615610d9057600080fd5b610d9a3386612a73565b1515610da557600080fd5b610dae85612842565b1515610db957600080fd5b84861415610dc657600080fd5b600160a060020a03331660009081526003602052604090205484901015610dec57600080fd5b601754600160a060020a031663d6a9de518760006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610e3d57600080fd5b6102c65a03f11515610e4e57600080fd5b5050506040518051601754909450600160a060020a0316905063c982e35387600160006040516020015260405160e060020a63ffffffff8516028152600481019290925260ff166024820152604401602060405180830381600087803b1515610eb657600080fd5b6102c65a03f11515610ec757600080fd5b5050506040518051925050838211801590610eea5750600160a060020a03831615155b1515610ef557600080fd5b601754600160a060020a031663f4accda587863360006040516020015260405160e060020a63ffffffff861602815260048101939093526024830191909152600160a060020a03166044820152606401602060405180830381600087803b1515610f5e57600080fd5b6102c65a03f11515610f6f57600080fd5b505050604051805190501561100b57610f888587612ac1565b50600160a060020a0333811660009081526003602090815260408083208054899003905560049091529020805486019055838116309091161415610fd357600680548501905561100b565b610fdc82612d50565b600680548487038301019055600160a060020a0384166000908152600360205260409020805482850301905590505b505050505050565b60015433600160a060020a0390811691161461102e57600080fd5b60098054600160a060020a031916600160a060020a0392909216919091179055565b6000806000806000806000806000806000600d8c81548110151561107057fe5b90600052602060002090600402019050428160010160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1611159a508060010160189054906101000a900461ffff1661ffff1699508060010160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1698508060010160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1697508060010160109054906101000a900463ffffffff1663ffffffff1696508060010160149054906101000a900463ffffffff1663ffffffff16955080600101601a9054906101000a900461ffff1661ffff16945080600001549350806002015492508060030160009054906101000a900463ffffffff169150509193959799509193959799565b61119b3382612d5c565b15156111a657600080fd5b6111b08382612a73565b15156111bb57600080fd5b6111c6838383612d7c565b505050565b60046020526000908152604090205481565b6000805433600160a060020a039081169116146111f957600080fd5b5080600160a060020a03811663443e1cf76000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561124157600080fd5b6102c65a03f1151561125257600080fd5b50505060405180519050151561126757600080fd5b60178054600160a060020a031916600160a060020a039290921691909117905550565b60005433600160a060020a039081169116146112a557600080fd5b60015460a060020a900460ff1615156112bd57600080fd5b601654600160a060020a031615156112d457600080fd5b601754600160a060020a031615156112eb57600080fd5b601554600160a060020a0316151561130257600080fd5b600254600160a060020a0316151561131957600080fd5b601f54600160a060020a03161561132f57600080fd5b611337612e43565b565b601a5481565b60005433600160a060020a0390811691161461135a57600080fd5b600160a060020a038116151561136f57600080fd5b60008054600160a060020a031916600160a060020a0392909216919091179055565b60008060015b61139f610d68565b81116113e6576000818152600e6020526040902054600160a060020a03868116911614156113de57838214156113d7578092506113eb565b6001909101905b600101611397565b600080fd5b505092915050565b600160a060020a033316600090815260036020526040812054819081908490101561141d57600080fd5b601654600160a060020a031663d6a9de518660006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561146e57600080fd5b6102c65a03f1151561147f57600080fd5b5050506040518051601654909450600160a060020a0316905063c982e35386600160006040516020015260405160e060020a63ffffffff8516028152600481019290925260ff166024820152604401602060405180830381600087803b15156114e757600080fd5b6102c65a03f115156114f857600080fd5b505050604051805192505083821180159061151b5750600160a060020a03831615155b151561152657600080fd5b601654600160a060020a031663f4accda586863360006040516020015260405160e060020a63ffffffff861602815260048101939093526024830191909152600160a060020a03166044820152606401602060405180830381600087803b151561158f57600080fd5b6102c65a03f115156115a057600080fd5b5050506040518051905080156115b65750600084115b1561163d57600160a060020a033381166000908152600360209081526040808320805489900390556004909152902080548601905583811630909116141561160557600680548501905561163d565b61160e82612d50565b600680548487038301019055600160a060020a0384166000908152600360205260409020805482850301905590505b5050505050565b60036020526000908152604090205481565b6000805433600160a060020a0390811691161461167257600080fd5b600254600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156116cb57600080fd5b6102c65a03f115156116dc57600080fd5b5050506040518051600780548601908190556005549193509083031015905061170457600080fd5b5060085550565b6117153387612a73565b151561172057600080fd5b601654611737908790600160a060020a0316612a93565b601654600160a060020a0316632b549b828787878787873360405160e060020a63ffffffff8a160281526004810197909752602487019590955260448601939093526064850191909152608484015260a4830152600160a060020a031660c482015260e401600060405180830381600087803b15156117b557600080fd5b6102c65a03f115156117c657600080fd5b505050505050505050565b6000805433600160a060020a039081169116146117ed57600080fd5b5080600160a060020a038116631bd2b37c6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561183557600080fd5b6102c65a03f1151561184657600080fd5b50505060405180519050151561185b57600080fd5b60158054600160a060020a031916600160a060020a039290921691909117905550565b60008054819033600160a060020a0390811691161461189c57600080fd5b84915081600160a060020a0316632eb67f536000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156118e557600080fd5b6102c65a03f115156118f657600080fd5b50505060405180519050151561190b57600080fd5b60028054600160a060020a031916600160a060020a038481169190911791829055166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561197a57600080fd5b6102c65a03f1151561198b57600080fd5b5050506040518051915050838110156119a357600080fd5b505060079190915560085550565b60015460a060020a900460ff1681565b60005433600160a060020a039081169116146119dc57600080fd5b600054600160a060020a039081169030163180156108fc0290604051600060405180830381858888f19350505050151561133757600080fd5b601554600160a060020a031681565b6000818152600e6020526040902054600160a060020a0316801515611a4857600080fd5b919050565b60005433600160a060020a03908116911614611a6857600080fd5b600160a060020a0381161515611a7d57600080fd5b60018054600160a060020a031916600160a060020a0392909216919091179055565b601f54600160a060020a031681565b6000805433600160a060020a03908116911614611aca57600080fd5b5080600160a060020a0381166385b861886000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611b1257600080fd5b6102c65a03f11515611b2357600080fd5b505050604051805190501515611b3857600080fd5b60168054600160a060020a031916600160a060020a039290921691909117905550565b600160a060020a03166000908152600f602052604090205490565b60005433600160a060020a03908116911614611b9157600080fd5b60015460a060020a900460ff161515611ba957600080fd5b601f8054600160a060020a031916600160a060020a0383161790557f450db8da6efbe9c22f2347f7c2021231df1fc58d3ae9a2fa75d39fa44619930581604051600160a060020a03909116815260200160405180910390a150565b60015433600160a060020a03908116911614611c1f57600080fd5b601855565b600254600160a060020a031681565b60015433600160a060020a03908116911614611c4e57600080fd5b60015460a060020a900460ff1615611c6557600080fd5b611c6f3083612a73565b1515611c7a57600080fd5b611c85308284612d7c565b5050565b60185481565b60015433600160a060020a0390811691161480611cba575060005433600160a060020a039081169116145b1515611cc557600080fd5b60015460a060020a900460ff1615611cdc57600080fd5b6001805474ff0000000000000000000000000000000000000000191660a060020a179055565b600954600160a060020a031681565b60015433600160a060020a03908116911614611d2c57600080fd5b601654600160a060020a0316635fd8c7106040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515611d6b57600080fd5b6102c65a03f11515611d7c57600080fd5b5050601754600160a060020a03169050635fd8c7106040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515611dbf57600080fd5b6102c65a03f115156111c657600080fd5b60116020526000908152604090205463ffffffff1681565b60148054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610be05780601f10610bb557610100808354040283529160200191610be0565b600a81600e8110611e6057fe5b60089182820401919006600402915054906101000a900463ffffffff1681565b601754600160a060020a031681565b60015433600160a060020a03908116911614611eaa57600080fd5b600160a060020a0381161515611ec85750600154600160a060020a03165b601954601d5410611ed857600080fd5b601a54601e5410611ee857600080fd5b601d80546001908101909155601e805490910190556111c6600080808585612e96565b600c546001608060020a031681565b60015433600160a060020a03908116911614611f3557600080fd5b600c80546fffffffffffffffffffffffffffffffff19166001608060020a0392909216919091179055565b60126020526000908152604090205463ffffffff1681565b600160a060020a0382161515611f8d57600080fd5b611f973382612a73565b1515611fa257600080fd5b611c85338383612d7c565b600e60205260009081526040902054600160a060020a031681565b6000611fd2613264565b6000600d84815481101515611fe357fe5b9060005260206000209060040201610120604051908101604090815282548252600183015467ffffffffffffffff80821660208501526801000000000000000082041691830191825263ffffffff70010000000000000000000000000000000082048116606085015260a060020a82048116608085015261ffff60c060020a8304811660a086015260d060020a90920490911660c0840152600284015460e0840152600390930154909216610100820152925042905167ffffffffffffffff16116120ad57600080fd5b42826040015167ffffffffffffffff160390508160a00151600c5467ffffffffffffffff9092166001608060020a039283160261ffff6001929092019190911602169392505050565b60055481565b6000805433600160a060020a0390811691161461211857600080fd5b600254600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561217157600080fd5b6102c65a03f1151561218257600080fd5b5050506040518051905090508160065460055460075401038203101515156121a957600080fd5b60025460008054600160a060020a039283169263a9059cbb9291169085906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561221157600080fd5b6102c65a03f1151561222257600080fd5b505050604051805150506005805483900390555060068054919091039055565b601b5481565b60008054819033600160a060020a0390811691161461226657600080fd5b600254600160a060020a038481169116141561228157600080fd5b30600160a060020a031683600160a060020a0316141515156122a257600080fd5b82915081600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156122fc57600080fd5b6102c65a03f1151561230d57600080fd5b50505060405180519150508381101561232557600080fd5b60008054600160a060020a038085169263a9059cbb929091169087906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561238b57600080fd5b6102c65a03f1151561239c57600080fd5b5050506040518051505050505050565b60065481565b600154600090819060a060020a900460ff16156123ce57600080fd5b600d8054859081106123dc57fe5b90600052602060002090600402019150428260010160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1611151561241c57600080fd5b600160a060020a0333166000908152600360205260409020548390101561244257600080fd5b50600180820154600c544267ffffffffffffffff680100000000000000008404811691909103939084166001608060020a039283160261ffff60c060020a9094048416909101909216919091021683101561249c57600080fd5b5033600160a060020a0316600090815260036020908152604080832080548690039055600490915290208054830190556006805490920190915560010180546fffffffffffffffff00000000000000001916680100000000000000004267ffffffffffffffff160217905550565b60195481565b600160a060020a0333166000908152600360205260409020548190101561253657600080fd5b600254600160a060020a031663a9059cbb338360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561259557600080fd5b6102c65a03f115156125a657600080fd5b50505060405180519050156125de57600160a060020a0333166000908152600360205260409020805482900390556005805482900390555b50565b60165433600160a060020a039081169116146125fc57600080fd5b6008546007541015801561261257506000600854115b156125de5760088054600160a060020a038316600090815260036020526040902080549091019055546007805491909103905550565b60075481565b600154600160a060020a031681565b601060205260009081526040902054600160a060020a031681565b60095460009033600160a060020a0390811691161461269657600080fd5b6000848152600e6020526040902054600160a060020a038481169116146126bc57600080fd5b84600d858154811015156126cc57fe5b906000526020600020906004020160030160006101000a81548163ffffffff021916908363ffffffff160217905550837ff7951baff512f059b50f5d5d9c41ac735002cea58e88fb8c089cdb033ade2c328660405163ffffffff909116815260200160405180910390a250600160a060020a0390911660009081526003602090815260408083208054859003905560049091529020805482019055600680549091019055506001919050565b600254600160a060020a03166323b872dd33308460006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b15156127e457600080fd5b6102c65a03f115156127f557600080fd5b50505060405180519050156125de57600160a060020a0333166000908152600360205260409020805482019055600580548201905550565b601654600160a060020a031681565b601c5481565b600061284c613264565b6000831161285957600080fd5b600d80548490811061286757fe5b9060005260206000209060040201610120604051908101604090815282548252600183015467ffffffffffffffff80821660208501526801000000000000000082041691830191825263ffffffff70010000000000000000000000000000000082048116606085015260a060020a82048116608085015261ffff60c060020a8304811660a086015260d060020a90920490911660c0840152600284015460e0840152600390930154909216610100820152915042905167ffffffffffffffff1611159392505050565b601e5481565b60085481565b60015460009033600160a060020a0390811691161461295a57600080fd5b601a54601e541061296a57600080fd5b6001608060020a03821061297d57600080fd5b61298c60008060008630612e96565b6016549091506129a6908290600160a060020a0316612a93565b8115156129b8576129b5613100565b91505b601660009054906101000a9004600160a060020a0316600160a060020a0316632b549b8282846103e8026000866000601c543060405160e060020a63ffffffff8a160281526004810197909752602487019590955260448601939093526064850191909152608484015260a4830152600160a060020a031660c482015260e401600060405180830381600087803b1515612a5157600080fd5b6102c65a03f11515612a6257600080fd5b5050601e8054600101905550505050565b6000908152600e6020526040902054600160a060020a0391821691161490565b6000918252601060205260409091208054600160a060020a031916600160a060020a03909216919091179055565b600080600080600080600080600080600160149054906101000a900460ff16151515612aec57600080fd5b600d805463ffffffff8e16908110612b0057fe5b60009182526020909120600490910201600181015490995067ffffffffffffffff161515612b2d57600080fd5b600d805463ffffffff8d16908110612b4157fe5b600091825260209091206001808c015460049093029091019081015490995061ffff60d060020a92839004811699509190041687901115612b8f57600188015460d060020a900461ffff1696505b6015546002808b0154908a0154600160a060020a0390921691630bb536a2919060006040516080015260405160e060020a63ffffffff851602815260048101929092526024820152604401608060405180830381600087803b1515612bf357600080fd5b6102c65a03f11515612c0457600080fd5b50505060405180519060200180519060200180519060200180516002808f018490558d01819055939950919750955090935050851515612c4257999a995b600e60008d63ffffffff16815260200190815260200160002060009054906101000a9004600160a060020a031691506001601160008e63ffffffff16815260200190815260200160002060008282829054906101000a900463ffffffff160192506101000a81548163ffffffff021916908363ffffffff1602179055506001601260008d63ffffffff16815260200190815260200160002060008282829054906101000a900463ffffffff160192506101000a81548163ffffffff021916908363ffffffff160217905550612d2d8c63ffffffff168c63ffffffff168960010161ffff168886612e96565b9050612d388861319a565b612d418961319a565b9b9a5050505050505050505050565b60185461271091020490565b600090815260106020526040902054600160a060020a0391821691161490565b600160a060020a038083166000818152600f6020908152604080832080546001019055858352600e90915290208054600160a060020a0319169091179055831615612dfd57600160a060020a0383166000908152600f602090815260408083208054600019019055838352601090915290208054600160a060020a03191690555b8082600160a060020a031684600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60005433600160a060020a03908116911614612e5e57600080fd5b60015460a060020a900460ff161515612e7657600080fd5b6001805474ff000000000000000000000000000000000000000019169055565b600080612ea1613264565b600061ffff871115612eb257600080fd5b600287049250600d8361ffff161115612eca57600d92505b610120604051908101604090815287825267ffffffffffffffff42166020830152600090820181905263ffffffff808c1660608401528a16608083015261ffff80861660a0840152891660c083015260e08201889052610100820152600d8054919350600191808301612f3d83826132b0565b6000928352602090922085916004020181518155602082015160018201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560408201518160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060608201518160010160106101000a81548163ffffffff021916908363ffffffff16021790555060808201518160010160146101000a81548163ffffffff021916908363ffffffff16021790555060a08201518160010160186101000a81548161ffff021916908361ffff16021790555060c082015181600101601a6101000a81548161ffff021916908361ffff16021790555060e08201518160020155610100820151600391909101805463ffffffff191663ffffffff9283161790559290910392505081111561307a57600080fd5b84600160a060020a03167f9b73c004d86df6be87798e8c67fba0e1dafd8860823270bc5c66a5ba3c4235d282846060015163ffffffff16856080015163ffffffff1686516040518085815260200184815260200183815260200182815260200194505050505060405180910390a26130f460008683612d7c565b98975050505050505050565b60165460009081908190600160a060020a031663eac9d94c82604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561314e57600080fd5b6102c65a03f1151561315f57600080fd5b50505060405180519250506001608060020a03821061317d57600080fd5b6002820482019050601b548110156131945750601b545b92915050565b6001810154600a9060c060020a900461ffff16600e81106131b757fe5b600880820492909201546001840180546fffffffffffffffff0000000000000000191668010000000000000000949093066004026101000a90910463ffffffff16420167ffffffffffffffff16929092021790819055600d60c060020a90910461ffff1610156125de576001818101805461ffff60c060020a80830482169094011690920279ffff0000000000000000000000000000000000000000000000001990921691909117905550565b6101206040519081016040908152600080835260208301819052908201819052606082018190526080820181905260a0820181905260c0820181905260e0820181905261010082015290565b8154818355818115116111c6576000838152602090206111c691610d569160049182028101918502015b8082111561332d5760008082556001820180547fffffffff00000000000000000000000000000000000000000000000000000000169055600282015560038101805463ffffffff191690556004016132da565b50905600a165627a7a7230582011073786b327879ce802072c7b348bf92767485e90c6a14dcfc41a22911132cf0029

Deployed Bytecode

0x60606040526004361061031e5763ffffffff60e060020a60003504166305e45546811461033557806306fdde031461035a57806307120872146103e4578063095ea7b3146104035780631051db341461042557806310abda2b1461044c57806318160ddd1461047b5780631a4377801461048e5780631cbdca8f146104aa57806321d80111146104c957806323b872dd1461053c578063362f2610146105645780633dac35df146105835780633f4ba83a146105a2578063404d0e3e146105b55780634331e8dd146105c85780634707f44f146105e757806355f03816146106095780635701b9271461062257806357f5abe51461064157806359179dbd1461065a57806359b583851461067f5780635b7fa2f91461069e5780635c975abb146106c35780635fd8c710146106d657806360af9f91146106e95780636352211e146106fc57806363a1512e146107125780636af04a57146107315780636fbde40d1461074457806370a08231146107635780637158798814610782578063727cdf87146107a1578063785e9e86146107b75780637e9cd30c146107ca57806383b5ff8b146107ec5780638456cb59146107ff5780638ba93fcb1461081257806391876e5714610825578063949a59f21461083857806395d89b41146108675780639d6fac6f1461087a578063a3d0745214610890578063a48de68b146108a3578063a515aaeb146108c5578063a56b3d11146108f4578063a6504c9b14610913578063a9059cbb14610929578063aa54beac1461094b578063ab9af16614610961578063ad7a672f14610977578063addf08131461098a578063ae4d0ff7146109a0578063b2a11ab1146109b3578063b2e2c75f146109d5578063b37139e6146109e8578063b531933514610a01578063ce3f865f14610a14578063d357eb8714610a2a578063d79e375514610a49578063dc31e47314610a5c578063de3e305f14610a6f578063e22fcd0814610a85578063e457e1e514610ab3578063e6cbe35114610ac9578063eb845c1714610adc578063edc11a1114610aef578063f1ca941014610b05578063f616ce3c14610b18578063fd01249c14610b2b575b33600160a060020a0316151561033357600080fd5b005b341561034057600080fd5b610348610b44565b60405190815260200160405180910390f35b341561036557600080fd5b61036d610b4a565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156103a9578082015183820152602001610391565b50505050905090810190601f1680156103d65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103ef57600080fd5b610333600435602435604435606435610be8565b341561040e57600080fd5b610333600160a060020a0360043516602435610cd8565b341561043057600080fd5b610438610d53565b604051901515815260200160405180910390f35b341561045757600080fd5b61045f610d59565b604051600160a060020a03909116815260200160405180910390f35b341561048657600080fd5b610348610d68565b341561049957600080fd5b610333600435602435604435610d72565b34156104b557600080fd5b610333600160a060020a0360043516611013565b34156104d457600080fd5b6104df600435611050565b6040519915158a5260208a01989098526040808a01979097526060890195909552608088019390935260a087019190915260c086015260e085015261010084015263ffffffff909116610120830152610140909101905180910390f35b341561054757600080fd5b610333600160a060020a0360043581169060243516604435611191565b341561056f57600080fd5b610348600160a060020a03600435166111cb565b341561058e57600080fd5b610333600160a060020a03600435166111dd565b34156105ad57600080fd5b61033361128a565b34156105c057600080fd5b610348611339565b34156105d357600080fd5b610333600160a060020a036004351661133f565b34156105f257600080fd5b610348600160a060020a0360043516602435611391565b341561061457600080fd5b6103336004356024356113f3565b341561062d57600080fd5b610348600160a060020a0360043516611644565b341561064c57600080fd5b610333600435602435611656565b341561066557600080fd5b61033360043560243560443560643560843560a43561170b565b341561068a57600080fd5b610333600160a060020a03600435166117d1565b34156106a957600080fd5b610333600160a060020a036004351660243560443561187e565b34156106ce57600080fd5b6104386119b1565b34156106e157600080fd5b6103336119c1565b34156106f457600080fd5b61045f611a15565b341561070757600080fd5b61045f600435611a24565b341561071d57600080fd5b610333600160a060020a0360043516611a4d565b341561073c57600080fd5b61045f611a9f565b341561074f57600080fd5b610333600160a060020a0360043516611aae565b341561076e57600080fd5b610348600160a060020a0360043516611b5b565b341561078d57600080fd5b610333600160a060020a0360043516611b76565b34156107ac57600080fd5b610333600435611c04565b34156107c257600080fd5b61045f611c24565b34156107d557600080fd5b610333600435600160a060020a0360243516611c33565b34156107f757600080fd5b610348611c89565b341561080a57600080fd5b610333611c8f565b341561081d57600080fd5b61045f611d02565b341561083057600080fd5b610333611d11565b341561084357600080fd5b61084e600435611dd0565b60405163ffffffff909116815260200160405180910390f35b341561087257600080fd5b61036d611de8565b341561088557600080fd5b61084e600435611e53565b341561089b57600080fd5b61045f611e80565b34156108ae57600080fd5b610333600435600160a060020a0360243516611e8f565b34156108d057600080fd5b6108d8611f0b565b6040516001608060020a03909116815260200160405180910390f35b34156108ff57600080fd5b6103336001608060020a0360043516611f1a565b341561091e57600080fd5b61084e600435611f60565b341561093457600080fd5b610333600160a060020a0360043516602435611f78565b341561095657600080fd5b61045f600435611fad565b341561096c57600080fd5b610348600435611fc8565b341561098257600080fd5b6103486120f6565b341561099557600080fd5b6103336004356120fc565b34156109ab57600080fd5b610348612242565b34156109be57600080fd5b610333600435600160a060020a0360243516612248565b34156109e057600080fd5b6103486123ac565b34156109f357600080fd5b6103336004356024356123b2565b3415610a0c57600080fd5b61034861250a565b3415610a1f57600080fd5b610333600435612510565b3415610a3557600080fd5b610333600160a060020a03600435166125e1565b3415610a5457600080fd5b610348612648565b3415610a6757600080fd5b61045f61264e565b3415610a7a57600080fd5b61045f60043561265d565b3415610a9057600080fd5b61043863ffffffff60043516602435600160a060020a0360443516606435612678565b3415610abe57600080fd5b610333600435612778565b3415610ad457600080fd5b61045f61282d565b3415610ae757600080fd5b61034861283c565b3415610afa57600080fd5b610438600435612842565b3415610b1057600080fd5b610348612930565b3415610b2357600080fd5b610348612936565b3415610b3657600080fd5b61033360043560243561293c565b601d5481565b60138054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610be05780601f10610bb557610100808354040283529160200191610be0565b820191906000526020600020905b815481529060010190602001808311610bc357829003601f168201915b505050505081565b60015460a060020a900460ff1615610bff57600080fd5b610c093385612a73565b1515610c1457600080fd5b610c1d84612842565b1515610c2857600080fd5b601754610c3f908590600160a060020a0316612a93565b601754600160a060020a0316632b549b82858585600080873360405160e060020a63ffffffff8a160281526004810197909752602487019590955260448601939093526064850191909152608484015260a4830152600160a060020a031660c482015260e401600060405180830381600087803b1515610cbe57600080fd5b6102c65a03f11515610ccf57600080fd5b50505050505050565b60015460a060020a900460ff1615610cef57600080fd5b610cf93382612a73565b1515610d0457600080fd5b610d0e8183612a93565b8082600160a060020a031633600160a060020a03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60015b90565b600054600160a060020a031681565b600d546000190190565b6001546000908190819060a060020a900460ff1615610d9057600080fd5b610d9a3386612a73565b1515610da557600080fd5b610dae85612842565b1515610db957600080fd5b84861415610dc657600080fd5b600160a060020a03331660009081526003602052604090205484901015610dec57600080fd5b601754600160a060020a031663d6a9de518760006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610e3d57600080fd5b6102c65a03f11515610e4e57600080fd5b5050506040518051601754909450600160a060020a0316905063c982e35387600160006040516020015260405160e060020a63ffffffff8516028152600481019290925260ff166024820152604401602060405180830381600087803b1515610eb657600080fd5b6102c65a03f11515610ec757600080fd5b5050506040518051925050838211801590610eea5750600160a060020a03831615155b1515610ef557600080fd5b601754600160a060020a031663f4accda587863360006040516020015260405160e060020a63ffffffff861602815260048101939093526024830191909152600160a060020a03166044820152606401602060405180830381600087803b1515610f5e57600080fd5b6102c65a03f11515610f6f57600080fd5b505050604051805190501561100b57610f888587612ac1565b50600160a060020a0333811660009081526003602090815260408083208054899003905560049091529020805486019055838116309091161415610fd357600680548501905561100b565b610fdc82612d50565b600680548487038301019055600160a060020a0384166000908152600360205260409020805482850301905590505b505050505050565b60015433600160a060020a0390811691161461102e57600080fd5b60098054600160a060020a031916600160a060020a0392909216919091179055565b6000806000806000806000806000806000600d8c81548110151561107057fe5b90600052602060002090600402019050428160010160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1611159a508060010160189054906101000a900461ffff1661ffff1699508060010160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1698508060010160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1697508060010160109054906101000a900463ffffffff1663ffffffff1696508060010160149054906101000a900463ffffffff1663ffffffff16955080600101601a9054906101000a900461ffff1661ffff16945080600001549350806002015492508060030160009054906101000a900463ffffffff169150509193959799509193959799565b61119b3382612d5c565b15156111a657600080fd5b6111b08382612a73565b15156111bb57600080fd5b6111c6838383612d7c565b505050565b60046020526000908152604090205481565b6000805433600160a060020a039081169116146111f957600080fd5b5080600160a060020a03811663443e1cf76000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561124157600080fd5b6102c65a03f1151561125257600080fd5b50505060405180519050151561126757600080fd5b60178054600160a060020a031916600160a060020a039290921691909117905550565b60005433600160a060020a039081169116146112a557600080fd5b60015460a060020a900460ff1615156112bd57600080fd5b601654600160a060020a031615156112d457600080fd5b601754600160a060020a031615156112eb57600080fd5b601554600160a060020a0316151561130257600080fd5b600254600160a060020a0316151561131957600080fd5b601f54600160a060020a03161561132f57600080fd5b611337612e43565b565b601a5481565b60005433600160a060020a0390811691161461135a57600080fd5b600160a060020a038116151561136f57600080fd5b60008054600160a060020a031916600160a060020a0392909216919091179055565b60008060015b61139f610d68565b81116113e6576000818152600e6020526040902054600160a060020a03868116911614156113de57838214156113d7578092506113eb565b6001909101905b600101611397565b600080fd5b505092915050565b600160a060020a033316600090815260036020526040812054819081908490101561141d57600080fd5b601654600160a060020a031663d6a9de518660006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561146e57600080fd5b6102c65a03f1151561147f57600080fd5b5050506040518051601654909450600160a060020a0316905063c982e35386600160006040516020015260405160e060020a63ffffffff8516028152600481019290925260ff166024820152604401602060405180830381600087803b15156114e757600080fd5b6102c65a03f115156114f857600080fd5b505050604051805192505083821180159061151b5750600160a060020a03831615155b151561152657600080fd5b601654600160a060020a031663f4accda586863360006040516020015260405160e060020a63ffffffff861602815260048101939093526024830191909152600160a060020a03166044820152606401602060405180830381600087803b151561158f57600080fd5b6102c65a03f115156115a057600080fd5b5050506040518051905080156115b65750600084115b1561163d57600160a060020a033381166000908152600360209081526040808320805489900390556004909152902080548601905583811630909116141561160557600680548501905561163d565b61160e82612d50565b600680548487038301019055600160a060020a0384166000908152600360205260409020805482850301905590505b5050505050565b60036020526000908152604090205481565b6000805433600160a060020a0390811691161461167257600080fd5b600254600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156116cb57600080fd5b6102c65a03f115156116dc57600080fd5b5050506040518051600780548601908190556005549193509083031015905061170457600080fd5b5060085550565b6117153387612a73565b151561172057600080fd5b601654611737908790600160a060020a0316612a93565b601654600160a060020a0316632b549b828787878787873360405160e060020a63ffffffff8a160281526004810197909752602487019590955260448601939093526064850191909152608484015260a4830152600160a060020a031660c482015260e401600060405180830381600087803b15156117b557600080fd5b6102c65a03f115156117c657600080fd5b505050505050505050565b6000805433600160a060020a039081169116146117ed57600080fd5b5080600160a060020a038116631bd2b37c6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561183557600080fd5b6102c65a03f1151561184657600080fd5b50505060405180519050151561185b57600080fd5b60158054600160a060020a031916600160a060020a039290921691909117905550565b60008054819033600160a060020a0390811691161461189c57600080fd5b84915081600160a060020a0316632eb67f536000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156118e557600080fd5b6102c65a03f115156118f657600080fd5b50505060405180519050151561190b57600080fd5b60028054600160a060020a031916600160a060020a038481169190911791829055166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561197a57600080fd5b6102c65a03f1151561198b57600080fd5b5050506040518051915050838110156119a357600080fd5b505060079190915560085550565b60015460a060020a900460ff1681565b60005433600160a060020a039081169116146119dc57600080fd5b600054600160a060020a039081169030163180156108fc0290604051600060405180830381858888f19350505050151561133757600080fd5b601554600160a060020a031681565b6000818152600e6020526040902054600160a060020a0316801515611a4857600080fd5b919050565b60005433600160a060020a03908116911614611a6857600080fd5b600160a060020a0381161515611a7d57600080fd5b60018054600160a060020a031916600160a060020a0392909216919091179055565b601f54600160a060020a031681565b6000805433600160a060020a03908116911614611aca57600080fd5b5080600160a060020a0381166385b861886000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611b1257600080fd5b6102c65a03f11515611b2357600080fd5b505050604051805190501515611b3857600080fd5b60168054600160a060020a031916600160a060020a039290921691909117905550565b600160a060020a03166000908152600f602052604090205490565b60005433600160a060020a03908116911614611b9157600080fd5b60015460a060020a900460ff161515611ba957600080fd5b601f8054600160a060020a031916600160a060020a0383161790557f450db8da6efbe9c22f2347f7c2021231df1fc58d3ae9a2fa75d39fa44619930581604051600160a060020a03909116815260200160405180910390a150565b60015433600160a060020a03908116911614611c1f57600080fd5b601855565b600254600160a060020a031681565b60015433600160a060020a03908116911614611c4e57600080fd5b60015460a060020a900460ff1615611c6557600080fd5b611c6f3083612a73565b1515611c7a57600080fd5b611c85308284612d7c565b5050565b60185481565b60015433600160a060020a0390811691161480611cba575060005433600160a060020a039081169116145b1515611cc557600080fd5b60015460a060020a900460ff1615611cdc57600080fd5b6001805474ff0000000000000000000000000000000000000000191660a060020a179055565b600954600160a060020a031681565b60015433600160a060020a03908116911614611d2c57600080fd5b601654600160a060020a0316635fd8c7106040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515611d6b57600080fd5b6102c65a03f11515611d7c57600080fd5b5050601754600160a060020a03169050635fd8c7106040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515611dbf57600080fd5b6102c65a03f115156111c657600080fd5b60116020526000908152604090205463ffffffff1681565b60148054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610be05780601f10610bb557610100808354040283529160200191610be0565b600a81600e8110611e6057fe5b60089182820401919006600402915054906101000a900463ffffffff1681565b601754600160a060020a031681565b60015433600160a060020a03908116911614611eaa57600080fd5b600160a060020a0381161515611ec85750600154600160a060020a03165b601954601d5410611ed857600080fd5b601a54601e5410611ee857600080fd5b601d80546001908101909155601e805490910190556111c6600080808585612e96565b600c546001608060020a031681565b60015433600160a060020a03908116911614611f3557600080fd5b600c80546fffffffffffffffffffffffffffffffff19166001608060020a0392909216919091179055565b60126020526000908152604090205463ffffffff1681565b600160a060020a0382161515611f8d57600080fd5b611f973382612a73565b1515611fa257600080fd5b611c85338383612d7c565b600e60205260009081526040902054600160a060020a031681565b6000611fd2613264565b6000600d84815481101515611fe357fe5b9060005260206000209060040201610120604051908101604090815282548252600183015467ffffffffffffffff80821660208501526801000000000000000082041691830191825263ffffffff70010000000000000000000000000000000082048116606085015260a060020a82048116608085015261ffff60c060020a8304811660a086015260d060020a90920490911660c0840152600284015460e0840152600390930154909216610100820152925042905167ffffffffffffffff16116120ad57600080fd5b42826040015167ffffffffffffffff160390508160a00151600c5467ffffffffffffffff9092166001608060020a039283160261ffff6001929092019190911602169392505050565b60055481565b6000805433600160a060020a0390811691161461211857600080fd5b600254600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561217157600080fd5b6102c65a03f1151561218257600080fd5b5050506040518051905090508160065460055460075401038203101515156121a957600080fd5b60025460008054600160a060020a039283169263a9059cbb9291169085906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561221157600080fd5b6102c65a03f1151561222257600080fd5b505050604051805150506005805483900390555060068054919091039055565b601b5481565b60008054819033600160a060020a0390811691161461226657600080fd5b600254600160a060020a038481169116141561228157600080fd5b30600160a060020a031683600160a060020a0316141515156122a257600080fd5b82915081600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156122fc57600080fd5b6102c65a03f1151561230d57600080fd5b50505060405180519150508381101561232557600080fd5b60008054600160a060020a038085169263a9059cbb929091169087906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561238b57600080fd5b6102c65a03f1151561239c57600080fd5b5050506040518051505050505050565b60065481565b600154600090819060a060020a900460ff16156123ce57600080fd5b600d8054859081106123dc57fe5b90600052602060002090600402019150428260010160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1611151561241c57600080fd5b600160a060020a0333166000908152600360205260409020548390101561244257600080fd5b50600180820154600c544267ffffffffffffffff680100000000000000008404811691909103939084166001608060020a039283160261ffff60c060020a9094048416909101909216919091021683101561249c57600080fd5b5033600160a060020a0316600090815260036020908152604080832080548690039055600490915290208054830190556006805490920190915560010180546fffffffffffffffff00000000000000001916680100000000000000004267ffffffffffffffff160217905550565b60195481565b600160a060020a0333166000908152600360205260409020548190101561253657600080fd5b600254600160a060020a031663a9059cbb338360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561259557600080fd5b6102c65a03f115156125a657600080fd5b50505060405180519050156125de57600160a060020a0333166000908152600360205260409020805482900390556005805482900390555b50565b60165433600160a060020a039081169116146125fc57600080fd5b6008546007541015801561261257506000600854115b156125de5760088054600160a060020a038316600090815260036020526040902080549091019055546007805491909103905550565b60075481565b600154600160a060020a031681565b601060205260009081526040902054600160a060020a031681565b60095460009033600160a060020a0390811691161461269657600080fd5b6000848152600e6020526040902054600160a060020a038481169116146126bc57600080fd5b84600d858154811015156126cc57fe5b906000526020600020906004020160030160006101000a81548163ffffffff021916908363ffffffff160217905550837ff7951baff512f059b50f5d5d9c41ac735002cea58e88fb8c089cdb033ade2c328660405163ffffffff909116815260200160405180910390a250600160a060020a0390911660009081526003602090815260408083208054859003905560049091529020805482019055600680549091019055506001919050565b600254600160a060020a03166323b872dd33308460006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b15156127e457600080fd5b6102c65a03f115156127f557600080fd5b50505060405180519050156125de57600160a060020a0333166000908152600360205260409020805482019055600580548201905550565b601654600160a060020a031681565b601c5481565b600061284c613264565b6000831161285957600080fd5b600d80548490811061286757fe5b9060005260206000209060040201610120604051908101604090815282548252600183015467ffffffffffffffff80821660208501526801000000000000000082041691830191825263ffffffff70010000000000000000000000000000000082048116606085015260a060020a82048116608085015261ffff60c060020a8304811660a086015260d060020a90920490911660c0840152600284015460e0840152600390930154909216610100820152915042905167ffffffffffffffff1611159392505050565b601e5481565b60085481565b60015460009033600160a060020a0390811691161461295a57600080fd5b601a54601e541061296a57600080fd5b6001608060020a03821061297d57600080fd5b61298c60008060008630612e96565b6016549091506129a6908290600160a060020a0316612a93565b8115156129b8576129b5613100565b91505b601660009054906101000a9004600160a060020a0316600160a060020a0316632b549b8282846103e8026000866000601c543060405160e060020a63ffffffff8a160281526004810197909752602487019590955260448601939093526064850191909152608484015260a4830152600160a060020a031660c482015260e401600060405180830381600087803b1515612a5157600080fd5b6102c65a03f11515612a6257600080fd5b5050601e8054600101905550505050565b6000908152600e6020526040902054600160a060020a0391821691161490565b6000918252601060205260409091208054600160a060020a031916600160a060020a03909216919091179055565b600080600080600080600080600080600160149054906101000a900460ff16151515612aec57600080fd5b600d805463ffffffff8e16908110612b0057fe5b60009182526020909120600490910201600181015490995067ffffffffffffffff161515612b2d57600080fd5b600d805463ffffffff8d16908110612b4157fe5b600091825260209091206001808c015460049093029091019081015490995061ffff60d060020a92839004811699509190041687901115612b8f57600188015460d060020a900461ffff1696505b6015546002808b0154908a0154600160a060020a0390921691630bb536a2919060006040516080015260405160e060020a63ffffffff851602815260048101929092526024820152604401608060405180830381600087803b1515612bf357600080fd5b6102c65a03f11515612c0457600080fd5b50505060405180519060200180519060200180519060200180516002808f018490558d01819055939950919750955090935050851515612c4257999a995b600e60008d63ffffffff16815260200190815260200160002060009054906101000a9004600160a060020a031691506001601160008e63ffffffff16815260200190815260200160002060008282829054906101000a900463ffffffff160192506101000a81548163ffffffff021916908363ffffffff1602179055506001601260008d63ffffffff16815260200190815260200160002060008282829054906101000a900463ffffffff160192506101000a81548163ffffffff021916908363ffffffff160217905550612d2d8c63ffffffff168c63ffffffff168960010161ffff168886612e96565b9050612d388861319a565b612d418961319a565b9b9a5050505050505050505050565b60185461271091020490565b600090815260106020526040902054600160a060020a0391821691161490565b600160a060020a038083166000818152600f6020908152604080832080546001019055858352600e90915290208054600160a060020a0319169091179055831615612dfd57600160a060020a0383166000908152600f602090815260408083208054600019019055838352601090915290208054600160a060020a03191690555b8082600160a060020a031684600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60005433600160a060020a03908116911614612e5e57600080fd5b60015460a060020a900460ff161515612e7657600080fd5b6001805474ff000000000000000000000000000000000000000019169055565b600080612ea1613264565b600061ffff871115612eb257600080fd5b600287049250600d8361ffff161115612eca57600d92505b610120604051908101604090815287825267ffffffffffffffff42166020830152600090820181905263ffffffff808c1660608401528a16608083015261ffff80861660a0840152891660c083015260e08201889052610100820152600d8054919350600191808301612f3d83826132b0565b6000928352602090922085916004020181518155602082015160018201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560408201518160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060608201518160010160106101000a81548163ffffffff021916908363ffffffff16021790555060808201518160010160146101000a81548163ffffffff021916908363ffffffff16021790555060a08201518160010160186101000a81548161ffff021916908361ffff16021790555060c082015181600101601a6101000a81548161ffff021916908361ffff16021790555060e08201518160020155610100820151600391909101805463ffffffff191663ffffffff9283161790559290910392505081111561307a57600080fd5b84600160a060020a03167f9b73c004d86df6be87798e8c67fba0e1dafd8860823270bc5c66a5ba3c4235d282846060015163ffffffff16856080015163ffffffff1686516040518085815260200184815260200183815260200182815260200194505050505060405180910390a26130f460008683612d7c565b98975050505050505050565b60165460009081908190600160a060020a031663eac9d94c82604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561314e57600080fd5b6102c65a03f1151561315f57600080fd5b50505060405180519250506001608060020a03821061317d57600080fd5b6002820482019050601b548110156131945750601b545b92915050565b6001810154600a9060c060020a900461ffff16600e81106131b757fe5b600880820492909201546001840180546fffffffffffffffff0000000000000000191668010000000000000000949093066004026101000a90910463ffffffff16420167ffffffffffffffff16929092021790819055600d60c060020a90910461ffff1610156125de576001818101805461ffff60c060020a80830482169094011690920279ffff0000000000000000000000000000000000000000000000001990921691909117905550565b6101206040519081016040908152600080835260208301819052908201819052606082018190526080820181905260a0820181905260c0820181905260e0820181905261010082015290565b8154818355818115116111c6576000838152602090206111c691610d569160049182028101918502015b8082111561332d5760008082556001820180547fffffffff00000000000000000000000000000000000000000000000000000000169055600282015560038101805463ffffffff191690556004016132da565b50905600a165627a7a7230582011073786b327879ce802072c7b348bf92767485e90c6a14dcfc41a22911132cf0029

Swarm Source

bzzr://11073786b327879ce802072c7b348bf92767485e90c6a14dcfc41a22911132cf
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.