Sponsored:   LH-CRYPTO - 200 instruments (BTC, EUR, GOLD, OIL, SHARES). Leverage up to 1:500. OPEN ACCOUNT
Contract Overview
Balance: 1.373624638561655684 Ether
Ether Value: $184.04 (@ $133.98/ETH)
Transactions: 31796 txns
Token Tracker: CryptoBots (CBT)
Misc:
Address Watch: Add To Watch List
Contract Creator: 0x77e42674e1cc459dd116bcab3d3be01409481f9dat txn 0x083e89a37eee38cf1c5e539809c2e7e6574ef91294046ae1b986f73bc8887be7
Token Balance:
 Latest 25 transactions from a total of 31796 transactions
(+4 PendingTxns)

TxHash Age From To Value [TxFee]
0x824384d43dc6e9174bfe16ad554b32c60f819cca3d4c0cf0ced2ff88355eb78a(pending)0x411eb5c5db55f2d5efb093beb7c19b391da3f95a  IN  0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430 Ether(Pending)
0x5467c023a17057b8636ea5eea76d14548b04c4e7391f1a02e52b1fadbbece3f8(pending)0x411eb5c5db55f2d5efb093beb7c19b391da3f95a  IN  0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430 Ether(Pending)
0x4b62322e1638f53116527f06be2a21f269d7bb93266cdeabb985fb58297b2376(pending)0x3203adb82b864d6a7aed197af64613a3b9441534  IN  0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430 Ether(Pending)
0x51ed27e03631c864487167973f2493d67125f1977afe3da8a2716ed5c6f11af9(pending)0x1544ff72564e65973d453b49ff6ac5ae80d94ef6  IN  0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430 Ether(Pending)
0x9fbece66e250a4cf4fe1d69e920a9bba4c8cdd9fc916963bbdf34fba94f60ab37 hrs 59 mins ago0x77e42674e1cc459dd116bcab3d3be01409481f9d  IN   0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430 Ether0.00140117
0x2985f03dac4d984f67526b78604322d296c2a54409ccfc4146cb49322da56cdf8 hrs ago0x77e42674e1cc459dd116bcab3d3be01409481f9d  IN   0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430 Ether0.00140117
0x4f535944814c5d4112ee04606de660ce00f05055428db192fdfdaab7e0e0a8d11 day 59 mins ago0x94258c01f237bcee6eee42b3e4107c9cd7e96c86  IN   0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430 Ether0.000840318
0x2ea9a897aa2333a99d020f0f7f4b6d3a15bf221f86153f0d561dfd8c922868bb1 day 1 hr ago0x9a4e05f09b5c4a2db686fb868b45561fefec8f0a  IN   0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430 Ether0.00084147
0xc756358b5d888d36fd565e2f2faf060a76f603a6cb00d4b720b97b636378c86d1 day 1 hr ago0x94258c01f237bcee6eee42b3e4107c9cd7e96c86  IN   0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430 Ether0.00140117
0xb06e542bef148399f63f4cab76c5960a6f8e97ccdf88febc53b6f684200c70541 day 1 hr ago0x94258c01f237bcee6eee42b3e4107c9cd7e96c86  IN   0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430 Ether0.00140117
0x11b2ef102c231edbf2ddad0f76382c60d0be27bae6b41b0f808152ae3958e2101 day 1 hr ago0xf281e85a0b992efa5fda4f52b35685dc5ee67bea  IN   0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430 Ether0.001500636
0x0a1fc52d2bc32e7b38756bc53d6c6e2fe07dc71e46b4b97160f4e8d7113ce9cb1 day 10 hrs ago0x0e42d32dcc5b83a9bc74523af3b8c3a3b4cf107f  IN   0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430.008 Ether0.000458916
0x27f00e01968f77a53eb87e76329ee4644e1e650b216909c998994a8814bee4d91 day 10 hrs ago0x0e42d32dcc5b83a9bc74523af3b8c3a3b4cf107f  IN   0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430.008 Ether0.000425178
0x4ddbe9cd6b72a1a0ecae8c7297e2943424b5fb98567449ce918e01db3fff2dd51 day 10 hrs ago0x0e42d32dcc5b83a9bc74523af3b8c3a3b4cf107f  IN   0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430.008 Ether0.000425178
0x590a6fb9728fdf9c012a434a26a028cfabde14b9b9a544cc9dc355ea75fa46e51 day 10 hrs ago0x0e42d32dcc5b83a9bc74523af3b8c3a3b4cf107f  IN   0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430.008 Ether0.000425178
0x244dee058d92bc39b61d2e04676dbfa0d70730a2c48e241af0766a83516ab1f91 day 10 hrs ago0x0e42d32dcc5b83a9bc74523af3b8c3a3b4cf107f  IN   0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430 Ether0.000838398
0x393c31cc2f7fe2dfa36f203d249b7036f88fafc1e9f7dd2a511009af2bae4b9c3 days 4 hrs ago0x56e1a3f4615544bed019a8b4fb69e27400d1d5ac  IN   0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430 Ether0.000420543
0x6462f1914b98739031ca7a3261a661ae357b26c6f6bd8dd8658e97d37e34db753 days 8 hrs ago0xbee5348d07466997e566a4d7551a7c95470a0b05  IN   0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430.008 Ether0.0002955924
0x1f72b7126ad8463c35a650c9a09855c26cc0ea12ece133be0add68d90a740f3f3 days 9 hrs ago0x577aa9045c9ebd5b6980d56badcd8506e2dffca4  IN   0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430 Ether0.000428232
0xb1ae0308648aea8221df2ea79a2ead22991b7d282608b37acb43396a01a941994 days 6 hrs ago0x3665a5ec39cc862f355e433a116bb55ef710f6f3  IN   0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430 Ether0.000421119
0xc43405866900be25ab7ef29afc77242ad2ff2528729e77697d60e0cec6cf25f64 days 14 hrs ago0xb1990c317146f9a6b112d12d2564f0bbf8adc706  IN   0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430 Ether0.000416619
0xb3671064ac9844459ec4a83e787c44890d894e884aa202513027680fcb9b66954 days 17 hrs ago0x0e42d32dcc5b83a9bc74523af3b8c3a3b4cf107f  IN   0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430.008 Ether0.000410545
0x315f197021f2b750390d3645f4c8164cf19100c225b063ecba0b7919d66d8ac04 days 17 hrs ago0x0e42d32dcc5b83a9bc74523af3b8c3a3b4cf107f  IN   0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430.008 Ether0.000410545
0xad56b2c20ef47d2108db51f4f19c718006875b0582b3bd64c6b446fe3e358a744 days 17 hrs ago0x0e42d32dcc5b83a9bc74523af3b8c3a3b4cf107f  IN   0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430.008 Ether0.000410545
0x748f86e01721993e11da16c28dab037bca95948951136dc86eaf368652b231d94 days 18 hrs ago0x0e42d32dcc5b83a9bc74523af3b8c3a3b4cf107f  IN   0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430 Ether0.000700265
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 25 Internal Txns, Click here To View More View All
ParentTxHash Block Age From To Value
0x01ec92cb2449c230776bfa7625ed51ff76e0a4e7a53f1eae83536ee38cf969f567450987 hrs 49 mins ago0x491c05896ef656d7fee0fb90ce487315ff0ac14c0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430.116343190787551423 Ether
0x080c9b44679626ef88a5dcbd2fd019a87e6eb674eef9e39db7c5946c6bd4b60d674185220 hrs 39 mins ago0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430x1ce9f61999539918f7bed453fd27cf715b08712a0.008 Ether
0x5c2707b32bed1ca9272520f1d788295fe6e3fdf1cab62e47003d34444f9e363567392821 day 6 hrs ago0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430x1ce9f61999539918f7bed453fd27cf715b08712a0.008 Ether
0xbab8a168e49d81fd5774917d86b536e79fa656b016639972102b3f230d54704567266783 days 8 hrs ago0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430x1ce9f61999539918f7bed453fd27cf715b08712a0.008 Ether
0x261f3dc8d82ec045f55808811ef22b88e18febc5734fa6a4eca8fcba7fccdddd67223614 days 1 hr ago0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430x1ce9f61999539918f7bed453fd27cf715b08712a0.008 Ether
0x4b147767e1744247e990c7be28baa1fae1ec2404bfc355e28dcba58cd41508ab67223484 days 1 hr ago0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430x1ce9f61999539918f7bed453fd27cf715b08712a0.008 Ether
0xc5849f0310a341b719759e5d535ed3633eda437e1e6a97335f5103d6bd1e38c967223454 days 1 hr ago0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430x1ce9f61999539918f7bed453fd27cf715b08712a0.008 Ether
0x77e7036067dc4bc037193e36aec763e1af4abfdc57d521bedf02e3010c99945a67220884 days 2 hrs ago0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430x1ce9f61999539918f7bed453fd27cf715b08712a0.008 Ether
0xa4c399cc9381108f6a7266642fadd6087b97c8090e874f4c6ecd9fe66920fc6b67190324 days 14 hrs ago0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430x1ce9f61999539918f7bed453fd27cf715b08712a0.008 Ether
0x90be109af78fbd8e23dd09d682d596270aa03c97be97dabd515a529a0541769f67184914 days 16 hrs ago0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430x1ce9f61999539918f7bed453fd27cf715b08712a0.008 Ether
0xb6463cb48887bc5d7adabedbbf2c626c61f2890e984f9669bdd2ab70de1ee22267182814 days 17 hrs ago0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430x1ce9f61999539918f7bed453fd27cf715b08712a0.008 Ether
0x414ce549e7f0531b2e23f5762a62f2f441165d8811e7c8951e3cadbfc2b1026f67144615 days 8 hrs ago0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430x1ce9f61999539918f7bed453fd27cf715b08712a0.008 Ether
0x8f29357e8d97db7c6bf920da6a6e045fb53f4ca69a97b7e6ba7f7dff9b3f36a967144555 days 8 hrs ago0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430x1ce9f61999539918f7bed453fd27cf715b08712a0.008 Ether
0x56ec7df89febacb1b95d3d822802fe03d3fab05940f9c14da307ef6f670c034e67130545 days 14 hrs ago0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430x1ce9f61999539918f7bed453fd27cf715b08712a0.008 Ether
0xa8f7c65c1d39217cc2c117c9c569fbe8ea748889a8b1811d6c7e6ae5f92293e067103136 days 49 mins ago0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430x1ce9f61999539918f7bed453fd27cf715b08712a0.008 Ether
0x6f80b1c2128cd40466718f2265fff7b87c63e7c85bde821d43cc54ae276dbb0767086276 days 7 hrs ago0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430x1ce9f61999539918f7bed453fd27cf715b08712a0.008 Ether
0x01f61e5af80b7b3fcf6171c074d78bf144685d667dd959a029a020d3720bc79d67085156 days 7 hrs ago0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430x1ce9f61999539918f7bed453fd27cf715b08712a0.008 Ether
0xf27724f3cbff3e05059a2eee7bbe72de158ab06354689bcff9a1e60050eae00467084426 days 8 hrs ago0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430x1ce9f61999539918f7bed453fd27cf715b08712a0.008 Ether
0x1d1c1945fc1ff4cad2a4edaf765e09329c234287f2bf29289ec72d5b05e09acb67084256 days 8 hrs ago0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430x79a198b2355ca2aef695d8a4987582e093911ebb0.0025 Ether
0x44cf05ae6ffe8e1bdb20a65293cdfb2603dab537fee410ce03f2168734ff825667072916 days 12 hrs ago0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430x1ce9f61999539918f7bed453fd27cf715b08712a0.008 Ether
0x3e56ac6f924642ccb1a98c3c1df7ea0b18ffef4cf738e79a10494d2e59b1481d66923818 days 23 hrs ago0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430x1ce9f61999539918f7bed453fd27cf715b08712a0.008 Ether
0x219e89c2d49667d9010060fae2a35f69289af9e7056e093041a41bffeed2c7c166920989 days 32 mins ago0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430x1ce9f61999539918f7bed453fd27cf715b08712a0.008 Ether
0x8fe2aeaee72d0c6c633e448101d0c50cba7e9c4961b43f86b6b839a7c543939466913189 days 3 hrs ago0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430x1ce9f61999539918f7bed453fd27cf715b08712a0.008 Ether
0x210356d2a13c4937f28119dfa012ba45aa247cc02681cec051d857597f6dd20866885169 days 14 hrs ago0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430x1ce9f61999539918f7bed453fd27cf715b08712a0.008 Ether
0x8d1c2d70327654d3d55995c2d52acd4390dd6649a6cafcf82dce23e13f51c3e466878679 days 17 hrs ago0xf7a6e15dfd5cdd9ef12711bd757a9b6021abf6430x1ce9f61999539918f7bed453fd27cf715b08712a0.008 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: BotCore
Compiler Text: v0.4.20-nightly.2017.12.20+commit.efc198d5
Optimization Enabled: No
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.11;


contract Ownable {
    address public owner;

    function Ownable() public {
        owner = msg.sender;
    }

    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    function transferOwnership(address newOwner) public onlyOwner {
        if (newOwner != address(0)) {
            owner = newOwner;
        }
    }
}


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

contract GeneScienceInterface {
    function isGeneScience() public pure returns (bool);
    function mixGenes(uint256 genes1, uint256 genes2, uint256 targetBlock) public returns (uint256);
}

contract BotAccessControl {
    event ContractUpgrade(address newContract);
    address public ceoAddress;
    address public cfoAddress;
    address public cooAddress;
    bool public paused = false;

    modifier onlyCEO() {
        require(msg.sender == ceoAddress);
        _;
    }

    modifier onlyCFO() {
        require(msg.sender == cfoAddress);
        _;
    }

    modifier onlyCOO() {
        require(msg.sender == cooAddress);
        _;
    }

    modifier onlyCLevel() {
        require(
            msg.sender == cooAddress ||
            msg.sender == ceoAddress ||
            msg.sender == cfoAddress
        );
        _;
    }

    function setCEO(address _newCEO) external onlyCEO {
        require(_newCEO != address(0));

        ceoAddress = _newCEO;
    }

    function setCFO(address _newCFO) external onlyCEO {
        require(_newCFO != address(0));

        cfoAddress = _newCFO;
    }

    function setCOO(address _newCOO) external onlyCEO {
        require(_newCOO != address(0));

        cooAddress = _newCOO;
    }

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

    modifier whenPaused {
        require(paused);
        _;
    }

    function pause() external onlyCLevel whenNotPaused {
        paused = true;
    }

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


contract BotBase is BotAccessControl {
    event Birth(
      address owner,
      uint256 botId,
      uint256 matronId,
      uint256 sireId,
      uint256 genes,
      uint256 birthTime
    );

    event Transfer(address from, address to, uint256 tokenId);

    struct Bot {
        uint256 genes;
        uint64 birthTime;
        uint64 cooldownEndBlock;
        uint32 matronId;
        uint32 sireId;
        uint32 siringWithId;
        uint16 cooldownIndex;
        uint16 generation;
    }

    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)
    ];

    uint256 public secondsPerBlock = 15;

    Bot[] bots;

    mapping (uint256 => address) public botIndexToOwner;
    mapping (address => uint256) ownershipTokenCount;
    mapping (uint256 => address) public botIndexToApproved;
    mapping (uint256 => address) public sireAllowedToAddress;
    uint32 public destroyedBots;
    SaleClockAuction public saleAuction;
    SiringClockAuction public siringAuction;

    function _transfer(address _from, address _to, uint256 _tokenId) internal {
        if (_to == address(0)) {
            delete botIndexToOwner[_tokenId];
        } else {
            ownershipTokenCount[_to]++;
            botIndexToOwner[_tokenId] = _to;
        }
        if (_from != address(0)) {
            ownershipTokenCount[_from]--;
            delete sireAllowedToAddress[_tokenId];
            delete botIndexToApproved[_tokenId];
        }
        Transfer(_from, _to, _tokenId);
    }

    function _createBot(
        uint256 _matronId,
        uint256 _sireId,
        uint256 _generation,
        uint256 _genes,
        address _owner
    )
        internal
        returns (uint)
    {
        require(_matronId == uint256(uint32(_matronId)));
        require(_sireId == uint256(uint32(_sireId)));
        require(_generation == uint256(uint16(_generation)));

        uint16 cooldownIndex = uint16(_generation / 2);
        if (cooldownIndex > 13) {
            cooldownIndex = 13;
        }

        Bot memory _bot = Bot({
            genes: _genes,
            birthTime: uint64(now),
            cooldownEndBlock: 0,
            matronId: uint32(_matronId),
            sireId: uint32(_sireId),
            siringWithId: 0,
            cooldownIndex: cooldownIndex,
            generation: uint16(_generation)
        });
        uint256 newBotId = bots.push(_bot) - 1;

        require(newBotId == uint256(uint32(newBotId)));

        Birth(
            _owner,
            newBotId,
            uint256(_bot.matronId),
            uint256(_bot.sireId),
            _bot.genes,
            uint256(_bot.birthTime)
       );

        _transfer(0, _owner, newBotId);

        return newBotId;
    }

    function _destroyBot(uint256 _botId) internal {
        require(_botId > 0);
        address from = botIndexToOwner[_botId];
        require(from != address(0));
        destroyedBots++;
        _transfer(from, 0, _botId);
    }

    function setSecondsPerBlock(uint256 secs) external onlyCLevel {
        require(secs < cooldowns[0]);
        secondsPerBlock = secs;
    }
}


contract BotExtension is BotBase {
    event Lock(uint256 botId, uint16 mask);
    mapping (address => bool) extensions;
    mapping (uint256 => uint16) locks;
    uint16 constant LOCK_BREEDING = 1;
    uint16 constant LOCK_TRANSFER = 2;
    uint16 constant LOCK_ALL = LOCK_BREEDING | LOCK_TRANSFER;

    function addExtension(address _contract) external onlyCEO {
        extensions[_contract] = true;
    }

    function removeExtension(address _contract) external onlyCEO {
        delete extensions[_contract];
    }

    modifier onlyExtension() {
        require(extensions[msg.sender] == true);
        _;
    }

    function extCreateBot(
        uint256 _matronId,
        uint256 _sireId,
        uint256 _generation,
        uint256 _genes,
        address _owner
    )
        public
        onlyExtension
        returns (uint)
    {
        return _createBot(_matronId, _sireId, _generation, _genes, _owner);
    }

    function extDestroyBot(uint256 _botId)
        public
        onlyExtension
    {
        require(locks[_botId] == 0);

        _destroyBot(_botId);
    }

    function extLockBot(uint256 _botId, uint16 _mask)
        public
        onlyExtension
    {
        _lockBot(_botId, _mask);
    }

    function _lockBot(uint256 _botId, uint16 _mask)
        internal
    {
        require(_mask > 0);

        uint16 mask = locks[_botId];
        require(mask & _mask == 0);

        if (_mask & LOCK_BREEDING > 0) {
            Bot storage bot = bots[_botId];
            require(bot.siringWithId == 0);
        }

        if (_mask & LOCK_TRANSFER > 0) {
            address owner = botIndexToOwner[_botId];
            require(owner != address(saleAuction));
            require(owner != address(siringAuction));
        }

        mask |= _mask;

        locks[_botId] = mask;

        Lock(_botId, mask);
    }

    function extUnlockBot(uint256 _botId, uint16 _mask)
        public
        onlyExtension
        returns (uint16)
    {
        _unlockBot(_botId, _mask);
    }

    function _unlockBot(uint256 _botId, uint16 _mask)
        internal
    {
        require(_mask > 0);

        uint16 mask = locks[_botId];
        require(mask & _mask == _mask);
        mask ^= _mask;

        locks[_botId] = mask;

        Lock(_botId, mask);
    }

    function extGetLock(uint256 _botId)
        public
        view
        onlyExtension
        returns (uint16)
    {
        return locks[_botId];
    }
}


contract BotOwnership is BotExtension, ERC721 {
    string public constant name = "CryptoBots";
    string public constant symbol = "CBT";

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

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

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

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

    function transfer(
        address _to,
        uint256 _tokenId
    )
        external
        whenNotPaused
    {
        require(_to != address(0));
        require(_to != address(this));
        require(_to != address(saleAuction));
        require(_to != address(siringAuction));
        require(_owns(msg.sender, _tokenId));
        require(locks[_tokenId] & LOCK_TRANSFER == 0);
        _transfer(msg.sender, _to, _tokenId);
    }

    function approve(
        address _to,
        uint256 _tokenId
    )
        external
        whenNotPaused
    {
        require(_owns(msg.sender, _tokenId));
        require(locks[_tokenId] & LOCK_TRANSFER == 0);
        _approve(_tokenId, _to);
        Approval(msg.sender, _to, _tokenId);
    }

    function transferFrom(
        address _from,
        address _to,
        uint256 _tokenId
    )
        external
        whenNotPaused
    {
        require(_to != address(0));
        require(_to != address(this));
        require(_approvedFor(msg.sender, _tokenId));
        require(_owns(_from, _tokenId));
        require(locks[_tokenId] & LOCK_TRANSFER == 0);
        _transfer(_from, _to, _tokenId);
    }

    function totalSupply() public view returns (uint) {
        return bots.length - destroyedBots;
    }

    function ownerOf(uint256 _tokenId)
        external
        view
        returns (address owner)
    {
        owner = botIndexToOwner[_tokenId];
        require(owner != address(0));
    }

    function tokensOfOwner(address _owner) external view returns(uint256[] ownerTokens) {
        uint256 tokenCount = balanceOf(_owner);

        if (tokenCount == 0) {
            return new uint256[](0);
        } else {
            uint256[] memory result = new uint256[](tokenCount);
            uint256 totalBots = bots.length - 1;
            uint256 resultIndex = 0;
            uint256 botId;
            for (botId = 0; botId <= totalBots; botId++) {
                if (botIndexToOwner[botId] == _owner) {
                    result[resultIndex] = botId;
                    resultIndex++;
                }
            }

            return result;
        }
    }
}


contract BotBreeding is BotOwnership {
    event Pregnant(address owner, uint256 matronId, uint256 sireId, uint256 cooldownEndBlock);
    uint256 public autoBirthFee = 2 finney;
    uint256 public pregnantBots;
    GeneScienceInterface public geneScience;

    function setGeneScienceAddress(address _address) external onlyCEO {
        GeneScienceInterface candidateContract = GeneScienceInterface(_address);
        require(candidateContract.isGeneScience());
        geneScience = candidateContract;
    }

    function _isReadyToBreed(uint256 _botId, Bot _bot) internal view returns (bool) {
        return
            (_bot.siringWithId == 0) &&
            (_bot.cooldownEndBlock <= uint64(block.number)) &&
            (locks[_botId] & LOCK_BREEDING == 0);
    }

    function _isSiringPermitted(uint256 _sireId, uint256 _matronId) internal view returns (bool) {
        address matronOwner = botIndexToOwner[_matronId];
        address sireOwner = botIndexToOwner[_sireId];
        return (matronOwner == sireOwner || sireAllowedToAddress[_sireId] == matronOwner);
    }

    function _triggerCooldown(Bot storage _bot) internal {
        _bot.cooldownEndBlock = uint64((cooldowns[_bot.cooldownIndex]/secondsPerBlock) + block.number);
        if (_bot.cooldownIndex < 13) {
            _bot.cooldownIndex += 1;
        }
    }

    function approveSiring(address _addr, uint256 _sireId)
        external
        whenNotPaused
    {
        require(_owns(msg.sender, _sireId));
        sireAllowedToAddress[_sireId] = _addr;
    }

    function setAutoBirthFee(uint256 val) external onlyCOO {
        autoBirthFee = val;
    }

    function _isReadyToGiveBirth(Bot _matron) private view returns (bool) {
        return (_matron.siringWithId != 0) && (_matron.cooldownEndBlock <= uint64(block.number));
    }

    function isReadyToBreed(uint256 _botId)
        public
        view
        returns (bool)
    {
        Bot storage bot = bots[_botId];
        return _botId > 0 && _isReadyToBreed(_botId, bot);
    }

    function isPregnant(uint256 _botId)
        public
        view
        returns (bool)
    {
        return _botId > 0 && bots[_botId].siringWithId != 0;
    }

    function _isValidMatingPair(
        Bot storage _matron,
        uint256 _matronId,
        Bot storage _sire,
        uint256 _sireId
    )
        private
        view
        returns(bool)
    {
        if (_matronId == _sireId) {
            return false;
        }
        if (_matron.matronId == _sireId || _matron.sireId == _sireId) {
            return false;
        }
        if (_sire.matronId == _matronId || _sire.sireId == _matronId) {
            return false;
        }
        if (_sire.matronId == 0 || _matron.matronId == 0) {
            return true;
        }
        if (_sire.matronId == _matron.matronId || _sire.matronId == _matron.sireId) {
            return false;
        }
        if (_sire.sireId == _matron.matronId || _sire.sireId == _matron.sireId) {
            return false;
        }
        return true;
    }

    function _canBreedWithViaAuction(uint256 _matronId, uint256 _sireId)
        internal
        view
        returns (bool)
    {
        Bot storage matron = bots[_matronId];
        Bot storage sire = bots[_sireId];
        return _isValidMatingPair(matron, _matronId, sire, _sireId);
    }

    function canBreedWith(uint256 _matronId, uint256 _sireId)
        external
        view
        returns(bool)
    {
        require(_matronId > 0);
        require(_sireId > 0);
        Bot storage matron = bots[_matronId];
        Bot storage sire = bots[_sireId];
        return _isValidMatingPair(matron, _matronId, sire, _sireId) &&
            _isSiringPermitted(_sireId, _matronId);
    }

    function _breedWith(uint256 _matronId, uint256 _sireId) internal {
        Bot storage sire = bots[_sireId];
        Bot storage matron = bots[_matronId];
        matron.siringWithId = uint32(_sireId);
        _triggerCooldown(sire);
        _triggerCooldown(matron);
        delete sireAllowedToAddress[_matronId];
        delete sireAllowedToAddress[_sireId];
        pregnantBots++;
        Pregnant(botIndexToOwner[_matronId], _matronId, _sireId, matron.cooldownEndBlock);
    }

    function breedWithAuto(uint256 _matronId, uint256 _sireId)
        external
        payable
        whenNotPaused
    {
        require(msg.value >= autoBirthFee);
        require(_owns(msg.sender, _matronId));
        require(_isSiringPermitted(_sireId, _matronId));
        Bot storage matron = bots[_matronId];
        require(_isReadyToBreed(_matronId, matron));
        Bot storage sire = bots[_sireId];
        require(_isReadyToBreed(_sireId, sire));
        require(_isValidMatingPair(
            matron,
            _matronId,
            sire,
            _sireId
        ));
        _breedWith(_matronId, _sireId);
    }

    function giveBirth(uint256 _matronId)
        external
        whenNotPaused
        returns(uint256)
    {
        Bot storage matron = bots[_matronId];
        require(matron.birthTime != 0);
        require(_isReadyToGiveBirth(matron));
        uint256 sireId = matron.siringWithId;
        Bot storage sire = bots[sireId];
        uint16 parentGen = matron.generation;
        if (sire.generation > matron.generation) {
            parentGen = sire.generation;
        }
        uint256 childGenes = geneScience.mixGenes(matron.genes, sire.genes, matron.cooldownEndBlock - 1);
        address owner = botIndexToOwner[_matronId];
        uint256 botId = _createBot(_matronId, matron.siringWithId, parentGen + 1, childGenes, owner);
        delete matron.siringWithId;
        pregnantBots--;
        msg.sender.send(autoBirthFee);
        return botId;
    }
}


contract ClockAuctionBase {
    struct Auction {
        address seller;
        uint128 startingPrice;
        uint128 endingPrice;
        uint64 duration;
        uint64 startedAt;
    }
    ERC721 public nonFungibleContract;
    uint256 public ownerCut;
    mapping (uint256 => Auction) tokenIdToAuction;
    event AuctionCreated(
      address seller,
      uint256 tokenId,
      uint256 startingPrice,
      uint256 endingPrice,
      uint256 creationTime,
      uint256 duration
    );
    event AuctionSuccessful(uint256 tokenId, uint256 totalPrice, address seller, address winner, uint256 time);
    event AuctionCancelled(uint256 tokenId, address seller, uint256 time);

    function _owns(address _claimant, uint256 _tokenId) internal view returns (bool) {
        return (nonFungibleContract.ownerOf(_tokenId) == _claimant);
    }

    function _escrow(address _owner, uint256 _tokenId) internal {
        nonFungibleContract.transferFrom(_owner, this, _tokenId);
    }

    function _transfer(address _receiver, uint256 _tokenId) internal {
        nonFungibleContract.transfer(_receiver, _tokenId);
    }

    function _addAuction(uint256 _tokenId, Auction _auction) internal {
        require(_auction.duration >= 1 minutes);
        tokenIdToAuction[_tokenId] = _auction;
        AuctionCreated(
            _auction.seller,
            uint256(_tokenId),
            uint256(_auction.startingPrice),
            uint256(_auction.endingPrice),
            uint256(_auction.startedAt),
            uint256(_auction.duration)
        );
    }

    function _cancelAuction(uint256 _tokenId, address _seller) internal {
        _removeAuction(_tokenId);
        _transfer(_seller, _tokenId);
        AuctionCancelled(_tokenId, _seller, uint256(now));
    }

    function _bid(uint256 _tokenId, uint256 _bidAmount)
        internal
        returns (uint256)
    {
        Auction storage auction = tokenIdToAuction[_tokenId];
        require(_isOnAuction(auction));
        uint256 price = _currentPrice(auction);
        require(_bidAmount >= price);
        address seller = auction.seller;
        _removeAuction(_tokenId);
        if (price > 0) {
            uint256 auctioneerCut = _computeCut(price);
            uint256 sellerProceeds = price - auctioneerCut;
            seller.transfer(sellerProceeds);
        }
        uint256 bidExcess = _bidAmount - price;
        msg.sender.transfer(bidExcess);
        AuctionSuccessful(_tokenId, price, seller, msg.sender, uint256(now));
        return price;
    }

    function _removeAuction(uint256 _tokenId) internal {
        delete tokenIdToAuction[_tokenId];
    }

    function _isOnAuction(Auction storage _auction) internal view returns (bool) {
        return (_auction.startedAt > 0);
    }

    function _currentPrice(Auction storage _auction)
        internal
        view
        returns (uint256)
    {
        uint256 secondsPassed = 0;
        if (now > _auction.startedAt) {
            secondsPassed = now - _auction.startedAt;
        }
        return _computeCurrentPrice(
            _auction.startingPrice,
            _auction.endingPrice,
            _auction.duration,
            secondsPassed
        );
    }

    function _computeCurrentPrice(
        uint256 _startingPrice,
        uint256 _endingPrice,
        uint256 _duration,
        uint256 _secondsPassed
    )
        internal
        pure
        returns (uint256)
    {
        if (_secondsPassed >= _duration) {
            return _endingPrice;
        } else {
            int256 totalPriceChange = int256(_endingPrice) - int256(_startingPrice);
            int256 currentPriceChange = totalPriceChange * int256(_secondsPassed) / int256(_duration);
            int256 currentPrice = int256(_startingPrice) + currentPriceChange;
            return uint256(currentPrice);
        }
    }

    function _computeCut(uint256 _price) internal view returns (uint256) {
        return _price * ownerCut / 10000;
    }
}


contract Pausable is Ownable {
    event Pause();
    event Unpause();
    bool public paused = false;

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

    modifier whenPaused {
        require(paused);
        _;
    }

    function pause() public onlyOwner whenNotPaused returns (bool) {
        paused = true;
        Pause();
        return true;
    }

    function unpause() public onlyOwner whenPaused returns (bool) {
        paused = false;
        Unpause();
        return true;
    }
}


contract ClockAuction is Pausable, ClockAuctionBase {
    function ClockAuction(address _nftAddress, uint256 _cut) public {
        require(_cut <= 10000);
        ownerCut = _cut;

        ERC721 candidateContract = ERC721(_nftAddress);
        nonFungibleContract = candidateContract;
    }

    function withdrawBalance() external {
        address nftAddress = address(nonFungibleContract);
        require(
            msg.sender == owner ||
            msg.sender == nftAddress
        );
        bool res = nftAddress.send(this.balance);
    }

    function createAuction(
        uint256 _tokenId,
        uint256 _startingPrice,
        uint256 _endingPrice,
        uint256 _duration,
        address _seller
    )
        external
        whenNotPaused
    {
        require(_startingPrice == uint256(uint128(_startingPrice)));
        require(_endingPrice == uint256(uint128(_endingPrice)));
        require(_duration == uint256(uint64(_duration)));
        require(_owns(msg.sender, _tokenId));
        _escrow(msg.sender, _tokenId);
        Auction memory auction = Auction(
            _seller,
            uint128(_startingPrice),
            uint128(_endingPrice),
            uint64(_duration),
            uint64(now)
        );
        _addAuction(_tokenId, auction);
    }

    function bid(uint256 _tokenId)
        external
        payable
        whenNotPaused
    {
        _bid(_tokenId, msg.value);
        _transfer(msg.sender, _tokenId);
    }

    function cancelAuction(uint256 _tokenId)
        external
    {
        Auction storage auction = tokenIdToAuction[_tokenId];
        require(_isOnAuction(auction));
        address seller = auction.seller;
        require(msg.sender == seller);
        _cancelAuction(_tokenId, seller);
    }

    function cancelAuctionWhenPaused(uint256 _tokenId)
        external
        whenPaused
        onlyOwner
    {
        Auction storage auction = tokenIdToAuction[_tokenId];
        require(_isOnAuction(auction));
        _cancelAuction(_tokenId, auction.seller);
    }

    function getAuction(uint256 _tokenId)
        external
        view
        returns
    (
        address seller,
        uint256 startingPrice,
        uint256 endingPrice,
        uint256 duration,
        uint256 startedAt
    )
    {
        Auction storage auction = tokenIdToAuction[_tokenId];
        require(_isOnAuction(auction));
        return (
            auction.seller,
            auction.startingPrice,
            auction.endingPrice,
            auction.duration,
            auction.startedAt
        );
    }

    function getCurrentPrice(uint256 _tokenId)
        external
        view
        returns (uint256)
    {
        Auction storage auction = tokenIdToAuction[_tokenId];
        require(_isOnAuction(auction));
        return _currentPrice(auction);
    }

}


contract SiringClockAuction is ClockAuction {
    bool public isSiringClockAuction = true;

    function SiringClockAuction(address _nftAddr, uint256 _cut) public
        ClockAuction(_nftAddr, _cut) {}

    function createAuction(
        uint256 _tokenId,
        uint256 _startingPrice,
        uint256 _endingPrice,
        uint256 _duration,
        address _seller
    )
        external
    {
        require(_startingPrice == uint256(uint128(_startingPrice)));
        require(_endingPrice == uint256(uint128(_endingPrice)));
        require(_duration == uint256(uint64(_duration)));
        require(msg.sender == address(nonFungibleContract));
        _escrow(_seller, _tokenId);
        Auction memory auction = Auction(
            _seller,
            uint128(_startingPrice),
            uint128(_endingPrice),
            uint64(_duration),
            uint64(now)
        );
        _addAuction(_tokenId, auction);
    }

    function bid(uint256 _tokenId)
        external
        payable
    {
        require(msg.sender == address(nonFungibleContract));
        address seller = tokenIdToAuction[_tokenId].seller;
        _bid(_tokenId, msg.value);
        _transfer(seller, _tokenId);
    }

}


contract SaleClockAuction is ClockAuction {
    bool public isSaleClockAuction = true;
    uint256 public gen0SaleCount;
    uint256[5] public lastGen0SalePrices;

    function SaleClockAuction(address _nftAddr, uint256 _cut) public
        ClockAuction(_nftAddr, _cut) {}

    function createAuction(
        uint256 _tokenId,
        uint256 _startingPrice,
        uint256 _endingPrice,
        uint256 _duration,
        address _seller
    )
        external
    {
        require(_startingPrice == uint256(uint128(_startingPrice)));
        require(_endingPrice == uint256(uint128(_endingPrice)));
        require(_duration == uint256(uint64(_duration)));
        require(msg.sender == address(nonFungibleContract));
        _escrow(_seller, _tokenId);
        Auction memory auction = Auction(
            _seller,
            uint128(_startingPrice),
            uint128(_endingPrice),
            uint64(_duration),
            uint64(now)
        );
        _addAuction(_tokenId, auction);
    }

    function bid(uint256 _tokenId)
        external
        payable
    {
        address seller = tokenIdToAuction[_tokenId].seller;
        uint256 price = _bid(_tokenId, msg.value);
        _transfer(msg.sender, _tokenId);
        if (seller == address(nonFungibleContract)) {
            lastGen0SalePrices[gen0SaleCount % 5] = price;
            gen0SaleCount++;
        }
    }

    function averageGen0SalePrice() external view returns (uint256) {
        uint256 sum = 0;
        for (uint256 i = 0; i < 5; i++) {
            sum += lastGen0SalePrices[i];
        }
        return sum / 5;
    }

}


contract BotAuction is BotBreeding {
    function setSaleAuctionAddress(address _address) external onlyCEO {
        SaleClockAuction candidateContract = SaleClockAuction(_address);
        require(candidateContract.isSaleClockAuction());
        saleAuction = candidateContract;
    }

    function setSiringAuctionAddress(address _address) external onlyCEO {
        SiringClockAuction candidateContract = SiringClockAuction(_address);
        require(candidateContract.isSiringClockAuction());
        siringAuction = candidateContract;
    }

    function createSaleAuction(
        uint256 _botId,
        uint256 _startingPrice,
        uint256 _endingPrice,
        uint256 _duration
    )
        external
        whenNotPaused
    {
        require(_owns(msg.sender, _botId));
        require(!isPregnant(_botId));
        _approve(_botId, saleAuction);
        saleAuction.createAuction(
            _botId,
            _startingPrice,
            _endingPrice,
            _duration,
            msg.sender
        );
    }

    function createSiringAuction(
        uint256 _botId,
        uint256 _startingPrice,
        uint256 _endingPrice,
        uint256 _duration
    )
        external
        whenNotPaused
    {
        require(_owns(msg.sender, _botId));
        require(isReadyToBreed(_botId));
        _approve(_botId, siringAuction);
        siringAuction.createAuction(
            _botId,
            _startingPrice,
            _endingPrice,
            _duration,
            msg.sender
        );
    }

    function bidOnSiringAuction(
        uint256 _sireId,
        uint256 _matronId
    )
        external
        payable
        whenNotPaused
    {
        require(_owns(msg.sender, _matronId));
        require(isReadyToBreed(_matronId));
        require(_canBreedWithViaAuction(_matronId, _sireId));
        uint256 currentPrice = siringAuction.getCurrentPrice(_sireId);
        require(msg.value >= currentPrice + autoBirthFee);
        siringAuction.bid.value(msg.value - autoBirthFee)(_sireId);
        _breedWith(uint32(_matronId), uint32(_sireId));
    }

    function withdrawAuctionBalances() external onlyCLevel {
        saleAuction.withdrawBalance();
        siringAuction.withdrawBalance();
    }
}


contract BotMinting is BotAuction {
    uint256 public constant PROMO_CREATION_LIMIT = 5000;
    uint256 public constant GEN0_CREATION_LIMIT = 45000;
    uint256 public constant GEN0_STARTING_PRICE = 10 finney;
    uint256 public constant GEN0_AUCTION_DURATION = 1 days;
    uint256 public promoCreatedCount;
    uint256 public gen0CreatedCount;

    function createPromoBot(uint256 _genes, address _owner) external onlyCOO {
        address botOwner = _owner;
        if (botOwner == address(0)) {
            botOwner = cooAddress;
        }
        require(promoCreatedCount < PROMO_CREATION_LIMIT);

        promoCreatedCount++;
        _createBot(0, 0, 0, _genes, botOwner);
    }

    function createGen0Auction(uint256 _genes) external onlyCOO {
        require(gen0CreatedCount < GEN0_CREATION_LIMIT);

        uint256 botId = _createBot(0, 0, 0, _genes, address(this));
        _approve(botId, saleAuction);

        saleAuction.createAuction(
            botId,
            _computeNextGen0Price(),
            0,
            GEN0_AUCTION_DURATION,
            address(this)
        );

        gen0CreatedCount++;
    }

    function _computeNextGen0Price() internal view returns (uint256) {
        uint256 avePrice = saleAuction.averageGen0SalePrice();
        require(avePrice == uint256(uint128(avePrice)));
        uint256 nextPrice = avePrice + (avePrice / 2);
        if (nextPrice < GEN0_STARTING_PRICE) {
            nextPrice = GEN0_STARTING_PRICE;
        }
        return nextPrice;
    }
}


contract BotCore is BotMinting {
    address public newContractAddress;

    function BotCore() public {
        paused = true;
        ceoAddress = msg.sender;
        cooAddress = msg.sender;
        _createBot(0, 0, 0, uint256(-1), msg.sender);
    }

    function setNewAddress(address _v2Address) external onlyCEO whenPaused {
        newContractAddress = _v2Address;
        ContractUpgrade(_v2Address);
    }

    function() external payable {
        require(
            msg.sender == address(saleAuction) ||
            msg.sender == address(siringAuction)
        );
    }

    function getBot(uint256 _id)
        external
        view
        returns (
        bool isGestating,
        bool isReady,
        uint256 cooldownIndex,
        uint256 nextActionAt,
        uint256 siringWithId,
        uint256 birthTime,
        uint256 matronId,
        uint256 sireId,
        uint256 generation,
        uint256 genes
    )
    {
        require(botIndexToOwner[_id] != address(0));
        Bot storage bot = bots[_id];
        isGestating = (bot.siringWithId != 0);
        isReady = (bot.cooldownEndBlock <= block.number);
        cooldownIndex = uint256(bot.cooldownIndex);
        nextActionAt = uint256(bot.cooldownEndBlock);
        siringWithId = uint256(bot.siringWithId);
        birthTime = uint256(bot.birthTime);
        matronId = uint256(bot.matronId);
        sireId = uint256(bot.sireId);
        generation = uint256(bot.generation);
        genes = bot.genes;
    }

    function unpause() public onlyCEO whenPaused {
        require(saleAuction != address(0));
        require(siringAuction != address(0));
        require(geneScience != address(0));
        require(newContractAddress == address(0));
        super.unpause();
    }

    function withdrawBalance() external onlyCFO {
        uint256 balance = this.balance;
        uint256 subtractFees = (pregnantBots + 1) * autoBirthFee;
        if (balance > subtractFees) {
            cfoAddress.send(balance - subtractFees);
        }
    }

    function destroyBot(uint256 _botId) external onlyCEO {
        require(locks[_botId] == 0);
        _destroyBot(_botId);
    }
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"cfoAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"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":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_botId","type":"uint256"}],"name":"destroyBot","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ceoAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"GEN0_STARTING_PRICE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"setSiringAuctionAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_contract","type":"address"}],"name":"addExtension","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_botId","type":"uint256"}],"name":"isPregnant","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"GEN0_AUCTION_DURATION","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"siringAuction","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_contract","type":"address"}],"name":"removeExtension","outputs":[],"payable":false,"stateMutability":"nonpayable","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":false,"inputs":[{"name":"_address","type":"address"}],"name":"setGeneScienceAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"botIndexToOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newCEO","type":"address"}],"name":"setCEO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newCOO","type":"address"}],"name":"setCOO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_botId","type":"uint256"},{"name":"_mask","type":"uint16"}],"name":"extUnlockBot","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_botId","type":"uint256"},{"name":"_startingPrice","type":"uint256"},{"name":"_endingPrice","type":"uint256"},{"name":"_duration","type":"uint256"}],"name":"createSaleAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"sireAllowedToAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_matronId","type":"uint256"},{"name":"_sireId","type":"uint256"}],"name":"canBreedWith","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_botId","type":"uint256"},{"name":"_startingPrice","type":"uint256"},{"name":"_endingPrice","type":"uint256"},{"name":"_duration","type":"uint256"}],"name":"createSiringAuction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"val","type":"uint256"}],"name":"setAutoBirthFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_sireId","type":"uint256"}],"name":"approveSiring","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newCFO","type":"address"}],"name":"setCFO","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pregnantBots","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"secs","type":"uint256"}],"name":"setSecondsPerBlock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"uint256"}],"name":"getBot","outputs":[{"name":"isGestating","type":"bool"},{"name":"isReady","type":"bool"},{"name":"cooldownIndex","type":"uint256"},{"name":"nextActionAt","type":"uint256"},{"name":"siringWithId","type":"uint256"},{"name":"birthTime","type":"uint256"},{"name":"matronId","type":"uint256"},{"name":"sireId","type":"uint256"},{"name":"generation","type":"uint256"},{"name":"genes","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"destroyedBots","outputs":[{"name":"","type":"uint32"}],"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":true,"inputs":[],"name":"GEN0_CREATION_LIMIT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","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":true,"inputs":[],"name":"secondsPerBlock","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":"_owner","type":"address"}],"name":"tokensOfOwner","outputs":[{"name":"ownerTokens","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_matronId","type":"uint256"}],"name":"giveBirth","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_botId","type":"uint256"}],"name":"extGetLock","outputs":[{"name":"","type":"uint16"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawAuctionBalances","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":"uint256"}],"name":"cooldowns","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"botIndexToApproved","outputs":[{"name":"","type":"address"}],"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":"cooAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"autoBirthFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_botId","type":"uint256"},{"name":"_mask","type":"uint16"}],"name":"extLockBot","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_genes","type":"uint256"},{"name":"_owner","type":"address"}],"name":"createPromoBot","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_genes","type":"uint256"}],"name":"createGen0Auction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_matronId","type":"uint256"},{"name":"_sireId","type":"uint256"},{"name":"_generation","type":"uint256"},{"name":"_genes","type":"uint256"},{"name":"_owner","type":"address"}],"name":"extCreateBot","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_botId","type":"uint256"}],"name":"isReadyToBreed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PROMO_CREATION_LIMIT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"saleAuction","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_botId","type":"uint256"}],"name":"extDestroyBot","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_sireId","type":"uint256"},{"name":"_matronId","type":"uint256"}],"name":"bidOnSiringAuction","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"gen0CreatedCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"geneScience","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_matronId","type":"uint256"},{"name":"_sireId","type":"uint256"}],"name":"breedWithAuto","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"matronId","type":"uint256"},{"indexed":false,"name":"sireId","type":"uint256"},{"indexed":false,"name":"cooldownEndBlock","type":"uint256"}],"name":"Pregnant","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"approved","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"botId","type":"uint256"},{"indexed":false,"name":"mask","type":"uint16"}],"name":"Lock","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"botId","type":"uint256"},{"indexed":false,"name":"matronId","type":"uint256"},{"indexed":false,"name":"sireId","type":"uint256"},{"indexed":false,"name":"genes","type":"uint256"},{"indexed":false,"name":"birthTime","type":"uint256"}],"name":"Birth","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newContract","type":"address"}],"name":"ContractUpgrade","type":"event"}]

  Contract Creation Code Switch To Opcodes View
60606040526000600260146101000a81548160ff0219169083151502179055506101c060405190810160405280603c63ffffffff1663ffffffff168152602001607863ffffffff1663ffffffff16815260200161012c63ffffffff1663ffffffff16815260200161025863ffffffff1663ffffffff16815260200161070863ffffffff1663ffffffff168152602001610e1063ffffffff1663ffffffff168152602001611c2063ffffffff1663ffffffff16815260200161384063ffffffff1663ffffffff16815260200161708063ffffffff1663ffffffff16815260200161e10063ffffffff1663ffffffff1681526020016201518063ffffffff1663ffffffff1681526020016202a30063ffffffff1663ffffffff1681526020016205460063ffffffff1663ffffffff16815260200162093a8063ffffffff1663ffffffff16815250600390600e6200015692919062000830565b50600f60055566071afd498d0000600f5534156200017357600080fd5b6001600260146101000a81548160ff021916908315150217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200025460008060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff336200025b6401000000000262004cd1176401000000009004565b5062000a88565b60008062000268620008da565b60008863ffffffff16891415156200027f57600080fd5b8763ffffffff16881415156200029457600080fd5b8661ffff1687141515620002a757600080fd5b600287811515620002b457fe5b049250600d8361ffff161115620002ca57600d92505b610100604051908101604052808781526020014267ffffffffffffffff168152602001600067ffffffffffffffff1681526020018a63ffffffff1681526020018963ffffffff168152602001600063ffffffff1681526020018461ffff1681526020018861ffff1681525091506001600680548060010182816200034f91906200094e565b916000526020600020906002020160008590919091506000820151816000015560208201518160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060608201518160010160106101000a81548163ffffffff021916908363ffffffff16021790555060808201518160010160146101000a81548163ffffffff021916908363ffffffff16021790555060a08201518160010160186101000a81548163ffffffff021916908363ffffffff16021790555060c082015181600101601c6101000a81548161ffff021916908361ffff16021790555060e082015181600101601e6101000a81548161ffff021916908361ffff16021790555050500390508063ffffffff1681141515620004a257600080fd5b7fa2950fd8c03e7518275ee57e05ca76c671969b5445b12b1aeea4b0b30195e5df8582846060015163ffffffff16856080015163ffffffff168660000151876020015167ffffffffffffffff16604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390a16200057560008683620005846401000000000262004563176401000000009004565b80935050505095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620005f6576007600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905562000698565b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816007600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415156200078c57600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550600a600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556009600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050565b82600e600701600890048101928215620008c75791602002820160005b838211156200089357835183826101000a81548163ffffffff021916908363ffffffff16021790555092602001926004016020816003010492830192600103026200084d565b8015620008c55782816101000a81549063ffffffff021916905560040160208160030104928301926001030262000893565b505b509050620008d6919062000983565b5090565b6101006040519081016040528060008152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600063ffffffff168152602001600063ffffffff168152602001600063ffffffff168152602001600061ffff168152602001600061ffff1681525090565b8154818355818115116200097e576002028160020283600052602060002091820191016200097d9190620009b9565b5b505050565b620009b691905b80821115620009b257600081816101000a81549063ffffffff0219169055506001016200098a565b5090565b90565b62000a8591905b8082111562000a81576000808201600090556001820160006101000a81549067ffffffffffffffff02191690556001820160086101000a81549067ffffffffffffffff02191690556001820160106101000a81549063ffffffff02191690556001820160146101000a81549063ffffffff02191690556001820160186101000a81549063ffffffff021916905560018201601c6101000a81549061ffff021916905560018201601e6101000a81549061ffff021916905550600201620009c0565b5090565b90565b6158228062000a986000396000f3006060604052600436106102f6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630519ce79146103ac57806305e455461461040157806306fdde031461042a578063095ea7b3146104b857806309f6d5b4146104fa5780630a0f81681461051d5780630e583df01461057257806314001f4c1461059b578063170ff3e1146105d457806318160ddd1461060d5780631940a9361461063657806319c2f2011461067157806321717ebf1461069a57806321ee102b146106ef57806323b872dd1461072857806324e7a38a1461078957806327ab9f20146107c257806327d7874c146108255780632ba73c151461085e5780633c4b07de146108975780633d7d3f5a146108e35780633f4ba83a1461092157806346116e6f1461093657806346d22c70146109995780634ad8c938146109dd5780634b85fd5514610a1b5780634dfff04f14610a3e5780634e0a337914610a805780634e4081ef14610ab95780635663896e14610ae25780635c975abb14610b055780635f70d9ac14610b325780635fd8c71014610bb057806361b6683c14610bc55780636352211e14610bfa578063680eba2714610c5d5780636af04a5714610c865780636fbde40d14610cdb57806370a0823114610d145780637158798814610d615780637a7d493714610d9a5780638456cb5914610dc35780638462151c14610dd857806388c2a0bf14610e665780638a653c9314610e9d57806391876e5714610edc57806395d89b4114610ef15780639d6fac6f14610f7f578063a8f8884d14610fc2578063a9059cbb14611025578063b047fb5014611067578063b0c35c05146110bc578063bf4a5485146110e5578063bf86e01314611115578063c3bea9af14611157578063d1b12b4e1461117a578063d3e6f49f146111eb578063defb958414611226578063e6cbe3511461124f578063e9b58225146112a4578063ed60ade6146112c7578063f1ca9410146112e8578063f2b47d5214611311578063f7d8c88314611366575b600b60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061039f5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156103aa57600080fd5b005b34156103b757600080fd5b6103bf611387565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561040c57600080fd5b6104146113ad565b6040518082815260200191505060405180910390f35b341561043557600080fd5b61043d6113b3565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561047d578082015181840152602081019050610462565b50505050905090810190601f1680156104aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156104c357600080fd5b6104f8600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506113ec565b005b341561050557600080fd5b61051b6004808035906020019091905050611501565b005b341561052857600080fd5b61053061159c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561057d57600080fd5b6105856115c1565b6040518082815260200191505060405180910390f35b34156105a657600080fd5b6105d2600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506115cc565b005b34156105df57600080fd5b61060b600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611703565b005b341561061857600080fd5b6106206117b9565b6040518082815260200191505060405180910390f35b341561064157600080fd5b61065760048080359060200190919050506117e0565b604051808215151515815260200191505060405180910390f35b341561067c57600080fd5b61068461182f565b6040518082815260200191505060405180910390f35b34156106a557600080fd5b6106ad611836565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156106fa57600080fd5b610726600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061185c565b005b341561073357600080fd5b610787600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611909565b005b341561079457600080fd5b6107c0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611a0d565b005b34156107cd57600080fd5b6107e36004808035906020019091905050611b44565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561083057600080fd5b61085c600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611b77565b005b341561086957600080fd5b610895600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611c51565b005b34156108a257600080fd5b6108c5600480803590602001909190803561ffff16906020019091905050611d2c565b604051808261ffff1661ffff16815260200191505060405180910390f35b34156108ee57600080fd5b61091f6004808035906020019091908035906020019091908035906020019091908035906020019091905050611d9d565b005b341561092c57600080fd5b610934611f05565b005b341561094157600080fd5b61095760048080359060200190919050506120fc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109a457600080fd5b6109c3600480803590602001909190803590602001909190505061212f565b604051808215151515815260200191505060405180910390f35b34156109e857600080fd5b610a1960048080359060200190919080359060200190919080359060200190919080359060200190919050506121b7565b005b3415610a2657600080fd5b610a3c600480803590602001909190505061231e565b005b3415610a4957600080fd5b610a7e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612384565b005b3415610a8b57600080fd5b610ab7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061240b565b005b3415610ac457600080fd5b610acc6124e6565b6040518082815260200191505060405180910390f35b3415610aed57600080fd5b610b0360048080359060200190919050506124ec565b005b3415610b1057600080fd5b610b18612640565b604051808215151515815260200191505060405180910390f35b3415610b3d57600080fd5b610b536004808035906020019091905050612653565b604051808b1515151581526020018a1515151581526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019a505050505050505050505060405180910390f35b3415610bbb57600080fd5b610bc3612822565b005b3415610bd057600080fd5b610bd861290e565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b3415610c0557600080fd5b610c1b6004808035906020019091905050612924565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610c6857600080fd5b610c7061299d565b6040518082815260200191505060405180910390f35b3415610c9157600080fd5b610c996129a3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610ce657600080fd5b610d12600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506129c9565b005b3415610d1f57600080fd5b610d4b600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612b00565b6040518082815260200191505060405180910390f35b3415610d6c57600080fd5b610d98600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612b49565b005b3415610da557600080fd5b610dad612c66565b6040518082815260200191505060405180910390f35b3415610dce57600080fd5b610dd6612c6c565b005b3415610de357600080fd5b610e0f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612db0565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610e52578082015181840152602081019050610e37565b505050509050019250505060405180910390f35b3415610e7157600080fd5b610e876004808035906020019091905050612ee8565b6040518082815260200191505060405180910390f35b3415610ea857600080fd5b610ebe6004808035906020019091905050613307565b604051808261ffff1661ffff16815260200191505060405180910390f35b3415610ee757600080fd5b610eef613391565b005b3415610efc57600080fd5b610f046135d0565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610f44578082015181840152602081019050610f29565b50505050905090810190601f168015610f715780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610f8a57600080fd5b610fa06004808035906020019091905050613609565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b3415610fcd57600080fd5b610fe36004808035906020019091905050613638565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561103057600080fd5b611065600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061366b565b005b341561107257600080fd5b61107a613813565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156110c757600080fd5b6110cf613839565b6040518082815260200191505060405180910390f35b34156110f057600080fd5b611113600480803590602001909190803561ffff1690602001909190505061383f565b005b341561112057600080fd5b611155600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506138ac565b005b341561116257600080fd5b61117860048080359060200190919050506139a1565b005b341561118557600080fd5b6111d5600480803590602001909190803590602001909190803590602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613b5f565b6040518082815260200191505060405180910390f35b34156111f657600080fd5b61120c6004808035906020019091905050613bd8565b604051808215151515815260200191505060405180910390f35b341561123157600080fd5b611239613d45565b6040518082815260200191505060405180910390f35b341561125a57600080fd5b611262613d4b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156112af57600080fd5b6112c56004808035906020019091905050613d71565b005b6112e66004808035906020019091908035906020019091905050613e10565b005b34156112f357600080fd5b6112fb613ff9565b6040518082815260200191505060405180910390f35b341561131c57600080fd5b611324613fff565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6113856004808035906020019091908035906020019091905050614025565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b6040805190810160405280600a81526020017f43727970746f426f74730000000000000000000000000000000000000000000081525081565b600260149054906101000a900460ff1615151561140857600080fd5b6114123382614368565b151561141d57600080fd5b60006002600e600084815260200190815260200160002060009054906101000a900461ffff161661ffff1614151561145457600080fd5b61145e81836143d4565b7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925338383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a15050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561155c57600080fd5b6000600e600083815260200190815260200160002060009054906101000a900461ffff1661ffff1614151561159057600080fd5b6115998161442a565b50565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b662386f26fc1000081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561162957600080fd5b8190508073ffffffffffffffffffffffffffffffffffffffff166376190f8f6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561169857600080fd5b6102c65a03f115156116a957600080fd5b5050506040518051905015156116be57600080fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561175e57600080fd5b6001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600b60009054906101000a900463ffffffff1663ffffffff1660068054905003905090565b60008082118015611828575060006006838154811015156117fd57fe5b906000526020600020906002020160010160189054906101000a900463ffffffff1663ffffffff1614155b9050919050565b6201518081565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118b757600080fd5b600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905550565b600260149054906101000a900460ff1615151561192557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561196157600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561199c57600080fd5b6119a633826144f7565b15156119b157600080fd5b6119bb8382614368565b15156119c657600080fd5b60006002600e600084815260200190815260200160002060009054906101000a900461ffff161661ffff161415156119fd57600080fd5b611a08838383614563565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a6a57600080fd5b8190508073ffffffffffffffffffffffffffffffffffffffff166354c15b826000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515611ad957600080fd5b6102c65a03f11515611aea57600080fd5b505050604051805190501515611aff57600080fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60076020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bd257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611c0e57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611cac57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611ce857600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600060011515600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141515611d8d57600080fd5b611d97838361480c565b92915050565b600260149054906101000a900460ff16151515611db957600080fd5b611dc33385614368565b1515611dce57600080fd5b611dd7846117e0565b151515611de357600080fd5b611e0f84600b60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff166143d4565b600b60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166327ebe40a85858585336040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200195505050505050600060405180830381600087803b1515611eeb57600080fd5b6102c65a03f11515611efc57600080fd5b50505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f6057600080fd5b600260149054906101000a900460ff161515611f7b57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600b60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515611fd957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561203757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561209557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156120f257600080fd5b6120fa6148db565b565b600a6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000808511151561214257600080fd5b60008411151561215157600080fd5b60068581548110151561216057fe5b9060005260206000209060020201915060068481548110151561217f57fe5b9060005260206000209060020201905061219b8286838761496e565b80156121ad57506121ac8486614b83565b5b9250505092915050565b600260149054906101000a900460ff161515156121d357600080fd5b6121dd3385614368565b15156121e857600080fd5b6121f184613bd8565b15156121fc57600080fd5b61222884600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166143d4565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166327ebe40a85858585336040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200195505050505050600060405180830381600087803b151561230457600080fd5b6102c65a03f1151561231557600080fd5b50505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561237a57600080fd5b80600f8190555050565b600260149054906101000a900460ff161515156123a057600080fd5b6123aa3382614368565b15156123b557600080fd5b81600a600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561246657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156124a257600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061259457506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806125ec5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15156125f757600080fd5b60036000600e8110151561260757fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff168110151561263657600080fd5b8060058190555050565b600260149054906101000a900460ff1681565b60008060008060008060008060008060008073ffffffffffffffffffffffffffffffffffffffff16600760008e815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156126d257600080fd5b60068c8154811015156126e157fe5b9060005260206000209060020201905060008160010160189054906101000a900463ffffffff1663ffffffff1614159a50438160010160089054906101000a900467ffffffffffffffff1667ffffffffffffffff161115995080600101601c9054906101000a900461ffff1661ffff1698508060010160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1697508060010160189054906101000a900463ffffffff1663ffffffff1696508060010160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1695508060010160109054906101000a900463ffffffff1663ffffffff1694508060010160149054906101000a900463ffffffff1663ffffffff16935080600101601e9054906101000a900461ffff1661ffff16925080600001549150509193959799509193959799565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561288157600080fd5b3073ffffffffffffffffffffffffffffffffffffffff16319150600f546001601054010290508082111561290a57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8284039081150290604051600060405180830381858888f19350505050505b5050565b600b60009054906101000a900463ffffffff1681565b60006007600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561299857600080fd5b919050565b61afc881565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612a2657600080fd5b8190508073ffffffffffffffffffffffffffffffffffffffff166385b861886000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515612a9557600080fd5b6102c65a03f11515612aa657600080fd5b505050604051805190501515612abb57600080fd5b80600b60046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612ba457600080fd5b600260149054906101000a900460ff161515612bbf57600080fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f450db8da6efbe9c22f2347f7c2021231df1fc58d3ae9a2fa75d39fa44619930581604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b60055481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612d1457506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80612d6c5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515612d7757600080fd5b600260149054906101000a900460ff16151515612d9357600080fd5b6001600260146101000a81548160ff021916908315150217905550565b612db8615670565b6000612dc2615670565b6000806000612dd087612b00565b94506000851415612e02576000604051805910612dea5750595b90808252806020026020018201604052509550612ede565b84604051805910612e105750595b90808252806020026020018201604052509350600160068054905003925060009150600090505b8281111515612eda578673ffffffffffffffffffffffffffffffffffffffff166007600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612ecd57808483815181101515612eb657fe5b906020019060200201818152505081806001019250505b8080600101915050612e37565b8395505b5050505050919050565b600080600080600080600080600260149054906101000a900460ff16151515612f1057600080fd5b600689815481101515612f1f57fe5b9060005260206000209060020201965060008760010160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1614151515612f6157600080fd5b613097876101006040519081016040529081600082015481526020016001820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160109054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820160149054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820160189054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200160018201601c9054906101000a900461ffff1661ffff1661ffff16815260200160018201601e9054906101000a900461ffff1661ffff1661ffff1681525050614c96565b15156130a257600080fd5b8660010160189054906101000a900463ffffffff1663ffffffff1695506006868154811015156130ce57fe5b9060005260206000209060020201945086600101601e9054906101000a900461ffff16935086600101601e9054906101000a900461ffff1661ffff1685600101601e9054906101000a900461ffff1661ffff16111561313d5784600101601e9054906101000a900461ffff1693505b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630d9f5aed8860000154876000015460018b60010160089054906101000a900467ffffffffffffffff16036000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018381526020018267ffffffffffffffff1681526020019350505050602060405180830381600087803b151561321357600080fd5b6102c65a03f1151561322457600080fd5b505050604051805190509250600760008a815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150613294898860010160189054906101000a900463ffffffff1663ffffffff166001870161ffff168686614cd1565b90508660010160186101000a81549063ffffffff0219169055601060008154809291906001900391905055503373ffffffffffffffffffffffffffffffffffffffff166108fc600f549081150290604051600060405180830381858888f193505050505080975050505050505050919050565b600060011515600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151561336857600080fd5b600e600083815260200190815260200160002060009054906101000a900461ffff169050919050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061343957506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806134915750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b151561349c57600080fd5b600b60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635fd8c7106040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b151561352157600080fd5b6102c65a03f1151561353257600080fd5b505050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635fd8c7106040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b15156135ba57600080fd5b6102c65a03f115156135cb57600080fd5b505050565b6040805190810160405280600381526020017f434254000000000000000000000000000000000000000000000000000000000081525081565b600381600e8110151561361857fe5b60089182820401919006600402915054906101000a900463ffffffff1681565b60096020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260149054906101000a900460ff1615151561368757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156136c357600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156136fe57600080fd5b600b60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561375b57600080fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156137b857600080fd5b6137c23382614368565b15156137cd57600080fd5b60006002600e600084815260200190815260200160002060009054906101000a900461ffff161661ffff1614151561380457600080fd5b61380f338383614563565b5050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b60011515600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514151561389e57600080fd5b6138a88282614fda565b5050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561390a57600080fd5b819050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561396857600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b61138860125410151561397a57600080fd5b60126000815480929190600101919050555061399b60008060008685614cd1565b50505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156139ff57600080fd5b61afc8601354101515613a1157600080fd5b613a2060008060008530614cd1565b9050613a4e81600b60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff166143d4565b600b60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166327ebe40a82613a95615205565b600062015180306040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200195505050505050600060405180830381600087803b1515613b3557600080fd5b6102c65a03f11515613b4657600080fd5b5050506013600081548092919060010191905055505050565b600060011515600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141515613bc057600080fd5b613bcd8686868686614cd1565b905095945050505050565b600080600683815481101515613bea57fe5b90600052602060002090600202019050600083118015613d3d5750613d3c83826101006040519081016040529081600082015481526020016001820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160109054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820160149054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820160189054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200160018201601c9054906101000a900461ffff1661ffff1661ffff16815260200160018201601e9054906101000a900461ffff1661ffff1661ffff1681525050615308565b5b915050919050565b61138881565b600b60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60011515600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141515613dd057600080fd5b6000600e600083815260200190815260200160002060009054906101000a900461ffff1661ffff16141515613e0457600080fd5b613e0d8161442a565b50565b6000600260149054906101000a900460ff16151515613e2e57600080fd5b613e383383614368565b1515613e4357600080fd5b613e4c82613bd8565b1515613e5757600080fd5b613e618284615377565b1515613e6c57600080fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c55d0f56846000604051602001526040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b1515613f0557600080fd5b6102c65a03f11515613f1657600080fd5b505050604051805190509050600f5481013410151515613f3557600080fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663454a2ab3600f543403856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808281526020019150506000604051808303818588803b1515613fc957600080fd5b6125ee5a03f11515613fda57600080fd5b50505050613ff48263ffffffff168463ffffffff166153d0565b505050565b60135481565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600260149054906101000a900460ff1615151561404457600080fd5b600f54341015151561405557600080fd5b61405f3385614368565b151561406a57600080fd5b6140748385614b83565b151561407f57600080fd5b60068481548110151561408e57fe5b906000526020600020906002020191506141d584836101006040519081016040529081600082015481526020016001820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160109054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820160149054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820160189054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200160018201601c9054906101000a900461ffff1661ffff1661ffff16815260200160018201601e9054906101000a900461ffff1661ffff1661ffff1681525050615308565b15156141e057600080fd5b6006838154811015156141ef57fe5b9060005260206000209060020201905061433683826101006040519081016040529081600082015481526020016001820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160089054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160109054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820160149054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820160189054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200160018201601c9054906101000a900461ffff1661ffff1661ffff16815260200160018201601e9054906101000a900461ffff1661ffff1661ffff1681525050615308565b151561434157600080fd5b61434d8285838661496e565b151561435857600080fd5b61436284846153d0565b50505050565b60008273ffffffffffffffffffffffffffffffffffffffff166007600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905092915050565b806009600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000808211151561443a57600080fd5b6007600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156144ac57600080fd5b600b600081819054906101000a900463ffffffff168092919060010191906101000a81548163ffffffff021916908363ffffffff160217905550506144f381600084614563565b5050565b60008273ffffffffffffffffffffffffffffffffffffffff166009600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156145d3576007600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055614675565b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550816007600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151561476857600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600190039190505550600a600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556009600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060405180910390a1505050565b6000808261ffff1611151561482057600080fd5b600e600084815260200190815260200160002060009054906101000a900461ffff1690508161ffff1682821661ffff1614151561485c57600080fd5b818118905080600e600085815260200190815260200160002060006101000a81548161ffff021916908361ffff1602179055507f96b828b49c6eb235f60dde08b68959e6baef50b35a662b6db3cade02872d32308382604051808381526020018261ffff1661ffff1681526020019250505060405180910390a1505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561493657600080fd5b600260149054906101000a900460ff16151561495157600080fd5b6000600260146101000a81548160ff021916908315150217905550565b6000818414156149815760009050614b7b565b818560010160109054906101000a900463ffffffff1663ffffffff1614806149c25750818560010160149054906101000a900463ffffffff1663ffffffff16145b156149d05760009050614b7b565b838360010160109054906101000a900463ffffffff1663ffffffff161480614a115750838360010160149054906101000a900463ffffffff1663ffffffff16145b15614a1f5760009050614b7b565b60008360010160109054906101000a900463ffffffff1663ffffffff161480614a62575060008560010160109054906101000a900463ffffffff1663ffffffff16145b15614a705760019050614b7b565b8460010160109054906101000a900463ffffffff1663ffffffff168360010160109054906101000a900463ffffffff1663ffffffff161480614ae557508460010160149054906101000a900463ffffffff1663ffffffff168360010160109054906101000a900463ffffffff1663ffffffff16145b15614af35760009050614b7b565b8460010160109054906101000a900463ffffffff1663ffffffff168360010160149054906101000a900463ffffffff1663ffffffff161480614b6857508460010160149054906101000a900463ffffffff1663ffffffff168360010160149054906101000a900463ffffffff1663ffffffff16145b15614b765760009050614b7b565b600190505b949350505050565b60008060006007600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691506007600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480614c8c57508173ffffffffffffffffffffffffffffffffffffffff16600a600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b9250505092915050565b6000808260a0015163ffffffff1614158015614cca57504367ffffffffffffffff16826040015167ffffffffffffffff1611155b9050919050565b600080614cdc615684565b60008863ffffffff1689141515614cf257600080fd5b8763ffffffff1688141515614d0657600080fd5b8661ffff1687141515614d1857600080fd5b600287811515614d2457fe5b049250600d8361ffff161115614d3957600d92505b610100604051908101604052808781526020014267ffffffffffffffff168152602001600067ffffffffffffffff1681526020018a63ffffffff1681526020018963ffffffff168152602001600063ffffffff1681526020018461ffff1681526020018861ffff168152509150600160068054806001018281614dbc91906156f8565b916000526020600020906002020160008590919091506000820151816000015560208201518160010160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060408201518160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060608201518160010160106101000a81548163ffffffff021916908363ffffffff16021790555060808201518160010160146101000a81548163ffffffff021916908363ffffffff16021790555060a08201518160010160186101000a81548163ffffffff021916908363ffffffff16021790555060c082015181600101601c6101000a81548161ffff021916908361ffff16021790555060e082015181600101601e6101000a81548161ffff021916908361ffff16021790555050500390508063ffffffff1681141515614f0e57600080fd5b7fa2950fd8c03e7518275ee57e05ca76c671969b5445b12b1aeea4b0b30195e5df8582846060015163ffffffff16856080015163ffffffff168660000151876020015167ffffffffffffffff16604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390a1614fcb60008683614563565b80935050505095945050505050565b6000806000808461ffff16111515614ff157600080fd5b600e600086815260200190815260200160002060009054906101000a900461ffff169250600084841661ffff1614151561502a57600080fd5b60006001851661ffff1611156150835760068581548110151561504957fe5b9060005260206000209060020201915060008260010160189054906101000a900463ffffffff1663ffffffff1614151561508257600080fd5b5b60006002851661ffff161115615184576007600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600b60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561512657600080fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561518357600080fd5b5b838317925082600e600087815260200190815260200160002060006101000a81548161ffff021916908361ffff1602179055507f96b828b49c6eb235f60dde08b68959e6baef50b35a662b6db3cade02872d32308584604051808381526020018261ffff1661ffff1681526020019250505060405180910390a15050505050565b6000806000600b60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663eac9d94c6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561529857600080fd5b6102c65a03f115156152a957600080fd5b505050604051805190509150816fffffffffffffffffffffffffffffffff16821415156152d557600080fd5b6002828115156152e157fe5b0482019050662386f26fc1000081101561530057662386f26fc1000090505b809250505090565b6000808260a0015163ffffffff1614801561533b57504367ffffffffffffffff16826040015167ffffffffffffffff1611155b801561536f575060006001600e600086815260200190815260200160002060009054906101000a900461ffff161661ffff16145b905092915050565b600080600060068581548110151561538b57fe5b906000526020600020906002020191506006848154811015156153aa57fe5b906000526020600020906002020190506153c68286838761496e565b9250505092915050565b6000806006838154811015156153e257fe5b9060005260206000209060020201915060068481548110151561540157fe5b90600052602060002090600202019050828160010160186101000a81548163ffffffff021916908363ffffffff16021790555061543d8261559a565b6154468161559a565b600a600085815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600a600084815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556010600081548092919060010191905055507f241ea03ca20251805084d27d4440371c34a0b85ff108f6bb5611248f73818b806007600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685858460010160089054906101000a900467ffffffffffffffff16604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018267ffffffffffffffff16815260200194505050505060405180910390a150505050565b43600554600383600101601c9054906101000a900461ffff1661ffff16600e811015156155c357fe5b600891828204019190066004029054906101000a900463ffffffff1663ffffffff168115156155ee57fe5b04018160010160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600d81600101601c9054906101000a900461ffff1661ffff16101561566d57600181600101601c8282829054906101000a900461ffff160192506101000a81548161ffff021916908361ffff1602179055505b50565b602060405190810160405280600081525090565b6101006040519081016040528060008152602001600067ffffffffffffffff168152602001600067ffffffffffffffff168152602001600063ffffffff168152602001600063ffffffff168152602001600063ffffffff168152602001600061ffff168152602001600061ffff1681525090565b81548183558181151161572557600202816002028360005260206000209182019101615724919061572a565b5b505050565b6157f391905b808211156157ef576000808201600090556001820160006101000a81549067ffffffffffffffff02191690556001820160086101000a81549067ffffffffffffffff02191690556001820160106101000a81549063ffffffff02191690556001820160146101000a81549063ffffffff02191690556001820160186101000a81549063ffffffff021916905560018201601c6101000a81549061ffff021916905560018201601e6101000a81549061ffff021916905550600201615730565b5090565b905600a165627a7a7230582018d63b4358ce375a48b0e3d10e02cef819212a7f1d5bf68fc9b6278dc6643eec0029

   Swarm Source:
bzzr://18d63b4358ce375a48b0e3d10e02cef819212a7f1d5bf68fc9b6278dc6643eec

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.