Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 1,792 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Create Gennezise | 7225454 | 2116 days ago | IN | 0 ETH | 0.00028861 | ||||
Create Gennezise | 7225452 | 2116 days ago | IN | 0 ETH | 0.00028861 | ||||
Create Gennezise | 6660944 | 2216 days ago | IN | 0 ETH | 0.00013055 | ||||
Create Gennezise | 6554710 | 2234 days ago | IN | 0 ETH | 0.00010469 | ||||
Create Gennezise | 6512418 | 2241 days ago | IN | 0 ETH | 0.00047113 | ||||
Create Children | 6512260 | 2241 days ago | IN | 0.0065013 ETH | 0.0001308 | ||||
Create Children | 6512258 | 2241 days ago | IN | 0.0078 ETH | 0.00002622 | ||||
Create Gennezise | 6511827 | 2241 days ago | IN | 0 ETH | 0.00010731 | ||||
Create Gennezise | 6511827 | 2241 days ago | IN | 0 ETH | 0.0001128 | ||||
Create Gennezise | 6510675 | 2241 days ago | IN | 0 ETH | 0.00005222 | ||||
Set Pause Save | 6509747 | 2241 days ago | IN | 0 ETH | 0.00012839 | ||||
Set Pause Save | 6509731 | 2241 days ago | IN | 0 ETH | 0.00004169 | ||||
Set Pause Save | 6509726 | 2241 days ago | IN | 0 ETH | 0.00012839 | ||||
Set Pause Save | 6509711 | 2241 days ago | IN | 0 ETH | 0.00005559 | ||||
Get Money | 6509677 | 2241 days ago | IN | 0 ETH | 0.00009298 | ||||
Set Pause Save | 6509641 | 2241 days ago | IN | 0 ETH | 0.00021398 | ||||
Create Children | 6509275 | 2241 days ago | IN | 0.00663 ETH | 0.00078737 | ||||
Create Children | 6509228 | 2241 days ago | IN | 0.00650001 ETH | 0.00075076 | ||||
Create Children | 6509228 | 2241 days ago | IN | 0.00650101 ETH | 0.00046214 | ||||
Create Children | 6509163 | 2241 days ago | IN | 0.00650101 ETH | 0.00046204 | ||||
Create Children | 6509081 | 2241 days ago | IN | 0.00650001 ETH | 0.00046215 | ||||
Create Children | 6509053 | 2241 days ago | IN | 0.00715 ETH | 0.00061598 | ||||
Set Rabbit Sire ... | 6509028 | 2241 days ago | IN | 0 ETH | 0.00028855 | ||||
Create Children | 6509009 | 2241 days ago | IN | 0.00663 ETH | 0.00061603 | ||||
Set Rabbit Sire ... | 6508955 | 2241 days ago | IN | 0 ETH | 0.00017874 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
6509677 | 2241 days ago | 0.28924709 ETH | ||||
6509275 | 2241 days ago | 0.000255 ETH | ||||
6509275 | 2241 days ago | 0.0051 ETH | ||||
6509275 | 2241 days ago | 0.0006375 ETH | ||||
6509275 | 2241 days ago | 0.0006375 ETH | ||||
6509228 | 2241 days ago | 0.00025 ETH | ||||
6509228 | 2241 days ago | 0.00500001 ETH | ||||
6509228 | 2241 days ago | 0.00125 ETH | ||||
6509228 | 2241 days ago | 0.00025 ETH | ||||
6509228 | 2241 days ago | 0.00500001 ETH | ||||
6509163 | 2241 days ago | 0.00025 ETH | ||||
6509163 | 2241 days ago | 0.00500001 ETH | ||||
6509081 | 2241 days ago | 0.00025 ETH | ||||
6509081 | 2241 days ago | 0.00500001 ETH | ||||
6509053 | 2241 days ago | 0.000275 ETH | ||||
6509053 | 2241 days ago | 0.0055 ETH | ||||
6509009 | 2241 days ago | 0.000255 ETH | ||||
6509009 | 2241 days ago | 0.0051 ETH | ||||
6508880 | 2241 days ago | 0.000295 ETH | ||||
6508880 | 2241 days ago | 0.0059 ETH | ||||
6508727 | 2241 days ago | 0.000255 ETH | ||||
6508727 | 2241 days ago | 0.0051 ETH | ||||
6508727 | 2241 days ago | 0.0006375 ETH | ||||
6508727 | 2241 days ago | 0.0006375 ETH | ||||
6508677 | 2241 days ago | 0.000255 ETH |
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x05c848E3...7Bfff96a1 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
BunnyGame
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-09-09 */ pragma solidity ^0.4.24; /* ______ _ _ _ _ _ ___ __ | ___ \ | | | \ | || \ | \ \ / / | |_/ / | | | \| || \| |\ V / | ___ \ | | | . ` || . ` | \ / | |_/ / |_| | |\ || |\ | | | \____/ \___/\_| \_/\_| \_/ \_/ _____ ___ ___ ___ _____ | __ \ / _ \ | \/ || ___| | | \// /_\ \| . . || |__ | | __ | _ || |\/| || __| | |_\ \| | | || | | || |___ \____/\_| |_/\_| |_/\____/ * Author: Konstantin G... * Telegram: @bunnygame (en) * email: [email protected] * site : http://bunnycoin.co */ /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address ownerCEO; address ownerMoney; address privAddress; address addressAdmixture; /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor() public { ownerCEO = msg.sender; ownerMoney = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == ownerCEO); _; } function transferOwnership(address add) public onlyOwner { if (add != address(0)) { ownerCEO = add; } } function transferOwnerMoney(address _ownerMoney) public onlyOwner { if (_ownerMoney != address(0)) { ownerMoney = _ownerMoney; } } function getOwnerMoney() public view onlyOwner returns(address) { return ownerMoney; } /** * @dev private contract */ function getPrivAddress() public view onlyOwner returns(address) { return privAddress; } function getAddressAdmixture() public view onlyOwner returns(address) { return addressAdmixture; } } /** * @title Whitelist * @dev The Whitelist contract has a whitelist of addresses, and provides basic authorization control functions. * @dev This simplifies the implementation of "user permissions". */ contract Whitelist is Ownable { mapping(address => bool) public whitelist; mapping(uint => address) whitelistCheck; uint public countAddress = 0; event WhitelistedAddressAdded(address addr); event WhitelistedAddressRemoved(address addr); /** * @dev Throws if called by any account that's not whitelisted. */ modifier onlyWhitelisted() { require(whitelist[msg.sender]); _; } constructor() public { whitelist[msg.sender] = true; } /** * @dev add an address to the whitelist * @param addr address * @return true if the address was added to the whitelist, false if the address was already in the whitelist */ function addAddressToWhitelist(address addr) onlyWhitelisted public returns(bool success) { if (!whitelist[addr]) { whitelist[addr] = true; countAddress = countAddress + 1; whitelistCheck[countAddress] = addr; emit WhitelistedAddressAdded(addr); success = true; } } function getWhitelistCheck(uint key) onlyWhitelisted view public returns(address) { return whitelistCheck[key]; } function getInWhitelist(address addr) public view returns(bool) { return whitelist[addr]; } function getOwnerCEO() public onlyWhitelisted view returns(address) { return ownerCEO; } /** * @dev add addresses to the whitelist * @param addrs addresses * @return true if at least one address was added to the whitelist, * false if all addresses were already in the whitelist */ function addAddressesToWhitelist(address[] addrs) onlyOwner public returns(bool success) { for (uint256 i = 0; i < addrs.length; i++) { if (addAddressToWhitelist(addrs[i])) { success = true; } } } /** * @dev remove an address from the whitelist * @param addr address * @return true if the address was removed from the whitelist, * false if the address wasn't in the whitelist in the first place */ function removeAddressFromWhitelist(address addr) onlyOwner public returns(bool success) { if (whitelist[addr]) { whitelist[addr] = false; emit WhitelistedAddressRemoved(addr); success = true; } } /** * @dev remove addresses from the whitelist * @param addrs addresses * @return true if at least one address was removed from the whitelist, * false if all addresses weren't in the whitelist in the first place */ function removeAddressesFromWhitelist(address[] addrs) onlyOwner public returns(bool success) { for (uint256 i = 0; i < addrs.length; i++) { if (removeAddressFromWhitelist(addrs[i])) { success = true; } } } } /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint c = a * b; assert(c / a == b); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } contract BaseRabbit is Whitelist { event EmotherCount(uint32 mother, uint summ); event NewBunny(uint32 bunnyId, uint dnk, uint256 blocknumber, uint breed, uint procentAdmixture, uint admixture); event ChengeSex(uint32 bunnyId, bool sex, uint256 price); event SalaryBunny(uint32 bunnyId, uint cost); event CreateChildren(uint32 matron, uint32 sire, uint32 child); event BunnyDescription(uint32 bunnyId, string name); event CoolduwnMother(uint32 bunnyId, uint num); event Referral(address from, uint32 matronID, uint32 childID, uint currentTime); event Approval(address owner, address approved, uint32 tokenId); event OwnerBunnies(address owner, uint32 tokenId); event Transfer(address from, address to, uint32 tokenId); using SafeMath for uint256; bool pauseSave = false; uint256 bigPrice = 0.005 ether; uint public commission_system = 5; // ID the last seal uint32 public lastIdGen0; uint public totalGen0 = 0; // ID the last seal uint public lastTimeGen0; // ID the last seal // uint public timeRangeCreateGen0 = 1800; uint public promoGen0 = 15000; uint public promoMoney = 1*bigPrice; bool public promoPause = false; function setPromoGen0(uint _promoGen0) public onlyWhitelisted() { promoGen0 = _promoGen0; } function setPromoPause() public onlyWhitelisted() { promoPause = !promoPause; } function setPromoMoney(uint _promoMoney) public onlyWhitelisted() { promoMoney = _promoMoney; } mapping(uint32 => uint) public totalSalaryBunny; mapping(uint32 => uint32[5]) public rabbitMother; mapping(uint32 => uint) public motherCount; // how many times did the rabbit cross mapping(uint32 => uint) public rabbitBreedCount; mapping(uint32 => uint) public rabbitSirePrice; mapping(uint => uint32[]) public sireGenom; mapping (uint32 => uint) mapDNK; uint32[12] public cooldowns = [ uint32(1 minutes), uint32(2 minutes), uint32(4 minutes), uint32(8 minutes), uint32(16 minutes), uint32(32 minutes), uint32(1 hours), uint32(2 hours), uint32(4 hours), uint32(8 hours), uint32(16 hours), uint32(1 days) ]; struct Rabbit { // parents uint32 mother; uint32 sire; // block in which a rabbit was born uint birthblock; // number of births or how many times were offspring uint birthCount; // The time when Rabbit last gave birth uint birthLastTime; // the current role of the rabbit uint role; //indexGenome uint genome; uint procentAdmixture; uint admixture; } /** * Where we will store information about rabbits */ Rabbit[] public rabbits; /** * who owns the rabbit */ mapping (uint32 => address) public rabbitToOwner; mapping (address => uint32[]) public ownerBunnies; //mapping (address => uint) ownerRabbitCount; mapping (uint32 => string) rabbitDescription; mapping (uint32 => string) rabbitName; //giff mapping (uint32 => bool) giffblock; mapping (address => bool) ownerGennezise; } /// @title Interface for contracts conforming to ERC-721: Non-Fungible Tokens /// @author Dieter Shirley <[email protected]> (https://github.com/dete) contract ERC721 { // Required methods function ownerOf(uint32 _tokenId) public view returns (address owner); function approve(address _to, uint32 _tokenId) public returns (bool success); function transfer(address _to, uint32 _tokenId) public; function transferFrom(address _from, address _to, uint32 _tokenId) public returns (bool); function totalSupply() public view returns (uint total); function balanceOf(address _owner) public view returns (uint balance); } /// @title Interface new rabbits address contract PrivateRabbitInterface { function getNewRabbit(address from) public view returns (uint); function mixDNK(uint dnkmother, uint dnksire, uint genome) public view returns (uint); function isUIntPrivate() public pure returns (bool); } contract AdmixtureInterface { function getAdmixture(uint m, uint w) public view returns (uint procentAdmixture, uint admixture); } contract BodyRabbit is BaseRabbit, ERC721 { uint public totalBunny = 0; string public constant name = "CryptoRabbits"; string public constant symbol = "CRB"; PrivateRabbitInterface privateContract; AdmixtureInterface AdmixtureContract; /** * @dev setting up a new address for a private contract */ function setPriv(address _privAddress) public returns(bool) { privAddress = _privAddress; privateContract = PrivateRabbitInterface(_privAddress); } function setAdmixture(address _addressAdmixture) public returns(bool) { addressAdmixture = _addressAdmixture; AdmixtureContract = AdmixtureInterface(_addressAdmixture); } bool public fcontr = false; constructor() public { fcontr = true; } function isPriv() public view returns(bool) { return privateContract.isUIntPrivate(); } modifier checkPrivate() { require(isPriv()); _; } function ownerOf(uint32 _tokenId) public view returns (address owner) { return rabbitToOwner[_tokenId]; } function approve(address _to, uint32 _tokenId) public returns (bool) { _to; _tokenId; return false; } function removeTokenList(address _owner, uint32 _tokenId) internal { uint count = ownerBunnies[_owner].length; for (uint256 i = 0; i < count; i++) { if(ownerBunnies[_owner][i] == _tokenId) { delete ownerBunnies[_owner][i]; if(count > 0 && count != (i-1)){ ownerBunnies[_owner][i] = ownerBunnies[_owner][(count-1)]; delete ownerBunnies[_owner][(count-1)]; } ownerBunnies[_owner].length--; return; } } } /** * Get the cost of the reward for pairing * @param _tokenId - rabbit that mates */ function getSirePrice(uint32 _tokenId) public view returns(uint) { if(rabbits[(_tokenId-1)].role == 1){ uint procent = (rabbitSirePrice[_tokenId] / 100); uint res = procent.mul(25); uint system = procent.mul(commission_system); res = res.add(rabbitSirePrice[_tokenId]); return res.add(system); } else { return 0; } } /** * @dev add a new bunny in the storage */ function addTokenList(address owner, uint32 _tokenId) internal { ownerBunnies[owner].push( _tokenId); emit OwnerBunnies(owner, _tokenId); rabbitToOwner[_tokenId] = owner; } function transfer(address _to, uint32 _tokenId) public { address currentOwner = msg.sender; address oldOwner = rabbitToOwner[_tokenId]; require(rabbitToOwner[_tokenId] == msg.sender); require(currentOwner != _to); require(_to != address(0)); removeTokenList(oldOwner, _tokenId); addTokenList(_to, _tokenId); emit Transfer(oldOwner, _to, _tokenId); } function transferFrom(address _from, address _to, uint32 _tokenId) public returns(bool) { address oldOwner = rabbitToOwner[_tokenId]; require(oldOwner == _from); require(getInWhitelist(msg.sender)); require(oldOwner != _to); require(_to != address(0)); removeTokenList(oldOwner, _tokenId); addTokenList(_to, _tokenId); emit Transfer (oldOwner, _to, _tokenId); return true; } function isPauseSave() public view returns(bool) { return !pauseSave; } function isPromoPause() public view returns(bool) { if (getInWhitelist(msg.sender)) { return true; } else { return !promoPause; } } function setPauseSave() public onlyWhitelisted() returns(bool) { return pauseSave = !pauseSave; } function getTokenOwner(address owner) public view returns(uint total, uint32[] list) { total = ownerBunnies[owner].length; list = ownerBunnies[owner]; } function setRabbitMother(uint32 children, uint32 mother) internal { require(children != mother); uint32[11] memory pullMother; uint start = 0; for (uint i = 0; i < 5; i++) { if (rabbitMother[mother][i] != 0) { pullMother[start] = uint32(rabbitMother[mother][i]); rabbitMother[mother][i] = 0; start++; } } pullMother[start] = mother; start++; for (uint m = 0; m < 5; m++) { if(start > 5){ rabbitMother[children][m] = pullMother[(m+1)]; }else{ rabbitMother[children][m] = pullMother[m]; } } setMotherCount(mother); } function setMotherCount(uint32 _mother) internal returns(uint) { //internal motherCount[_mother] = motherCount[_mother].add(1); emit EmotherCount(_mother, motherCount[_mother]); return motherCount[_mother]; } function bytes32ToString(bytes32 x) internal pure returns (string) { bytes memory bytesString = new bytes(32); uint charCount = 0; for (uint j = 0; j < 32; j++) { byte char = byte(bytes32(uint(x) * 2 ** (8 * j))); if (char != 0) { bytesString[charCount] = char; charCount++; } } bytes memory bytesStringTrimmed = new bytes(charCount); for (j = 0; j < charCount; j++) { bytesStringTrimmed[j] = bytesString[j]; } return string(bytesStringTrimmed); } function uintToBytes(uint v) internal pure returns (bytes32 ret) { if (v == 0) { ret = '0'; } else { while (v > 0) { ret = bytes32(uint(ret) / (2 ** 8)); ret |= bytes32(((v % 10) + 48) * 2 ** (8 * 31)); v /= 10; } } return ret; } function totalSupply() public view returns (uint total) { return totalBunny; } function balanceOf(address _owner) public view returns (uint) { // _owner; return ownerBunnies[_owner].length; } function sendMoney(address _to, uint256 _money) internal { _to.transfer((_money/100)*95); ownerMoney.transfer((_money/100)*5); } function getGiffBlock(uint32 _bunnyid) public view returns(bool) { return !giffblock[_bunnyid]; } function getOwnerGennezise(address _to) public view returns(bool) { return ownerGennezise[_to]; } function getBunny(uint32 _bunny) public view returns( uint32 mother, uint32 sire, uint birthblock, uint birthCount, uint birthLastTime, uint role, uint genome, bool interbreed, uint leftTime, uint lastTime, uint price, uint motherSumm ) { price = getSirePrice(_bunny); _bunny = _bunny - 1; mother = rabbits[_bunny].mother; sire = rabbits[_bunny].sire; birthblock = rabbits[_bunny].birthblock; birthCount = rabbits[_bunny].birthCount; birthLastTime = rabbits[_bunny].birthLastTime; role = rabbits[_bunny].role; genome = rabbits[_bunny].genome; if(birthCount > 11) { birthCount = 11; } motherSumm = motherCount[_bunny]; lastTime = uint(cooldowns[birthCount]); lastTime = lastTime.add(birthLastTime); if(lastTime <= now) { interbreed = true; } else { leftTime = lastTime.sub(now); } } /** * We update the information on rabbits */ function updateBunny(uint32 _bunny, uint types, uint data ) public onlyWhitelisted() { if (types == 1) { rabbits[(_bunny - 1)].birthCount = data; } else if (types == 2) { rabbits[(_bunny - 1)].genome = data; } else if (types == 3) { rabbitSirePrice[_bunny] = data; } else if (types == 4) { motherCount[_bunny] = data; emit EmotherCount(_bunny, data); } } /** * @param _bunny A rabbit on which we receive information */ function getBreed(uint32 _bunny) public view returns(bool interbreed) { uint birtTime = rabbits[(_bunny - 1)].birthLastTime; uint birthCount = rabbits[(_bunny - 1)].birthCount; uint lastTime = uint(cooldowns[birthCount]); lastTime = lastTime.add(birtTime); if(lastTime <= now && rabbits[(_bunny - 1)].role == 0 ) { interbreed = true; } } /** * we get cooldown */ function getcoolduwn(uint32 _mother) public view returns(uint lastTime, uint cd, uint lefttime) { cd = rabbits[(_mother-1)].birthCount; if(cd > 11) { cd = 11; } // time when I can give birth lastTime = (cooldowns[cd] + rabbits[(_mother-1)].birthLastTime); if(lastTime > now) { // I can not give birth, it remains until delivery lefttime = lastTime.sub(now); } } function getMotherCount(uint32 _mother) public view returns(uint) { //internal return motherCount[_mother]; } function getTotalSalaryBunny(uint32 _bunny) public view returns(uint) { //internal return totalSalaryBunny[_bunny]; } function getRabbitMother( uint32 mother) public view returns(uint32[5]) { return rabbitMother[mother]; } function getRabbitMotherSumm(uint32 mother) public view returns(uint count) { //internal for (uint m = 0; m < 5 ; m++) { if(rabbitMother[mother][m] != 0 ) { count++; } } } function getRabbitDNK(uint32 bunnyid) public view returns(uint) { return mapDNK[bunnyid]; } function isUIntPublic() public view returns(bool) { require(isPauseSave()); return true; } } /** * Basic actions for the transfer of rights of rabbits */ contract BunnyGame is BodyRabbit{ function transferNewBunny(address _to, uint32 _bunnyid, uint localdnk, uint breed, uint32 matron, uint32 sire, uint procentAdmixture, uint admixture) internal { emit NewBunny(_bunnyid, localdnk, block.number, breed, procentAdmixture, admixture); emit CreateChildren(matron, sire, _bunnyid); addTokenList(_to, _bunnyid); totalSalaryBunny[_bunnyid] = 0; motherCount[_bunnyid] = 0; totalBunny++; } /*** * @dev create a new gene and put it up for sale, this operation takes place on the server */ function createGennezise(uint32 _matron) public { bool promo = false; require(isPriv()); require(isPauseSave()); require(isPromoPause()); if (totalGen0 > promoGen0) { require(getInWhitelist(msg.sender)); } else if (!(getInWhitelist(msg.sender))) { // promo action require(!ownerGennezise[msg.sender]); ownerGennezise[msg.sender] = true; promo = true; } uint localdnk = privateContract.getNewRabbit(msg.sender); Rabbit memory _Rabbit = Rabbit( 0, 0, block.number, 0, 0, 0, 0, 0, 0); uint32 _bunnyid = uint32(rabbits.push(_Rabbit)); mapDNK[_bunnyid] = localdnk; transferNewBunny(msg.sender, _bunnyid, localdnk, 0, 0, 0, 4, 0); lastTimeGen0 = now; lastIdGen0 = _bunnyid; totalGen0++; setRabbitMother(_bunnyid, _matron); emit Referral(msg.sender, _matron, _bunnyid, block.timestamp); if (promo) { giffblock[_bunnyid] = true; } } function getGenomeChildren(uint32 _matron, uint32 _sire) internal view returns(uint) { uint genome; if (rabbits[(_matron-1)].genome >= rabbits[(_sire-1)].genome) { genome = rabbits[(_matron-1)].genome; } else { genome = rabbits[(_sire-1)].genome; } return genome.add(1); } /** * create a new rabbit, according to the cooldown * @param _matron - mother who takes into account the cooldown * @param _sire - the father who is rewarded for mating for the fusion of genes */ function createChildren(uint32 _matron, uint32 _sire) public payable returns(uint32) { require(isPriv()); require(isPauseSave()); require(rabbitToOwner[_matron] == msg.sender); // Checking for the role require(rabbits[(_sire-1)].role == 1); require(_matron != _sire); require(getBreed(_matron)); // Checking the money require(msg.value >= getSirePrice(_sire)); uint genome = getGenomeChildren(_matron, _sire); uint localdnk = privateContract.mixDNK(mapDNK[_matron], mapDNK[_sire], genome); uint procentAdm; uint admixture; (procentAdm, admixture) = AdmixtureContract.getAdmixture(rabbits[(_sire-1)].procentAdmixture, rabbits[(_matron-1)].procentAdmixture); Rabbit memory rabbit = Rabbit(_matron, _sire, block.number, 0, 0, 0, genome, procentAdm, admixture); uint32 bunnyid = uint32(rabbits.push(rabbit)); mapDNK[bunnyid] = localdnk; uint _moneyMother = rabbitSirePrice[_sire].div(4); _transferMoneyMother(_matron, _moneyMother); rabbitToOwner[_sire].transfer(rabbitSirePrice[_sire]); uint system = rabbitSirePrice[_sire].div(100); system = system.mul(commission_system); ownerMoney.transfer(system); // refund previous bidder coolduwnUP(_matron); // we transfer the rabbit to the new owner transferNewBunny(rabbitToOwner[_matron], bunnyid, localdnk, genome, _matron, _sire, procentAdm, admixture ); // we establish parents for the child setRabbitMother(bunnyid, _matron); return bunnyid; } /** * Set the cooldown for childbirth * @param _mother - mother for which cooldown */ function coolduwnUP(uint32 _mother) internal { require(isPauseSave()); rabbits[(_mother-1)].birthCount = rabbits[(_mother-1)].birthCount.add(1); rabbits[(_mother-1)].birthLastTime = now; emit CoolduwnMother(_mother, rabbits[(_mother-1)].birthCount); } /** * @param _mother - matron send money for parrent * @param _valueMoney - current sale */ function _transferMoneyMother(uint32 _mother, uint _valueMoney) internal { require(isPauseSave()); require(_valueMoney > 0); if (getRabbitMotherSumm(_mother) > 0) { uint pastMoney = _valueMoney/getRabbitMotherSumm(_mother); for (uint i=0; i < getRabbitMotherSumm(_mother); i++) { if (rabbitMother[_mother][i] != 0) { uint32 _parrentMother = rabbitMother[_mother][i]; address add = rabbitToOwner[_parrentMother]; // pay salaries setMotherCount(_parrentMother); totalSalaryBunny[_parrentMother] += pastMoney; emit SalaryBunny(_parrentMother, totalSalaryBunny[_parrentMother]); add.transfer(pastMoney); // refund previous bidder } } } } /** * @dev We set the cost of renting our genes * @param price rent price */ function setRabbitSirePrice(uint32 _rabbitid, uint price) public returns(bool) { require(isPauseSave()); require(rabbitToOwner[_rabbitid] == msg.sender); require(price > bigPrice); uint lastTime; (lastTime,,) = getcoolduwn(_rabbitid); require(now >= lastTime); if (rabbits[(_rabbitid-1)].role == 1 && rabbitSirePrice[_rabbitid] == price) { return false; } rabbits[(_rabbitid-1)].role = 1; rabbitSirePrice[_rabbitid] = price; uint gen = rabbits[(_rabbitid-1)].genome; sireGenom[gen].push(_rabbitid); emit ChengeSex(_rabbitid, true, getSirePrice(_rabbitid)); return true; } /** * @dev We set the cost of renting our genes */ function setSireStop(uint32 _rabbitid) public returns(bool) { require(isPauseSave()); require(rabbitToOwner[_rabbitid] == msg.sender); // require(rabbits[(_rabbitid-1)].role == 0); rabbits[(_rabbitid-1)].role = 0; rabbitSirePrice[_rabbitid] = 0; deleteSire(_rabbitid); return true; } function deleteSire(uint32 _tokenId) internal { uint gen = rabbits[(_tokenId-1)].genome; uint count = sireGenom[gen].length; for (uint i = 0; i < count; i++) { if(sireGenom[gen][i] == _tokenId) { delete sireGenom[gen][i]; if(count > 0 && count != (i-1)){ sireGenom[gen][i] = sireGenom[gen][(count-1)]; delete sireGenom[gen][(count-1)]; } sireGenom[gen].length--; emit ChengeSex(_tokenId, false, 0); return; } } } function getMoney(uint _value) public onlyOwner { require(address(this).balance >= _value); ownerMoney.transfer(_value); } /** * @dev give a rabbit to a specific user * @param add new address owner rabbits */ function gift(uint32 bunnyid, address add) public { require(rabbitToOwner[bunnyid] == msg.sender); // a rabbit taken for free can not be given require(!(giffblock[bunnyid])); transferFrom(msg.sender, add, bunnyid); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"getPrivAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_mother","type":"uint32"}],"name":"getcoolduwn","outputs":[{"name":"lastTime","type":"uint256"},{"name":"cd","type":"uint256"},{"name":"lefttime","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint32"}],"name":"rabbitSirePrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"promoPause","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getAddressAdmixture","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint32"},{"name":"","type":"uint256"}],"name":"rabbitMother","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint32"}],"name":"motherCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addressAdmixture","type":"address"}],"name":"setAdmixture","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_promoGen0","type":"uint256"}],"name":"setPromoGen0","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint32"}],"name":"rabbitToOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"total","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_bunnyid","type":"uint32"}],"name":"getGiffBlock","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_mother","type":"uint32"}],"name":"getMotherCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint32"}],"name":"ownerOf","outputs":[{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addrs","type":"address[]"}],"name":"removeAddressesFromWhitelist","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"sireGenom","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"mother","type":"uint32"}],"name":"getRabbitMotherSumm","outputs":[{"name":"count","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"removeAddressFromWhitelist","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_bunny","type":"uint32"}],"name":"getTotalSalaryBunny","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"getMoney","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"setPauseSave","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"getInWhitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"countAddress","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_bunny","type":"uint32"}],"name":"getBreed","outputs":[{"name":"interbreed","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_rabbitid","type":"uint32"},{"name":"price","type":"uint256"}],"name":"setRabbitSirePrice","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint32"}],"name":"getSirePrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_privAddress","type":"address"}],"name":"setPriv","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"bunnyid","type":"uint32"}],"name":"getRabbitDNK","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"rabbits","outputs":[{"name":"mother","type":"uint32"},{"name":"sire","type":"uint32"},{"name":"birthblock","type":"uint256"},{"name":"birthCount","type":"uint256"},{"name":"birthLastTime","type":"uint256"},{"name":"role","type":"uint256"},{"name":"genome","type":"uint256"},{"name":"procentAdmixture","type":"uint256"},{"name":"admixture","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isPromoPause","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getOwnerMoney","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint32"}],"name":"totalSalaryBunny","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_bunny","type":"uint32"}],"name":"getBunny","outputs":[{"name":"mother","type":"uint32"},{"name":"sire","type":"uint32"},{"name":"birthblock","type":"uint256"},{"name":"birthCount","type":"uint256"},{"name":"birthLastTime","type":"uint256"},{"name":"role","type":"uint256"},{"name":"genome","type":"uint256"},{"name":"interbreed","type":"bool"},{"name":"leftTime","type":"uint256"},{"name":"lastTime","type":"uint256"},{"name":"price","type":"uint256"},{"name":"motherSumm","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"promoGen0","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isUIntPublic","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalGen0","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastIdGen0","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fcontr","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint32"}],"name":"rabbitBreedCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isPauseSave","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"addAddressToWhitelist","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isPriv","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_to","type":"address"}],"name":"getOwnerGennezise","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_bunny","type":"uint32"},{"name":"types","type":"uint256"},{"name":"data","type":"uint256"}],"name":"updateBunny","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint32"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"lastTimeGen0","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint32"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalBunny","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"key","type":"uint256"}],"name":"getWhitelistCheck","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"bunnyid","type":"uint32"},{"name":"add","type":"address"}],"name":"gift","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelist","outputs":[{"name":"","type":"bool"}],"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":false,"inputs":[{"name":"_matron","type":"uint32"},{"name":"_sire","type":"uint32"}],"name":"createChildren","outputs":[{"name":"","type":"uint32"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_rabbitid","type":"uint32"}],"name":"setSireStop","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint32"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"promoMoney","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"ownerBunnies","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getOwnerCEO","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"getTokenOwner","outputs":[{"name":"total","type":"uint256"},{"name":"list","type":"uint32[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"mother","type":"uint32"}],"name":"getRabbitMother","outputs":[{"name":"","type":"uint32[5]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addrs","type":"address[]"}],"name":"addAddressesToWhitelist","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_promoMoney","type":"uint256"}],"name":"setPromoMoney","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"add","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"commission_system","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"setPromoPause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_matron","type":"uint32"}],"name":"createGennezise","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_ownerMoney","type":"address"}],"name":"transferOwnerMoney","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"mother","type":"uint32"},{"indexed":false,"name":"summ","type":"uint256"}],"name":"EmotherCount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"bunnyId","type":"uint32"},{"indexed":false,"name":"dnk","type":"uint256"},{"indexed":false,"name":"blocknumber","type":"uint256"},{"indexed":false,"name":"breed","type":"uint256"},{"indexed":false,"name":"procentAdmixture","type":"uint256"},{"indexed":false,"name":"admixture","type":"uint256"}],"name":"NewBunny","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"bunnyId","type":"uint32"},{"indexed":false,"name":"sex","type":"bool"},{"indexed":false,"name":"price","type":"uint256"}],"name":"ChengeSex","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"bunnyId","type":"uint32"},{"indexed":false,"name":"cost","type":"uint256"}],"name":"SalaryBunny","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"matron","type":"uint32"},{"indexed":false,"name":"sire","type":"uint32"},{"indexed":false,"name":"child","type":"uint32"}],"name":"CreateChildren","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"bunnyId","type":"uint32"},{"indexed":false,"name":"name","type":"string"}],"name":"BunnyDescription","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"bunnyId","type":"uint32"},{"indexed":false,"name":"num","type":"uint256"}],"name":"CoolduwnMother","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"matronID","type":"uint32"},{"indexed":false,"name":"childID","type":"uint32"},{"indexed":false,"name":"currentTime","type":"uint256"}],"name":"Referral","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"approved","type":"address"},{"indexed":false,"name":"tokenId","type":"uint32"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"tokenId","type":"uint32"}],"name":"OwnerBunnies","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"tokenId","type":"uint32"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"addr","type":"address"}],"name":"WhitelistedAddressAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"addr","type":"address"}],"name":"WhitelistedAddressRemoved","type":"event"}]
Deployed Bytecode
0x608060405260043610610338576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806303602e9e1461033d578063068734181461039457806306fdde03146103e95780630847c7a21461047957806309828a47146104c05780630e9aa208146104ef57806312448c3214610546578063146c1b5e146105a357806314a06ff6146105ea57806314c588de1461064557806314f1cf0c1461067257806318160ddd146106e5578063193d5b77146107105780631ee550801461075b57806323b7ec3b146107a257806324953eaa146108155780632573751f1461089357806327904ee0146108ea578063286dd3f5146109315780632a335c171461098c5780633262fd9a146109d35780633350611514610a00578063336968f114610a2f57806342154e9c14610a8a578063433bd92414610ab5578063462a8e0514610b005780634b72bbaf14610b555780634e2fd44e14610b9c5780634fd839c614610bf757806359dc2eec14610c3e5780635ceb8bc814610ccf578063625101d514610cfe5780636b53305714610d5557806370a0823114610d9c57806370a7e2dd14610df357806370d4d7b414610ea35780637214d6c314610ece5780637230ef7f14610efd578063731f49b714610f2857806374479db014610f5f5780637759187f14610f8e5780637878b66a14610fd55780637b9417c8146110045780637cbd54441461105f5780637ea2bbac1461108e5780637edb6923146110e957806380097484146111305780638231ee981461118357806384269ed9146111ae578063847ec2de1461123957806386c6c0111461126457806390eb1f9f146112d157806395d89b41146113245780639b19251a146113b45780639d6fac6f1461140f578063a13a7cee1461145c578063a22ec476146114b2578063a7e94542146114fd578063ad5a157d14611568578063d00dbcb014611593578063d3f73bd414611600578063dc17c9ca14611657578063df4b2970146116f6578063e2ec6ec314611765578063eea23d8a146117e3578063f2fde38b14611810578063f628842214611853578063fae8c29e1461187e578063fd5c669414611895578063fdaacf1b146118c8575b600080fd5b34801561034957600080fd5b5061035261190b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103a057600080fd5b506103c5600480360381019080803563ffffffff169060200190929190505050611990565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103f557600080fd5b506103fe611a52565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561043e578082015181840152602081019050610423565b50505050905090810190601f16801561046b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561048557600080fd5b506104aa600480360381019080803563ffffffff169060200190929190505050611a8b565b6040518082815260200191505060405180910390f35b3480156104cc57600080fd5b506104d5611aa3565b604051808215151515815260200191505060405180910390f35b3480156104fb57600080fd5b50610504611ab6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561055257600080fd5b50610581600480360381019080803563ffffffff16906020019092919080359060200190929190505050611b3b565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b3480156105af57600080fd5b506105d4600480360381019080803563ffffffff169060200190929190505050611b79565b6040518082815260200191505060405180910390f35b3480156105f657600080fd5b5061062b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b91565b604051808215151515815260200191505060405180910390f35b34801561065157600080fd5b5061067060048036038101908080359060200190929190505050611c1a565b005b34801561067e57600080fd5b506106a3600480360381019080803563ffffffff169060200190929190505050611c7c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106f157600080fd5b506106fa611caf565b6040518082815260200191505060405180910390f35b34801561071c57600080fd5b50610741600480360381019080803563ffffffff169060200190929190505050611cb9565b604051808215151515815260200191505060405180910390f35b34801561076757600080fd5b5061078c600480360381019080803563ffffffff169060200190929190505050611cf0565b6040518082815260200191505060405180910390f35b3480156107ae57600080fd5b506107d3600480360381019080803563ffffffff169060200190929190505050611d19565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561082157600080fd5b5061087960048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611d62565b604051808215151515815260200191505060405180910390f35b34801561089f57600080fd5b506108c86004803603810190808035906020019092919080359060200190929190505050611e0b565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b3480156108f657600080fd5b5061091b600480360381019080803563ffffffff169060200190929190505050611e53565b6040518082815260200191505060405180910390f35b34801561093d57600080fd5b50610972600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ed7565b604051808215151515815260200191505060405180910390f35b34801561099857600080fd5b506109bd600480360381019080803563ffffffff16906020019092919050505061204b565b6040518082815260200191505060405180910390f35b3480156109df57600080fd5b506109fe60048036038101908080359060200190929190505050612074565b005b348015610a0c57600080fd5b50610a15612161565b604051808215151515815260200191505060405180910390f35b348015610a3b57600080fd5b50610a70600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121e9565b604051808215151515815260200191505060405180910390f35b348015610a9657600080fd5b50610a9f61223f565b6040518082815260200191505060405180910390f35b348015610ac157600080fd5b50610ae6600480360381019080803563ffffffff169060200190929190505050612245565b604051808215151515815260200191505060405180910390f35b348015610b0c57600080fd5b50610b3b600480360381019080803563ffffffff16906020019092919080359060200190929190505050612336565b604051808215151515815260200191505060405180910390f35b348015610b6157600080fd5b50610b86600480360381019080803563ffffffff1690602001909291905050506125a9565b6040518082815260200191505060405180910390f35b348015610ba857600080fd5b50610bdd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612697565b604051808215151515815260200191505060405180910390f35b348015610c0357600080fd5b50610c28600480360381019080803563ffffffff169060200190929190505050612720565b6040518082815260200191505060405180910390f35b348015610c4a57600080fd5b50610c6960048036038101908080359060200190929190505050612749565b604051808a63ffffffff1663ffffffff1681526020018963ffffffff1663ffffffff168152602001888152602001878152602001868152602001858152602001848152602001838152602001828152602001995050505050505050505060405180910390f35b348015610cdb57600080fd5b50610ce46127c6565b604051808215151515815260200191505060405180910390f35b348015610d0a57600080fd5b50610d136127f6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610d6157600080fd5b50610d86600480360381019080803563ffffffff16906020019092919050505061287b565b6040518082815260200191505060405180910390f35b348015610da857600080fd5b50610ddd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612893565b6040518082815260200191505060405180910390f35b348015610dff57600080fd5b50610e24600480360381019080803563ffffffff1690602001909291905050506128df565b604051808d63ffffffff1663ffffffff1681526020018c63ffffffff1663ffffffff1681526020018b81526020018a8152602001898152602001888152602001878152602001861515151581526020018581526020018481526020018381526020018281526020019c5050505050505050505050505060405180910390f35b348015610eaf57600080fd5b50610eb8612af0565b6040518082815260200191505060405180910390f35b348015610eda57600080fd5b50610ee3612af6565b604051808215151515815260200191505060405180910390f35b348015610f0957600080fd5b50610f12612b12565b6040518082815260200191505060405180910390f35b348015610f3457600080fd5b50610f3d612b18565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b348015610f6b57600080fd5b50610f74612b2e565b604051808215151515815260200191505060405180910390f35b348015610f9a57600080fd5b50610fbf600480360381019080803563ffffffff169060200190929190505050612b41565b6040518082815260200191505060405180910390f35b348015610fe157600080fd5b50610fea612b59565b604051808215151515815260200191505060405180910390f35b34801561101057600080fd5b50611045600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b71565b604051808215151515815260200191505060405180910390f35b34801561106b57600080fd5b50611074612d43565b604051808215151515815260200191505060405180910390f35b34801561109a57600080fd5b506110cf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e0b565b604051808215151515815260200191505060405180910390f35b3480156110f557600080fd5b5061112e600480360381019080803563ffffffff1690602001909291908035906020019092919080359060200190929190505050612e61565b005b34801561113c57600080fd5b50611181600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803563ffffffff169060200190929190505050612fe4565b005b34801561118f57600080fd5b506111986131e1565b6040518082815260200191505060405180910390f35b3480156111ba57600080fd5b5061121f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803563ffffffff1690602001909291905050506131e7565b604051808215151515815260200191505060405180910390f35b34801561124557600080fd5b5061124e6133bc565b6040518082815260200191505060405180910390f35b34801561127057600080fd5b5061128f600480360381019080803590602001909291905050506133c2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156112dd57600080fd5b50611322600480360381019080803563ffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613457565b005b34801561133057600080fd5b50611339613519565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561137957808201518184015260208101905061135e565b50505050905090810190601f1680156113a65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156113c057600080fd5b506113f5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613552565b604051808215151515815260200191505060405180910390f35b34801561141b57600080fd5b5061143a60048036038101908080359060200190929190505050613572565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b611490600480360381019080803563ffffffff169060200190929190803563ffffffff1690602001909291905050506135a1565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b3480156114be57600080fd5b506114e3600480360381019080803563ffffffff169060200190929190505050613c7b565b604051808215151515815260200191505060405180910390f35b34801561150957600080fd5b5061154e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803563ffffffff169060200190929190505050613d6f565b604051808215151515815260200191505060405180910390f35b34801561157457600080fd5b5061157d613d7a565b6040518082815260200191505060405180910390f35b34801561159f57600080fd5b506115de600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613d80565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b34801561160c57600080fd5b50611615613dc8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561166357600080fd5b50611698600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613e49565b6040518083815260200180602001828103825283818151815260200191508051906020019060200280838360005b838110156116e15780820151818401526020810190506116c6565b50505050905001935050505060405180910390f35b34801561170257600080fd5b50611727600480360381019080803563ffffffff169060200190929190505050613f53565b6040518082600560200280838360005b83811015611752578082015181840152602081019050611737565b5050505090500191505060405180910390f35b34801561177157600080fd5b506117c960048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050613fe9565b604051808215151515815260200191505060405180910390f35b3480156117ef57600080fd5b5061180e60048036038101908080359060200190929190505050614092565b005b34801561181c57600080fd5b50611851600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506140f4565b005b34801561185f57600080fd5b506118686141c9565b6040518082815260200191505060405180910390f35b34801561188a57600080fd5b506118936141cf565b005b3480156118a157600080fd5b506118c6600480360381019080803563ffffffff169060200190929190505050614253565b005b3480156118d457600080fd5b50611909600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506146f4565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561196857600080fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080600060196001850363ffffffff168154811015156119ad57fe5b9060005260206000209060080201600201549150600b8211156119cf57600b91505b60196001850363ffffffff168154811015156119e757fe5b906000526020600020906008020160030154601783600c81101515611a0857fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff1601925042831115611a4b57611a4842846147ca90919063ffffffff16565b90505b9193909250565b6040805190810160405280600d81526020017f43727970746f526162626974730000000000000000000000000000000000000081525081565b60146020528060005260406000206000915090505481565b600f60009054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b1357600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601160205281600052604060002081600581101515611b5657fe5b60089182820401919006600402915091509054906101000a900463ffffffff1681565b60126020528060005260406000206000915090505481565b600081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611c7257600080fd5b80600d8190555050565b601a6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000602054905090565b6000601e60008363ffffffff1663ffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000601260008363ffffffff1663ffffffff168152602001908152602001600020549050919050565b6000601a60008363ffffffff1663ffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611dc057600080fd5b600090505b8251811015611e0557611dee8382815181101515611ddf57fe5b90602001906020020151611ed7565b15611df857600191505b8080600101915050611dc5565b50919050565b601560205281600052604060002081815481101515611e2657fe5b9060005260206000209060089182820401919006600402915091509054906101000a900463ffffffff1681565b600080600090505b6005811015611ed1576000601160008563ffffffff1663ffffffff16815260200190815260200160002082600581101515611e9257fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff16141515611ec45781806001019250505b8080600101915050611e5b565b50919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f3457600080fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612046576000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507ff1abf01a1043b7c244d128e8595cf0c1d10743b022b03a02dffd8ca3bf729f5a82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1600190505b919050565b6000601060008363ffffffff1663ffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120cf57600080fd5b803073ffffffffffffffffffffffffffffffffffffffff1631101515156120f557600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561215d573d6000803e3d6000fd5b5050565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156121bb57600080fd5b600760009054906101000a900460ff1615600760006101000a81548160ff0219169083151502179055905090565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60065481565b60008060008060196001860363ffffffff1681548110151561226357fe5b906000526020600020906008020160030154925060196001860363ffffffff1681548110151561228f57fe5b9060005260206000209060080201600201549150601782600c811015156122b257fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff1690506122e983826147e390919063ffffffff16565b90504281111580156123245750600060196001870363ffffffff1681548110151561231057fe5b906000526020600020906008020160040154145b1561232e57600193505b505050919050565b6000806000612343612b59565b151561234e57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16601a60008763ffffffff1663ffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156123c757600080fd5b600854841115156123d757600080fd5b6123e085611990565b905050809250508142101515156123f657600080fd5b600160196001870363ffffffff1681548110151561241057fe5b90600052602060002090600802016004015414801561244d575083601460008763ffffffff1663ffffffff16815260200190815260200160002054145b1561245b57600092506125a1565b600160196001870363ffffffff1681548110151561247557fe5b90600052602060002090600802016004018190555083601460008763ffffffff1663ffffffff1681526020019081526020016000208190555060196001860363ffffffff168154811015156124c657fe5b90600052602060002090600802016005015490506015600082815260200190815260200160002085908060018154018082558091505090600182039060005260206000209060089182820401919006600402909192909190916101000a81548163ffffffff021916908363ffffffff160217905550507f23c73fbe30b308411abb0e34d730de433c289c95d4f22ac36485d2d81299faf4856001612569886125a9565b604051808463ffffffff1663ffffffff16815260200183151515158152602001828152602001935050505060405180910390a1600192505b505092915050565b600080600080600160196001870363ffffffff168154811015156125c957fe5b906000526020600020906008020160040154141561268a576064601460008763ffffffff1663ffffffff1681526020019081526020016000205481151561260c57fe5b04925061262360198461480190919063ffffffff16565b915061263a6009548461480190919063ffffffff16565b905061266e601460008763ffffffff1663ffffffff16815260200190815260200160002054836147e390919063ffffffff16565b915061268381836147e390919063ffffffff16565b935061268f565b600093505b505050919050565b600081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b6000601660008363ffffffff1663ffffffff168152602001908152602001600020549050919050565b60198181548110151561275857fe5b90600052602060002090600802016000915090508060000160009054906101000a900463ffffffff16908060000160049054906101000a900463ffffffff16908060010154908060020154908060030154908060040154908060050154908060060154908060070154905089565b60006127d1336121e9565b156127df57600190506127f3565b600f60009054906101000a900460ff161590505b90565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561285357600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60106020528060005260406000206000915090505481565b6000601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b6000806000806000806000806000806000806128fa8d6125a9565b915060018d039c5060198d63ffffffff1681548110151561291757fe5b906000526020600020906008020160000160009054906101000a900463ffffffff169b5060198d63ffffffff1681548110151561295057fe5b906000526020600020906008020160000160049054906101000a900463ffffffff169a5060198d63ffffffff1681548110151561298957fe5b906000526020600020906008020160010154995060198d63ffffffff168154811015156129b257fe5b906000526020600020906008020160020154985060198d63ffffffff168154811015156129db57fe5b906000526020600020906008020160030154975060198d63ffffffff16815481101515612a0457fe5b906000526020600020906008020160040154965060198d63ffffffff16815481101515612a2d57fe5b9060005260206000209060080201600501549550600b891115612a4f57600b98505b601260008e63ffffffff1663ffffffff168152602001908152602001600020549050601789600c81101515612a8057fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff169250612ab788846147e390919063ffffffff16565b92504283111515612acb5760019450612ae1565b612ade42846147ca90919063ffffffff16565b93505b91939597999b5091939597999b565b600d5481565b6000612b00612b59565b1515612b0b57600080fd5b6001905090565b600b5481565b600a60009054906101000a900463ffffffff1681565b602260149054906101000a900460ff1681565b60136020528060005260406000206000915090505481565b6000600760009054906101000a900460ff1615905090565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515612bcb57600080fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515612d3e576001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600654016006819055508160056000600654815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd1bba68c128cc3f427e5831b3c6f99f480b6efa6b9e80c757768f6124158cc3f82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1600190505b919050565b6000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ccb0893d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015612dcb57600080fd5b505af1158015612ddf573d6000803e3d6000fd5b505050506040513d6020811015612df557600080fd5b8101908080519060200190929190505050905090565b6000601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515612eb957600080fd5b6001821415612ef5578060196001850363ffffffff16815481101515612edb57fe5b906000526020600020906008020160020181905550612fdf565b6002821415612f31578060196001850363ffffffff16815481101515612f1757fe5b906000526020600020906008020160050181905550612fde565b6003821415612f635780601460008563ffffffff1663ffffffff16815260200190815260200160002081905550612fdd565b6004821415612fdc5780601260008563ffffffff1663ffffffff168152602001908152602001600020819055507f6fae13a3fbf9a1fd5751233eb2e75ce60a5321dbc847bb3e1e2e257ef43caa488382604051808363ffffffff1663ffffffff1681526020018281526020019250505060405180910390a15b5b5b5b505050565b600080339150601a60008463ffffffff1663ffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff16601a60008563ffffffff1663ffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156130a557600080fd5b8373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156130e057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415151561311c57600080fd5b613126818461483c565b6131308484614b7a565b7f0daf680c3f528a8760b5142fe1f6f80d5f4ea18bb76f347a7a44a2d565c2b7dc818585604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018263ffffffff1663ffffffff168152602001935050505060405180910390a150505050565b600c5481565b600080601a60008463ffffffff1663ffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561326657600080fd5b61326f336121e9565b151561327a57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156132b557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141515156132f157600080fd5b6132fb818461483c565b6133058484614b7a565b7f0daf680c3f528a8760b5142fe1f6f80d5f4ea18bb76f347a7a44a2d565c2b7dc818585604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018263ffffffff1663ffffffff168152602001935050505060405180910390a160019150509392505050565b60205481565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561341c57600080fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff16601a60008463ffffffff1663ffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156134d057600080fd5b601e60008363ffffffff1663ffffffff16815260200190815260200160002060009054906101000a900460ff1615151561350957600080fd5b6135143382846131e7565b505050565b6040805190810160405280600381526020017f435242000000000000000000000000000000000000000000000000000000000081525081565b60046020528060005260406000206000915054906101000a900460ff1681565b601781600c8110151561358157fe5b60089182820401919006600402915054906101000a900463ffffffff1681565b60008060008060006135b16158a4565b60008060006135be612d43565b15156135c957600080fd5b6135d1612b59565b15156135dc57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16601a60008d63ffffffff1663ffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561365557600080fd5b6001601960018c0363ffffffff1681548110151561366f57fe5b90600052602060002090600802016004015414151561368d57600080fd5b8963ffffffff168b63ffffffff16141515156136a857600080fd5b6136b18b612245565b15156136bc57600080fd5b6136c58a6125a9565b34101515156136d357600080fd5b6136dd8b8b614ce1565b9750602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166327c5e534601660008e63ffffffff1663ffffffff16815260200190815260200160002054601660008e63ffffffff1663ffffffff168152602001908152602001600020548b6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018381526020018281526020019350505050602060405180830381600087803b1580156137be57600080fd5b505af11580156137d2573d6000803e3d6000fd5b505050506040513d60208110156137e857600080fd5b81019080805190602001909291905050509650602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633dd5964f601960018d0363ffffffff1681548110151561385157fe5b906000526020600020906008020160060154601960018f0363ffffffff1681548110151561387b57fe5b9060005260206000209060080201600601546040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180838152602001828152602001925050506040805180830381600087803b1580156138e557600080fd5b505af11580156138f9573d6000803e3d6000fd5b505050506040513d604081101561390f57600080fd5b8101908080519060200190929190805190602001909291905050508096508197505050610120604051908101604052808c63ffffffff1681526020018b63ffffffff1681526020014381526020016000815260200160008152602001600081526020018981526020018781526020018681525093506019849080600181540180825580915050906001820390600052602060002090600802016000909192909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908363ffffffff16021790555060408201518160010155606082015181600201556080820151816003015560a0820151816004015560c0820151816005015560e0820151816006015561010082015181600701555050925086601660008563ffffffff1663ffffffff16815260200190815260200160002081905550613aa26004601460008d63ffffffff1663ffffffff16815260200190815260200160002054614dba90919063ffffffff16565b9150613aae8b83614dd5565b601a60008b63ffffffff1663ffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc601460008d63ffffffff1663ffffffff168152602001908152602001600020549081150290604051600060405180830381858888f19350505050158015613b52573d6000803e3d6000fd5b50613b866064601460008d63ffffffff1663ffffffff16815260200190815260200160002054614dba90919063ffffffff16565b9050613b9d6009548261480190919063ffffffff16565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613c07573d6000803e3d6000fd5b50613c118b61501b565b613c60601a60008d63ffffffff1663ffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684898b8f8f8c8c61513d565b613c6a838c615283565b829850505050505050505092915050565b6000613c85612b59565b1515613c9057600080fd5b3373ffffffffffffffffffffffffffffffffffffffff16601a60008463ffffffff1663ffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613d0957600080fd5b600060196001840363ffffffff16815481101515613d2357fe5b9060005260206000209060080201600401819055506000601460008463ffffffff1663ffffffff16815260200190815260200160002081905550613d668261552b565b60019050919050565b600080905092915050565b600e5481565b601b60205281600052604060002081815481101515613d9b57fe5b9060005260206000209060089182820401919006600402915091509054906101000a900463ffffffff1681565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515613e2257600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006060601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509150601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015613f4757602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411613f0a5790505b50505050509050915091565b613f5b6158fd565b601160008363ffffffff1663ffffffff168152602001908152602001600020600580602002604051908101604052809291908260058015613fdd576020028201916000905b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411613fa05790505b50505050509050919050565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561404757600080fd5b600090505b825181101561408c57614075838281518110151561406657fe5b90602001906020020151612b71565b1561407f57600191505b808060010191505061404c565b50919050565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156140ea57600080fd5b80600e8190555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561414f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156141c657806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b60095481565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561422757600080fd5b600f60009054906101000a900460ff1615600f60006101000a81548160ff021916908315150217905550565b60008061425e6158a4565b600080935061426b612d43565b151561427657600080fd5b61427e612b59565b151561428957600080fd5b6142916127c6565b151561429c57600080fd5b600d54600b5411156142c1576142b1336121e9565b15156142bc57600080fd5b614387565b6142ca336121e9565b151561438657601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561432957600080fd5b6001601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600193505b5b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638f90f2bb336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561444457600080fd5b505af1158015614458573d6000803e3d6000fd5b505050506040513d602081101561446e57600080fd5b8101908080519060200190929190505050925061012060405190810160405280600063ffffffff168152602001600063ffffffff1681526020014381526020016000815260200160008152602001600081526020016000815260200160008152602001600081525091506019829080600181540180825580915050906001820390600052602060002090600802016000909192909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a81548163ffffffff021916908363ffffffff16021790555060408201518160010155606082015181600201556080820151816003015560a0820151816004015560c0820151816005015560e0820151816006015561010082015181600701555050905082601660008363ffffffff1663ffffffff168152602001908152602001600020819055506145d733828560008060006004600061513d565b42600c8190555080600a60006101000a81548163ffffffff021916908363ffffffff160217905550600b6000815480929190600101919050555061461b8186615283565b7f6e0c319a31fe9f53d1b28f06608bbc16136c7d76e852630c488a7abdd6c3d34033868342604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018463ffffffff1663ffffffff1681526020018363ffffffff1663ffffffff16815260200182815260200194505050505060405180910390a183156146ed576001601e60008363ffffffff1663ffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561474f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156147c75780600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b60008282111515156147d857fe5b818303905092915050565b60008082840190508381101515156147f757fe5b8091505092915050565b60008060008414156148165760009150614835565b828402905082848281151561482757fe5b0414151561483157fe5b8091505b5092915050565b600080601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509150600090505b81811015614b73578263ffffffff16601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811015156148e457fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1663ffffffff161415614b6657601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208181548110151561496257fe5b90600052602060002090600891828204019190066004026101000a81549063ffffffff021916905560008211801561499d5750600181038214155b15614b0e57601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600183038154811015156149f157fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff16601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082815481101515614a6357fe5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908363ffffffff160217905550601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060018303815481101515614ae557fe5b90600052602060002090600891828204019190066004026101000a81549063ffffffff02191690555b601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480919060019003614b609190615920565b50614b74565b8080600101915050614889565b5b50505050565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081908060018154018082558091505090600182039060005260206000209060089182820401919006600402909192909190916101000a81548163ffffffff021916908363ffffffff160217905550507ffa8e2129ea92b2ced664f0497f946a9596ced2af4bd0950bfccd6c6e2078103a8282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018263ffffffff1663ffffffff1681526020019250505060405180910390a181601a60008363ffffffff1663ffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60008060196001840363ffffffff16815481101515614cfc57fe5b90600052602060002090600802016005015460196001860363ffffffff16815481101515614d2657fe5b906000526020600020906008020160050154101515614d705760196001850363ffffffff16815481101515614d5757fe5b9060005260206000209060080201600501549050614d9d565b60196001840363ffffffff16815481101515614d8857fe5b90600052602060002090600802016005015490505b614db16001826147e390919063ffffffff16565b91505092915050565b6000808284811515614dc857fe5b0490508091505092915050565b600080600080614de3612b59565b1515614dee57600080fd5b600085111515614dfd57600080fd5b6000614e0887611e53565b111561501357614e1786611e53565b85811515614e2157fe5b049350600092505b614e3286611e53565b831015615012576000601160008863ffffffff1663ffffffff16815260200190815260200160002084600581101515614e6757fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff1614151561500557601160008763ffffffff1663ffffffff16815260200190815260200160002083600581101515614ebc57fe5b600891828204019190066004029054906101000a900463ffffffff169150601a60008363ffffffff1663ffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050614f25826157bb565b5083601060008463ffffffff1663ffffffff168152602001908152602001600020600082825401925050819055507f55ac5b34ed9f8bb24a85585c9449a48c9041c752861ed362c3c7fa3ae0028ec782601060008563ffffffff1663ffffffff16815260200190815260200160002054604051808363ffffffff1663ffffffff1681526020018281526020019250505060405180910390a18073ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f19350505050158015615003573d6000803e3d6000fd5b505b8280600101935050614e29565b5b505050505050565b615023612b59565b151561502e57600080fd5b61506b600160196001840363ffffffff1681548110151561504b57fe5b9060005260206000209060080201600201546147e390919063ffffffff16565b60196001830363ffffffff1681548110151561508357fe5b9060005260206000209060080201600201819055504260196001830363ffffffff168154811015156150b157fe5b9060005260206000209060080201600301819055507f40a71d6481ae5c7839a4c9bb3fa0bb33a4b5816a610c6bc28a590c85e8db5ccc8160196001840363ffffffff1681548110151561510057fe5b906000526020600020906008020160020154604051808363ffffffff1663ffffffff1681526020018281526020019250505060405180910390a150565b7f9c4a4694f3a64b101eb0227609f5af1310a30e4c652a8525972646d443b4feef878743888686604051808763ffffffff1663ffffffff168152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390a17fe207bb77a36191c152d0b5aae045371d330a437a5bf5bd80e530f643c9dc3107848489604051808463ffffffff1663ffffffff1681526020018363ffffffff1663ffffffff1681526020018263ffffffff1663ffffffff168152602001935050505060405180910390a161521d8888614b7a565b6000601060008963ffffffff1663ffffffff168152602001908152602001600020819055506000601260008963ffffffff1663ffffffff168152602001908152602001600020819055506020600081548092919060010191905055505050505050505050565b61528b61595a565b60008060008463ffffffff168663ffffffff16141515156152ab57600080fd5b60009250600091505b60058210156153ee576000601160008763ffffffff1663ffffffff168152602001908152602001600020836005811015156152eb57fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff161415156153e157601160008663ffffffff1663ffffffff1681526020019081526020016000208260058110151561534057fe5b600891828204019190066004029054906101000a900463ffffffff168484600b8110151561536a57fe5b602002019063ffffffff16908163ffffffff16815250506000601160008763ffffffff1663ffffffff168152602001908152602001600020836005811015156153af57fe5b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff16021790555082806001019350505b81806001019250506152b4565b848484600b811015156153fd57fe5b602002019063ffffffff16908163ffffffff16815250508280600101935050600090505b60058110156155195760058311156154a3578360018201600b8110151561544457fe5b6020020151601160008863ffffffff1663ffffffff1681526020019081526020016000208260058110151561547557fe5b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff16021790555061550c565b8381600b811015156154b157fe5b6020020151601160008863ffffffff1663ffffffff168152602001908152602001600020826005811015156154e257fe5b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055505b8080600101915050615421565b615522856157bb565b50505050505050565b600080600060196001850363ffffffff1681548110151561554857fe5b906000526020600020906008020160050154925060156000848152602001908152602001600020805490509150600090505b818110156157b4578363ffffffff1660156000858152602001908152602001600020828154811015156155a957fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1663ffffffff1614156157a75760156000848152602001908152602001600020818154811015156155fb57fe5b90600052602060002090600891828204019190066004026101000a81549063ffffffff02191690556000821180156156365750600181038214155b1561572357601560008481526020019081526020016000206001830381548110151561565e57fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff1660156000858152602001908152602001600020828154811015156156a457fe5b90600052602060002090600891828204019190066004026101000a81548163ffffffff021916908363ffffffff16021790555060156000848152602001908152602001600020600183038154811015156156fa57fe5b90600052602060002090600891828204019190066004026101000a81549063ffffffff02191690555b601560008481526020019081526020016000208054809190600190036157499190615920565b507f23c73fbe30b308411abb0e34d730de433c289c95d4f22ac36485d2d81299faf484600080604051808463ffffffff1663ffffffff16815260200183151515158152602001828152602001935050505060405180910390a16157b5565b808060010191505061557a565b5b50505050565b60006157f06001601260008563ffffffff1663ffffffff168152602001908152602001600020546147e390919063ffffffff16565b601260008463ffffffff1663ffffffff168152602001908152602001600020819055507f6fae13a3fbf9a1fd5751233eb2e75ce60a5321dbc847bb3e1e2e257ef43caa4882601260008563ffffffff1663ffffffff16815260200190815260200160002054604051808363ffffffff1663ffffffff1681526020018281526020019250505060405180910390a1601260008363ffffffff1663ffffffff168152602001908152602001600020549050919050565b61012060405190810160405280600063ffffffff168152602001600063ffffffff168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60a060405190810160405280600590602082028038833980820191505090505090565b815481835581811115615955576007016008900481600701600890048360005260206000209182019101615954919061597e565b5b505050565b61016060405190810160405280600b90602082028038833980820191505090505090565b6159a091905b8082111561599c576000816000905550600101615984565b5090565b905600a165627a7a72305820ddc5732b897234942e84f2c8dce224aead990f05c6390258d01423560c1af0740029
Swarm Source
bzzr://ddc5732b897234942e84f2c8dce224aead990f05c6390258d01423560c1af074
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.