Sponsored:   [Largest VC Funded] TEMCO, millions sold out in seconds. Join TEMCO's last presale at CoinBene!
Contract Overview
Balance: 0.039912 Ether
Ether Value: $3.47 (@ $86.96/ETH)
Transactions: 151 txns
Misc:
Address Watch: Add To Watch List
Contract Creator: 0x34ba87ac5108f234cdb2d62126ab0abb43a7c446at txn 0x8f14a3e7a7f4ac7f5d78cb03c97323ef2abda3e045f32bffd954921c0e016e7e
 Latest 25 transactions from a total of 151 transactions

TxHash Age From To Value [TxFee]
0xbfddc601ef1dc068c06be035ca18fe98dbaf2c1b95de28c636107adc2c71a8b38 days 12 hrs ago0x406f4533b2f6209812d7ef9c7d69b8c54217c208  IN   0x689fb61845488297dfe7586e5f7956475955d2dc0.0054 Ether0.00084357
0xd961706c60c6727e435d349baecbe6dcb5472f20785a675f96b1e32c1a845d198 days 12 hrs ago0x406f4533b2f6209812d7ef9c7d69b8c54217c208  IN   0x689fb61845488297dfe7586e5f7956475955d2dc0.0053 Ether0.00099357
0x522c25db4cb4cb347d2819e7ddfe12abf0a3c4f3ae8efade1d3d269688c754f78 days 12 hrs ago0x406f4533b2f6209812d7ef9c7d69b8c54217c208  IN   0x689fb61845488297dfe7586e5f7956475955d2dc0.0052 Ether0.000894213
0xeacf47a5ee6abc4aba81f4d863c70daa573c8e5d3aefd7b0b7791666f555609b8 days 12 hrs ago0x406f4533b2f6209812d7ef9c7d69b8c54217c208  IN   0x689fb61845488297dfe7586e5f7956475955d2dc0.0058 Ether0.000894213
0x08ef20c94be8a71505432ae6faa7fb4b66c3d5825e5b7dc7a8e521bac03a11718 days 12 hrs ago0x406f4533b2f6209812d7ef9c7d69b8c54217c208  IN   0x689fb61845488297dfe7586e5f7956475955d2dc0.006 Ether0.000795088
0xa471c9cfa9056ec75422b53c455a29854e51e56d144b34071f89d33d00d100a644 days 10 hrs ago0x5b292a187844f15c2888d2f6025c5c896506a1f3  IN   0x689fb61845488297dfe7586e5f7956475955d2dc0 Ether0.000347568
0x87a7f88155dc5b63593321d34863f318dcc15557ffc0b9d08d5e28e1f3c516f857 days 22 hrs ago0x8033562521fedecdcc05487303522375597f9094  IN   0x689fb61845488297dfe7586e5f7956475955d2dc0.0051 Ether0.000776142
0x5767e88de6eda6380c2164900ca82d404d003c2e061f435055ddab342d5b573a114 days 2 hrs ago0x406f4533b2f6209812d7ef9c7d69b8c54217c208  IN   0x689fb61845488297dfe7586e5f7956475955d2dc0.003 Ether0.000344577
0x1b690b98c256dd2120f9805df3ffead54b43bf7de431cab2109adc6f4976508d114 days 7 hrs ago0x0c7aa5825879cdea1071dd693f78f38840355745  IN   0x689fb61845488297dfe7586e5f7956475955d2dc0 Ether0.000396951
0x33e44089711afb60ba979573f0b33d578083e0c584000ed7f26f4c5357529cff117 days 16 hrs ago0x4aa8bf6afd411831b7d63f40140f862cd7a78dc0  IN   0x689fb61845488297dfe7586e5f7956475955d2dc0 Ether0.0001646246
0xd30c7aecffbfc583010362ba433bef3bb6422ffbf447deec0a299e8360452622121 days 14 hrs ago0x34ba87ac5108f234cdb2d62126ab0abb43a7c446  IN   0x689fb61845488297dfe7586e5f7956475955d2dc0 Ether0.000104307
0x998e7334f36d17b78854f54c6b4fe0832bcb218a19bd13d6991c3095e4ef0027121 days 14 hrs ago0x34ba87ac5108f234cdb2d62126ab0abb43a7c446  IN   0x689fb61845488297dfe7586e5f7956475955d2dc0 Ether0.000104307
0xe331d51eeadf82e60686d95debc0f4072de7a1415b07a7cff5c11640ee713326122 days 9 hrs ago0x686472a553271af53bf4bf92d6353d266a80cb51  IN   0x689fb61845488297dfe7586e5f7956475955d2dc0 Ether0.000313806
0xde46b571bc92709080ad7add1ca6d65e7100c47e1935ca860715d0e04a6fd25b122 days 9 hrs ago0x686472a553271af53bf4bf92d6353d266a80cb51  IN   0x689fb61845488297dfe7586e5f7956475955d2dc0 Ether0.000655794
0xb3e02181cdcb61f0ef0bc6f0d22a4efec4b6a78a4ec76479dcf71a7aca2f3d8a122 days 9 hrs ago0x686472a553271af53bf4bf92d6353d266a80cb51  IN   0x689fb61845488297dfe7586e5f7956475955d2dc0 Ether0.00066139
0x0ff768901caa5226ea735f0a80db39f6b80535ec94978a1c41c24ee086b89418122 days 11 hrs ago0x34ba87ac5108f234cdb2d62126ab0abb43a7c446  IN   0x689fb61845488297dfe7586e5f7956475955d2dc0 Ether0.00014214
0x76d45e91f7ae6f83b16d0e8443c43e62fd6b69cbfe501dea31b30e703980092c122 days 11 hrs ago0x34ba87ac5108f234cdb2d62126ab0abb43a7c446  IN   0x689fb61845488297dfe7586e5f7956475955d2dc0 Ether0.000224325
0x4f04eb10c0566ae7da71815265b3628d716b63164e56f0a0436864a2db5163d8122 days 11 hrs ago0x34ba87ac5108f234cdb2d62126ab0abb43a7c446  IN   0x689fb61845488297dfe7586e5f7956475955d2dc0 Ether0.000224005
0x16e062a8f6b2167800fb46507eabd95640d94bee3eb637e71da7f28c43225ba0122 days 11 hrs ago0x34ba87ac5108f234cdb2d62126ab0abb43a7c446  IN   0x689fb61845488297dfe7586e5f7956475955d2dc0 Ether0.000224325
0x25210dced9bfb33fc003f0b8610c5d71bbf7b62f51c9f7006766faafe46964e5122 days 11 hrs ago0x34ba87ac5108f234cdb2d62126ab0abb43a7c446  IN   0x689fb61845488297dfe7586e5f7956475955d2dc0 Ether0.000074505
0x64a8f27db5e888b40d14e890d9db6d008c9ef48795307dd8df566628f3c187e6124 days 6 hrs ago0x34ba87ac5108f234cdb2d62126ab0abb43a7c446  IN   0x689fb61845488297dfe7586e5f7956475955d2dc0 Ether0.0001690479
0x28070d64c656c9dac8e935460d626d790dafd3be2385eb9c06df6eabfbf699a3132 days 3 hrs ago0x0c7aa5825879cdea1071dd693f78f38840355745  IN   0x689fb61845488297dfe7586e5f7956475955d2dc0 Ether0.000146427
0x6d363754a2c47c158c89d02716ce7dfc89f12b7b736bec3ee2fbc8c8d238d48d133 days 6 hrs ago0x0c7aa5825879cdea1071dd693f78f38840355745  IN   0x689fb61845488297dfe7586e5f7956475955d2dc0 Ether0.000129025
0xebd4810573fbd77b66bf624a8c6e902b9c5b2d0899927411955b69623a60e368133 days 11 hrs ago0x686472a553271af53bf4bf92d6353d266a80cb51  IN   0x689fb61845488297dfe7586e5f7956475955d2dc0 Ether0.000292726
0xb4ad177c0f62593c5f5d0e5ec4e8d2b14ff295e04a2610e1955ec9a26b4210f6134 days 4 hrs ago0x0c7aa5825879cdea1071dd693f78f38840355745  IN   0x689fb61845488297dfe7586e5f7956475955d2dc0 Ether0.000174501
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 2 Internal Transactions

ParentTxHash Block Age From To Value
0x64a8f27db5e888b40d14e890d9db6d008c9ef48795307dd8df566628f3c187e66129622124 days 6 hrs ago0x689fb61845488297dfe7586e5f7956475955d2dc0x34ba87ac5108f234cdb2d62126ab0abb43a7c4460.003168 Ether
0x1a702367131c0cc668a63b81c1327e122aa0f888c190966bd9f7727868b104166052131137 days 8 hrs ago0x689fb61845488297dfe7586e5f7956475955d2dc0x34ba87ac5108f234cdb2d62126ab0abb43a7c4460.003 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: MyCryptoChampCore
Compiler Text: v0.4.24+commit.e67f0147
Optimization Enabled: No
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

/* 		
		https://mycryptochamp.io/
		[email protected]
*/

pragma solidity 0.4.24;

contract Controller{
	function getChampReward(uint _position) public view returns(uint);
	function changeChampsName(uint _champId, string _name, address _msgsender) external;
	function withdrawChamp(uint _id, address _msgsender) external;
	function attack(uint _champId, uint _targetId, address _msgsender) external;
	function transferToken(address _from, address _to, uint _id, bool _isTokenChamp) external;
	function cancelTokenSale(uint _id, address _msgsender, bool _isTokenChamp) public;
	function giveToken(address _to, uint _id, address _msgsender, bool _isTokenChamp) external;
	function setTokenForSale(uint _id, uint _price, address _msgsender, bool _isTokenChamp) external;
	function getTokenURIs(uint _id, bool _isTokenChamp) public pure returns(string);
	function takeOffItem(uint _champId, uint8 _type, address _msgsender) public;
	function putOn(uint _champId, uint _itemId, address _msgsender) external;
	function forgeItems(uint _parentItemID, uint _childItemID, address _msgsender) external;
}

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
  /**
  * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint a, uint b) internal pure returns (uint) {
    assert(b <= a);
    return a - b;
  }

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint a, uint b) internal pure returns (uint) {
    uint c = a + b;
    assert(c >= a);
    return c;
  }
}

/// @title MyCryptoChamp Core - Stores all of game data. Functions are stored in the replaceable contracts. This solution was required in order to avoid unexpected bugs and make game upgradeable.
/// @author Patrik Mojzis
contract MyCryptoChampCore {

    using SafeMath for uint;

    struct Champ {
        uint id; //same as position in Champ[]
        uint attackPower;
        uint defencePower;
        uint cooldownTime; //how long does it take to be able attack again
        uint readyTime; //if is smaller than block.timestamp champ is ready to fight
        uint winCount;
        uint lossCount;
        uint position; //subtract 1 and you get position in leaderboard[]
        uint price; //sale price
        uint withdrawCooldown; //if you one of the 800 best champs and withdrawCooldown is less as block.timestamp then you get ETH reward
        uint eq_sword; 
        uint eq_shield; 
        uint eq_helmet; 
        bool forSale; //is champ for sale?
    }
    
    struct AddressInfo {
        uint withdrawal;
        uint champsCount;
        uint itemsCount;
        string name;
    }

    //Item struct
    struct Item {
        uint id;
        uint8 itemType; // 1 - Sword | 2 - Shield | 3 - Helmet
        uint8 itemRarity; // 1 - Common | 2 - Uncommon | 3 - Rare | 4 - Epic | 5 - Legendery | 6 - Forged
        uint attackPower;
        uint defencePower;
        uint cooldownReduction;
        uint price;
        uint onChampId; //can not be used to decide if item is on champ, because champ's id can be 0, 'bool onChamp' solves it.
        bool onChamp; 
        bool forSale; //is item for sale?
    }
    
    Champ[] public champs;
    Item[] public items;
    mapping (uint => uint) public leaderboard;
    mapping (address => bool) private trusted;
    mapping (address => AddressInfo) public addressInfo;
    mapping (bool => mapping(address => mapping (address => bool))) public tokenOperatorApprovals;
    mapping (bool => mapping(uint => address)) public tokenApprovals;
    mapping (bool => mapping(uint => address)) public tokenToOwner;
    mapping (uint => string) public champToName;
    mapping (bool => uint) public tokensForSaleCount;
    uint public pendingWithdrawal = 0;
    address private contractOwner;
    Controller internal controller;


    constructor () public 
    {
        trusted[msg.sender] = true;
        contractOwner = msg.sender;
    }
    

    /*============== MODIFIERS ==============*/
    modifier onlyTrusted(){
        require(trusted[msg.sender]);
        _;
    }

    modifier isPaid(uint _price)
    {
        require(msg.value >= _price);
        _;
    }

    modifier onlyNotOwnerOfItem(uint _itemId) {
        require(_itemId != 0);
        require(msg.sender != tokenToOwner[false][_itemId]);
        _;
    }

    modifier isItemForSale(uint _id){
        require(items[_id].forSale);
        _;
    }

    modifier onlyNotOwnerOfChamp(uint _champId) 
    {
        require(msg.sender != tokenToOwner[true][_champId]);
        _;
    }

    modifier isChampForSale(uint _id)
    {
        require(champs[_id].forSale);
        _;
    }


    /*============== CONTROL COTRACT ==============*/
    function loadController(address _address) external onlyTrusted {
        controller = Controller(_address);
    }

    
    function setTrusted(address _address, bool _trusted) external onlyTrusted {
        trusted[_address] = _trusted;
    }
    
    function transferOwnership(address newOwner) public onlyTrusted {
        require(newOwner != address(0));
        contractOwner = newOwner;
    }
    

    /*============== PRIVATE FUNCTIONS ==============*/
    function _addWithdrawal(address _address, uint _amount) private 
    {
        addressInfo[_address].withdrawal += _amount;
        pendingWithdrawal += _amount;
    }

    /// @notice Distribute input funds between contract owner and players
    function _distributeNewSaleInput(address _affiliateAddress) private 
    {
        //contract owner
        _addWithdrawal(contractOwner, ((msg.value / 100) * 60)); // 60%

        //affiliate
        //checks if _affiliateAddress is set & if affiliate address is not buying player
        if(_affiliateAddress != address(0) && _affiliateAddress != msg.sender){
            _addWithdrawal(_affiliateAddress, ((msg.value / 100) * 25)); //provision is 25%
            
        }
    }

    
    /*============== ONLY TRUSTED ==============*/
    function addWithdrawal(address _address, uint _amount) public onlyTrusted 
    {
        _addWithdrawal(_address, _amount);
    }

    function clearTokenApproval(address _from, uint _tokenId, bool _isTokenChamp) public onlyTrusted
    {
        require(tokenToOwner[_isTokenChamp][_tokenId] == _from);
        if (tokenApprovals[_isTokenChamp][_tokenId] != address(0)) {
            tokenApprovals[_isTokenChamp][_tokenId] = address(0);
        }
    }

    function emergencyWithdraw() external onlyTrusted
    {
        contractOwner.transfer(address(this).balance);
    }

    function setChampsName(uint _champId, string _name) public onlyTrusted 
    {
        champToName[_champId] = _name;
    }

    function setLeaderboard(uint _x, uint _value) public onlyTrusted
    {
        leaderboard[_x] = _value;
    }

    function setTokenApproval(uint _id, address _to, bool _isTokenChamp) public onlyTrusted
    {
        tokenApprovals[_isTokenChamp][_id] = _to;
    }

    function setTokenOperatorApprovals(address _from, address _to, bool _approved, bool _isTokenChamp) public onlyTrusted
    {
        tokenOperatorApprovals[_isTokenChamp][_from][_to] = _approved;
    }

    function setTokenToOwner(uint _id, address _owner, bool _isTokenChamp) public onlyTrusted
    {
        tokenToOwner[_isTokenChamp][_id] = _owner;
    }

    function setTokensForSaleCount(uint _value, bool _isTokenChamp) public onlyTrusted 
    {
        tokensForSaleCount[_isTokenChamp] = _value;
    }

    function transferToken(address _from, address _to, uint _id, bool _isTokenChamp) public onlyTrusted
    {
        controller.transferToken(_from, _to, _id, _isTokenChamp);
    }

    function updateAddressInfo(address _address, uint _withdrawal, bool _updatePendingWithdrawal, uint _champsCount, bool _updateChampsCount, uint _itemsCount, bool _updateItemsCount, string _name, bool _updateName) public onlyTrusted {
        AddressInfo storage ai = addressInfo[_address];
        if(_updatePendingWithdrawal){ ai.withdrawal = _withdrawal; }
        if(_updateChampsCount){ ai.champsCount = _champsCount; }
        if(_updateItemsCount){ ai.itemsCount = _itemsCount; }
        if(_updateName){ ai.name = _name; }
    }

    function newChamp(
        uint _attackPower,
        uint _defencePower,
        uint _cooldownTime,
        uint _winCount,
        uint _lossCount,
        uint _position,
        uint _price,
        uint _eq_sword, 
        uint _eq_shield, 
        uint _eq_helmet, 
        bool _forSale,
        address _owner
    ) public onlyTrusted returns (uint){

        Champ memory champ = Champ({
            id: 0,
            attackPower: 0, //CompilerError: Stack too deep, try removing local variables.
            defencePower: _defencePower,
            cooldownTime: _cooldownTime,
            readyTime: 0,
            winCount: _winCount,
            lossCount: _lossCount,
            position: _position,
            price: _price,
            withdrawCooldown: 0,
            eq_sword: _eq_sword,
            eq_shield: _eq_shield,
            eq_helmet: _eq_helmet,
            forSale: _forSale
        });
        champ.attackPower = _attackPower;

        uint id = champs.push(champ) - 1; 
        champs[id].id = id; 
        leaderboard[_position] = id;

        addressInfo[_owner].champsCount++;
        tokenToOwner[true][id] = _owner;

        if(_forSale){
            tokensForSaleCount[true]++;
        }

        return id;
    }

    function newItem(
        uint8 _itemType,
        uint8 _itemRarity,
        uint _attackPower,
        uint _defencePower,
        uint _cooldownReduction,
        uint _price,
        uint _onChampId,
        bool _onChamp,
        bool _forSale,
        address _owner
    ) public onlyTrusted returns (uint)
    { 
        //create that struct
        Item memory item = Item({
            id: 0,
            itemType: _itemType,
            itemRarity: _itemRarity, 
            attackPower: _attackPower,
            defencePower: _defencePower,
            cooldownReduction: _cooldownReduction,
            price: _price,
            onChampId: _onChampId,
            onChamp: _onChamp, 
            forSale: _forSale

        });

        uint id = items.push(item) - 1;
        items[id].id = id; 

        addressInfo[_owner].itemsCount++;
        tokenToOwner[false][id] = _owner;

        if(_forSale){
            tokensForSaleCount[false]++;
        }

        return id;
    }

    function updateChamp(
        uint _champId, 
        uint _attackPower,
        uint _defencePower,
        uint _cooldownTime,
        uint _readyTime,
        uint _winCount,
        uint _lossCount,
        uint _position,
        uint _price,
        uint _withdrawCooldown,
        uint _eq_sword, 
        uint _eq_shield, 
        uint _eq_helmet, 
        bool _forSale
    ) public onlyTrusted {
        Champ storage champ = champs[_champId];
        if(champ.attackPower != _attackPower){champ.attackPower = _attackPower;}
        if(champ.defencePower != _defencePower){champ.defencePower = _defencePower;}
        if(champ.cooldownTime != _cooldownTime){champ.cooldownTime = _cooldownTime;}
        if(champ.readyTime != _readyTime){champ.readyTime = _readyTime;}
        if(champ.winCount != _winCount){champ.winCount = _winCount;}
        if(champ.lossCount != _lossCount){champ.lossCount = _lossCount;}
        if(champ.position != _position){
            champ.position = _position;
            leaderboard[_position] = _champId;
        }
        if(champ.price != _price){champ.price = _price;}
        if(champ.withdrawCooldown != _withdrawCooldown){champ.withdrawCooldown = _withdrawCooldown;}
        if(champ.eq_sword != _eq_sword){champ.eq_sword = _eq_sword;}
        if(champ.eq_shield != _eq_shield){champ.eq_shield = _eq_shield;}
        if(champ.eq_helmet != _eq_helmet){champ.eq_helmet = _eq_helmet;}
        if(champ.forSale != _forSale){ 
            champ.forSale = _forSale; 
            if(_forSale){
                tokensForSaleCount[true]++;
            }else{
                tokensForSaleCount[true]--;
            }
        }
    }

    function updateItem(
        uint _id,
        uint8 _itemType,
        uint8 _itemRarity,
        uint _attackPower,
        uint _defencePower,
        uint _cooldownReduction,
        uint _price,
        uint _onChampId,
        bool _onChamp,
        bool _forSale
    ) public onlyTrusted
    {
        Item storage item = items[_id];
        if(item.itemType != _itemType){item.itemType = _itemType;}
        if(item.itemRarity != _itemRarity){item.itemRarity = _itemRarity;}
        if(item.attackPower != _attackPower){item.attackPower = _attackPower;}
        if(item.defencePower != _defencePower){item.defencePower = _defencePower;}
        if(item.cooldownReduction != _cooldownReduction){item.cooldownReduction = _cooldownReduction;}
        if(item.price != _price){item.price = _price;}
        if(item.onChampId != _onChampId){item.onChampId = _onChampId;}
        if(item.onChamp != _onChamp){item.onChamp = _onChamp;}
        if(item.forSale != _forSale){
            item.forSale = _forSale;
            if(_forSale){
                tokensForSaleCount[false]++;
            }else{
                tokensForSaleCount[false]--;
            }
        }
    }


    /*============== CALLABLE BY PLAYER ==============*/
    function buyItem(uint _id, address _affiliateAddress) external payable 
    onlyNotOwnerOfItem(_id) 
    isItemForSale(_id)
    isPaid(items[_id].price) 
    {
        if(tokenToOwner[false][_id] == address(this)){
            _distributeNewSaleInput(_affiliateAddress);
        }else{
            _addWithdrawal(tokenToOwner[false][_id], msg.value);
        }
        controller.transferToken(tokenToOwner[false][_id], msg.sender, _id, false);
    }

    function buyChamp(uint _id, address _affiliateAddress) external payable
    onlyNotOwnerOfChamp(_id) 
    isChampForSale(_id) 
    isPaid(champs[_id].price) 
    {
        if(tokenToOwner[true][_id] == address(this)){
            _distributeNewSaleInput(_affiliateAddress);
        }else{
            _addWithdrawal(tokenToOwner[true][_id], msg.value);
        }
        controller.transferToken(tokenToOwner[true][_id], msg.sender, _id, true);
    }

    function changePlayersName(string _name) external {
        addressInfo[msg.sender].name = _name;
    }

    function withdrawToAddress(address _address) external 
    {
        address playerAddress = _address;
        if(playerAddress == address(0)){ playerAddress = msg.sender; }
        uint share = addressInfo[playerAddress].withdrawal; //gets pending funds
        require(share > 0); //is it more than 0?

        addressInfo[playerAddress].withdrawal = 0; //set player's withdrawal pendings to 0 
        pendingWithdrawal = pendingWithdrawal.sub(share); //subtract share from total pendings 
        
        playerAddress.transfer(share); //transfer
    }


    /*============== VIEW FUNCTIONS ==============*/
    function getChampsByOwner(address _owner) external view returns(uint256[]) {
        uint256[] memory result = new uint256[](addressInfo[_owner].champsCount);
        uint256 counter = 0;
        for (uint256 i = 0; i < champs.length; i++) {
            if (tokenToOwner[true][i] == _owner) {
                result[counter] = i;
                counter++;
            }
        }
        return result;
    }

    function getTokensForSale(bool _isTokenChamp) view external returns(uint256[]){
        uint256[] memory result = new uint256[](tokensForSaleCount[_isTokenChamp]);
        if(tokensForSaleCount[_isTokenChamp] > 0){
            uint256 counter = 0;
            if(_isTokenChamp){
                for (uint256 i = 0; i < champs.length; i++) {
                    if (champs[i].forSale == true) {
                        result[counter]=i;
                        counter++;
                    }
                }
            }else{
                for (uint256 n = 0; n < items.length; n++) {
                    if (items[n].forSale == true) {
                        result[counter]=n;
                        counter++;
                    }
                }
            }
        }
        return result;
    }

    function getChampStats(uint256 _champId) public view returns(uint256,uint256,uint256){
        Champ storage champ = champs[_champId];
        Item storage sword = items[champ.eq_sword];
        Item storage shield = items[champ.eq_shield];
        Item storage helmet = items[champ.eq_helmet];

        uint totalAttackPower = champ.attackPower + sword.attackPower + shield.attackPower + helmet.attackPower; //Gets champs AP
        uint totalDefencePower = champ.defencePower + sword.defencePower + shield.defencePower + helmet.defencePower; //Gets champs  DP
        uint totalCooldownReduction = sword.cooldownReduction + shield.cooldownReduction + helmet.cooldownReduction; //Gets  CR

        return (totalAttackPower, totalDefencePower, totalCooldownReduction);
    }

    function getItemsByOwner(address _owner) external view returns(uint256[]) {
        uint256[] memory result = new uint256[](addressInfo[_owner].itemsCount);
        uint256 counter = 0;
        for (uint256 i = 0; i < items.length; i++) {
            if (tokenToOwner[false][i] == _owner) {
                result[counter] = i;
                counter++;
            }
        }
        return result;
    }

    function getTokenCount(bool _isTokenChamp) external view returns(uint)
    {
        if(_isTokenChamp){
            return champs.length - addressInfo[address(0)].champsCount;
        }else{
            return items.length - 1 - addressInfo[address(0)].itemsCount;
        }
    }
    
    function getTokenURIs(uint _tokenId, bool _isTokenChamp) public view returns(string)
    {
        return controller.getTokenURIs(_tokenId,_isTokenChamp);
    }

    function onlyApprovedOrOwnerOfToken(uint _id, address _msgsender, bool _isTokenChamp) external view returns(bool)
    {
        if(!_isTokenChamp){
            require(_id != 0);
        }
        address owner = tokenToOwner[_isTokenChamp][_id];
        return(_msgsender == owner || _msgsender == tokenApprovals[_isTokenChamp][_id] || tokenOperatorApprovals[_isTokenChamp][owner][_msgsender]);
    }


    /*============== DELEGATE ==============*/
    function attack(uint _champId, uint _targetId) external{
        controller.attack(_champId, _targetId, msg.sender);
    }

    function cancelTokenSale(uint _id, bool _isTokenChamp) public{
        controller.cancelTokenSale(_id, msg.sender, _isTokenChamp);
    }

    function changeChampsName(uint _champId, string _name) external{
        controller.changeChampsName(_champId, _name, msg.sender);
    }

    function forgeItems(uint _parentItemID, uint _childItemID) external{
        controller.forgeItems(_parentItemID, _childItemID, msg.sender);
    }

    function giveToken(address _to, uint _champId, bool _isTokenChamp) external{
        controller.giveToken(_to, _champId, msg.sender, _isTokenChamp);
    }

    function setTokenForSale(uint _id, uint _price, bool _isTokenChamp) external{
        controller.setTokenForSale(_id, _price, msg.sender, _isTokenChamp);
    }

    function putOn(uint _champId, uint _itemId) external{
        controller.putOn(_champId, _itemId, msg.sender);
    }

    function takeOffItem(uint _champId, uint8 _type) public{
        controller.takeOffItem(_champId, _type, msg.sender);
    }

    function withdrawChamp(uint _id) external{
        controller.withdrawChamp(_id, msg.sender); 
    }

    function getChampReward(uint _position) public view returns(uint){
        return controller.getChampReward(_position);
    }
}

    Contract ABI  
[{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"loadController","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"},{"name":"_isTokenChamp","type":"bool"}],"name":"cancelTokenSale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"},{"name":"_to","type":"address"},{"name":"_isTokenChamp","type":"bool"}],"name":"setTokenApproval","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_champId","type":"uint256"},{"name":"_attackPower","type":"uint256"},{"name":"_defencePower","type":"uint256"},{"name":"_cooldownTime","type":"uint256"},{"name":"_readyTime","type":"uint256"},{"name":"_winCount","type":"uint256"},{"name":"_lossCount","type":"uint256"},{"name":"_position","type":"uint256"},{"name":"_price","type":"uint256"},{"name":"_withdrawCooldown","type":"uint256"},{"name":"_eq_sword","type":"uint256"},{"name":"_eq_shield","type":"uint256"},{"name":"_eq_helmet","type":"uint256"},{"name":"_forSale","type":"bool"}],"name":"updateChamp","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"addressInfo","outputs":[{"name":"withdrawal","type":"uint256"},{"name":"champsCount","type":"uint256"},{"name":"itemsCount","type":"uint256"},{"name":"name","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_tokenId","type":"uint256"},{"name":"_isTokenChamp","type":"bool"}],"name":"clearTokenApproval","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"getItemsByOwner","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"},{"name":"_price","type":"uint256"},{"name":"_isTokenChamp","type":"bool"}],"name":"setTokenForSale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"}],"name":"withdrawChamp","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_attackPower","type":"uint256"},{"name":"_defencePower","type":"uint256"},{"name":"_cooldownTime","type":"uint256"},{"name":"_winCount","type":"uint256"},{"name":"_lossCount","type":"uint256"},{"name":"_position","type":"uint256"},{"name":"_price","type":"uint256"},{"name":"_eq_sword","type":"uint256"},{"name":"_eq_shield","type":"uint256"},{"name":"_eq_helmet","type":"uint256"},{"name":"_forSale","type":"bool"},{"name":"_owner","type":"address"}],"name":"newChamp","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_parentItemID","type":"uint256"},{"name":"_childItemID","type":"uint256"}],"name":"forgeItems","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_champId","type":"uint256"}],"name":"getChampStats","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_champId","type":"uint256"},{"name":"_itemId","type":"uint256"}],"name":"putOn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_champId","type":"uint256"},{"name":"_name","type":"string"}],"name":"setChampsName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bool"},{"name":"","type":"address"},{"name":"","type":"address"}],"name":"tokenOperatorApprovals","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bool"},{"name":"","type":"uint256"}],"name":"tokenApprovals","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"}],"name":"changePlayersName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_champId","type":"uint256"},{"name":"_isTokenChamp","type":"bool"}],"name":"giveToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"},{"name":"_itemType","type":"uint8"},{"name":"_itemRarity","type":"uint8"},{"name":"_attackPower","type":"uint256"},{"name":"_defencePower","type":"uint256"},{"name":"_cooldownReduction","type":"uint256"},{"name":"_price","type":"uint256"},{"name":"_onChampId","type":"uint256"},{"name":"_onChamp","type":"bool"},{"name":"_forSale","type":"bool"}],"name":"updateItem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"champToName","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"},{"name":"_affiliateAddress","type":"address"}],"name":"buyItem","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_isTokenChamp","type":"bool"}],"name":"getTokenCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingWithdrawal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_id","type":"uint256"},{"name":"_isTokenChamp","type":"bool"}],"name":"transferToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"},{"name":"_withdrawal","type":"uint256"},{"name":"_updatePendingWithdrawal","type":"bool"},{"name":"_champsCount","type":"uint256"},{"name":"_updateChampsCount","type":"bool"},{"name":"_itemsCount","type":"uint256"},{"name":"_updateItemsCount","type":"bool"},{"name":"_name","type":"string"},{"name":"_updateName","type":"bool"}],"name":"updateAddressInfo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"},{"name":"_isTokenChamp","type":"bool"}],"name":"setTokensForSaleCount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_isTokenChamp","type":"bool"}],"name":"getTokensForSale","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_position","type":"uint256"}],"name":"getChampReward","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_itemType","type":"uint8"},{"name":"_itemRarity","type":"uint8"},{"name":"_attackPower","type":"uint256"},{"name":"_defencePower","type":"uint256"},{"name":"_cooldownReduction","type":"uint256"},{"name":"_price","type":"uint256"},{"name":"_onChampId","type":"uint256"},{"name":"_onChamp","type":"bool"},{"name":"_forSale","type":"bool"},{"name":"_owner","type":"address"}],"name":"newItem","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"withdrawToAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bool"}],"name":"tokensForSaleCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bool"},{"name":"","type":"uint256"}],"name":"tokenToOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_champId","type":"uint256"},{"name":"_name","type":"string"}],"name":"changeChampsName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_x","type":"uint256"},{"name":"_value","type":"uint256"}],"name":"setLeaderboard","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"leaderboard","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"items","outputs":[{"name":"id","type":"uint256"},{"name":"itemType","type":"uint8"},{"name":"itemRarity","type":"uint8"},{"name":"attackPower","type":"uint256"},{"name":"defencePower","type":"uint256"},{"name":"cooldownReduction","type":"uint256"},{"name":"price","type":"uint256"},{"name":"onChampId","type":"uint256"},{"name":"onChamp","type":"bool"},{"name":"forSale","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"champs","outputs":[{"name":"id","type":"uint256"},{"name":"attackPower","type":"uint256"},{"name":"defencePower","type":"uint256"},{"name":"cooldownTime","type":"uint256"},{"name":"readyTime","type":"uint256"},{"name":"winCount","type":"uint256"},{"name":"lossCount","type":"uint256"},{"name":"position","type":"uint256"},{"name":"price","type":"uint256"},{"name":"withdrawCooldown","type":"uint256"},{"name":"eq_sword","type":"uint256"},{"name":"eq_shield","type":"uint256"},{"name":"eq_helmet","type":"uint256"},{"name":"forSale","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"uint256"},{"name":"_msgsender","type":"address"},{"name":"_isTokenChamp","type":"bool"}],"name":"onlyApprovedOrOwnerOfToken","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"},{"name":"_amount","type":"uint256"}],"name":"addWithdrawal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"emergencyWithdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_champId","type":"uint256"},{"name":"_type","type":"uint8"}],"name":"takeOffItem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"},{"name":"_affiliateAddress","type":"address"}],"name":"buyChamp","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_approved","type":"bool"},{"name":"_isTokenChamp","type":"bool"}],"name":"setTokenOperatorApprovals","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_isTokenChamp","type":"bool"}],"name":"getTokenURIs","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_champId","type":"uint256"},{"name":"_targetId","type":"uint256"}],"name":"attack","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"uint256"},{"name":"_owner","type":"address"},{"name":"_isTokenChamp","type":"bool"}],"name":"setTokenToOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"getChampsByOwner","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"},{"name":"_trusted","type":"bool"}],"name":"setTrusted","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"}]

  Contract Creation Code Switch To Opcodes View
60806040526000600a5534801561001557600080fd5b506001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550614cc7806100be6000396000f300608060405260043610610250576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680626f277014610255578063088df612146102985780630d325b29146102d15780630def38661461032a5780632126fcb2146103db57806329f6d9c3146104ac5780632c67a8e514610505578063338e4fd61461059d57806333fb1e05146105e0578063344c0dd51461060d57806341d9cc43146106d457806344f06bc71461070b5780634506e64d1461075a57806350c6ef881461079157806350d27312146108045780635355faed1461088b57806354c9cc44146109045780635df709041461093f5780635e7b983214610998578063736e077b14610a295780637383d70914610acf5780637a1aeb3c14610b0f5780637e28882214610b52578063811ea6de14610b7d57806387402d9a14610bf65780638e2e207714610ccd5780639187300e14610d0657806394b5c9f314610d8a578063a60956a614610dcb578063a92bd72c14610e86578063b8bcb3c914610ec9578063bb865ac014610f0c578063bcb98ba214610f85578063bd0a0e8514610fca578063bf36839914611001578063bfb231d214611042578063c5af6257146110d6578063d037628314611176578063d9a3af65146111e7578063db2e21bc14611234578063db9f16a81461124b578063dcfa6ac414611285578063e109ef24146112c5578063e167458814611340578063e1fa7638146113f2578063eb0fb0a314611429578063f0c41bb214611482578063f2fde38b1461151a578063f32a12ac1461155d575b600080fd5b34801561026157600080fd5b50610296600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115ac565b005b3480156102a457600080fd5b506102cf60048036038101908080359060200190929190803515159060200190929190505050611648565b005b3480156102dd57600080fd5b5061032860048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611735565b005b34801561033657600080fd5b506103d9600480360381019080803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035151590602001909291905050506117f9565b005b3480156103e757600080fd5b5061041c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a47565b6040518085815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561046e578082015181840152602081019050610453565b50505050905090810190601f16801561049b5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b3480156104b857600080fd5b50610503600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803515159060200190929190505050611b0f565b005b34801561051157600080fd5b50610546600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611cd5565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561058957808201518184015260208101905061056e565b505050509050019250505060405180910390f35b3480156105a957600080fd5b506105de6004803603810190808035906020019092919080359060200190929190803515159060200190929190505050611e1f565b005b3480156105ec57600080fd5b5061060b60048036038101908080359060200190929190505050611f15565b005b34801561061957600080fd5b506106be60048036038101908080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803515159060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ff5565b6040518082815260200191505060405180910390f35b3480156106e057600080fd5b5061070960048036038101908080359060200190929190803590602001909291905050506122e2565b005b34801561071757600080fd5b50610736600480360381019080803590602001909291905050506123cb565b60405180848152602001838152602001828152602001935050505060405180910390f35b34801561076657600080fd5b5061078f60048036038101908080359060200190929190803590602001909291905050506124be565b005b34801561079d57600080fd5b5061080260048036038101908080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506125a7565b005b34801561081057600080fd5b50610871600480360381019080803515159060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061262b565b604051808215151515815260200191505060405180910390f35b34801561089757600080fd5b506108c260048036038101908080351515906020019092919080359060200190929190505050612667565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561091057600080fd5b5061093d6004803603810190808035906020019082018035906020019190919293919293905050506126a9565b005b34801561094b57600080fd5b50610996600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035151590602001909291905050506126ff565b005b3480156109a457600080fd5b50610a2760048036038101908080359060200190929190803560ff169060200190929190803560ff1690602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803515159060200190929190803515159060200190929190505050612821565b005b348015610a3557600080fd5b50610a5460048036038101908080359060200190929190505050612a67565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a94578082015181840152602081019050610a79565b50505050905090810190601f168015610ac15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610b0d60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b17565b005b348015610b1b57600080fd5b50610b3c600480360381019080803515159060200190929190505050612e5f565b6040518082815260200191505060405180910390f35b348015610b5e57600080fd5b50610b67612f0c565b6040518082815260200191505060405180910390f35b348015610b8957600080fd5b50610bf4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803515159060200190929190505050612f12565b005b348015610c0257600080fd5b50610ccb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035151590602001909291908035906020019092919080351515906020019092919080359060200190929190803515159060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080351515906020019092919050505061308d565b005b348015610cd957600080fd5b50610d0460048036038101908080359060200190929190803515159060200190929190505050613184565b005b348015610d1257600080fd5b50610d336004803603810190808035151590602001909291905050506131fc565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610d76578082015181840152602081019050610d5b565b505050509050019250505060405180910390f35b348015610d9657600080fd5b50610db560048036038101908080359060200190929190505050613388565b6040518082815260200191505060405180910390f35b348015610dd757600080fd5b50610e70600480360381019080803560ff169060200190929190803560ff1690602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803515159060200190929190803515159060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061345d565b6040518082815260200191505060405180910390f35b348015610e9257600080fd5b50610ec7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613728565b005b348015610ed557600080fd5b50610ef660048036038101908080351515906020019092919050505061386a565b6040518082815260200191505060405180910390f35b348015610f1857600080fd5b50610f4360048036038101908080351515906020019092919080359060200190929190505050613882565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610f9157600080fd5b50610fc8600480360381019080803590602001909291908035906020019082018035906020019190919293919293905050506138c4565b005b348015610fd657600080fd5b50610fff60048036038101908080359060200190929190803590602001909291905050506139c8565b005b34801561100d57600080fd5b5061102c60048036038101908080359060200190929190505050613a3c565b6040518082815260200191505060405180910390f35b34801561104e57600080fd5b5061106d60048036038101908080359060200190929190505050613a54565b604051808b81526020018a60ff1660ff1681526020018960ff1660ff16815260200188815260200187815260200186815260200185815260200184815260200183151515158152602001821515151581526020019a505050505050505050505060405180910390f35b3480156110e257600080fd5b5061110160048036038101908080359060200190929190505050613aeb565b604051808f81526020018e81526020018d81526020018c81526020018b81526020018a8152602001898152602001888152602001878152602001868152602001858152602001848152602001838152602001821515151581526020019e50505050505050505050505050505060405180910390f35b34801561118257600080fd5b506111cd60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050613b73565b604051808215151515815260200191505060405180910390f35b3480156111f357600080fd5b50611232600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613d36565b005b34801561124057600080fd5b50611249613d9c565b005b34801561125757600080fd5b5061128360048036038101908080359060200190929190803560ff169060200190929190505050613e76565b005b6112c360048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613f65565b005b3480156112d157600080fd5b5061133e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291908035151590602001909291905050506142a1565b005b34801561134c57600080fd5b50611377600480360381019080803590602001909291908035151590602001909291905050506143a8565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156113b757808201518184015260208101905061139c565b50505050905090810190601f1680156113e45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156113fe57600080fd5b5061142760048036038101908080359060200190929190803590602001909291905050506144e0565b005b34801561143557600080fd5b5061148060048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506145c9565b005b34801561148e57600080fd5b506114c3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061468d565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156115065780820151818401526020810190506114eb565b505050509050019250505060405180910390f35b34801561152657600080fd5b5061155b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506147d8565b005b34801561156957600080fd5b506115aa600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506148b0565b005b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561160457600080fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634da1e0b78333846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019350505050600060405180830381600087803b15801561171957600080fd5b505af115801561172d573d6000803e3d6000fd5b505050505050565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561178d57600080fd5b816006600083151515158152602001908152602001600020600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561185357600080fd5b60008f81548110151561186257fe5b90600052602060002090600e020190508d8160010154141515611889578d81600101819055505b8c81600201541415156118a0578c81600201819055505b8b81600301541415156118b7578b81600301819055505b8a81600401541415156118ce578a81600401819055505b8981600501541415156118e5578981600501819055505b8881600601541415156118fc578881600601819055505b87816007015414151561192b578781600701819055508e600260008a8152602001908152602001600020819055505b868160080154141515611942578681600801819055505b858160090154141515611959578581600901819055505b8481600a0154141515611970578481600a01819055505b8381600b0154141515611987578381600b01819055505b8281600c015414151561199e578281600c01819055505b81151581600d0160009054906101000a900460ff161515141515611a36578181600d0160006101000a81548160ff0219169083151502179055508115611a0b5760096000600115151515815260200190815260200160002060008154809291906001019190505550611a35565b60096000600115151515815260200190815260200160002060008154809291906001900391905055505b5b505050505050505050505050505050565b6004602052806000526040600020600091509050806000015490806001015490806002015490806003018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611b055780601f10611ada57610100808354040283529160200191611b05565b820191906000526020600020905b815481529060010190602001808311611ae857829003601f168201915b5050505050905084565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611b6757600080fd5b8273ffffffffffffffffffffffffffffffffffffffff166007600083151515158152602001908152602001600020600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611be957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff166006600083151515158152602001908152602001600020600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611cd05760006006600083151515158152602001908152602001600020600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b505050565b606080600080600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154604051908082528060200260200182016040528015611d4c5781602001602082028038833980820191505090505b50925060009150600090505b600180549050811015611e14578473ffffffffffffffffffffffffffffffffffffffff166007600080151515158152602001908152602001600020600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611e0757808383815181101515611df057fe5b906020019060200201818152505081806001019250505b8080600101915050611d58565b829350505050919050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a87af57b848433856040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182151515158152602001945050505050600060405180830381600087803b158015611ef857600080fd5b505af1158015611f0c573d6000803e3d6000fd5b50505050505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ca76002182336040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b158015611fda57600080fd5b505af1158015611fee573d6000803e3d6000fd5b5050505050565b6000611fff614aa6565b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561205957600080fd5b6101c06040519081016040528060008152602001600081526020018f81526020018e8152602001600081526020018d81526020018c81526020018b81526020018a81526020016000815260200189815260200188815260200187815260200186151581525091508e82602001818152505060016000839080600181540180825580915050906001820390600052602060002090600e020160009091929091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b015561018082015181600c01556101a082015181600d0160006101000a81548160ff0219169083151502179055505050039050806000828154811015156121b757fe5b90600052602060002090600e02016000018190555080600260008c815260200190815260200160002081905550600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000815480929190600101919050555083600760006001151515158152602001908152602001600020600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084156122cd57600960006001151515158152602001908152602001600020600081548092919060010191905055505b80925050509c9b505050505050505050505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a1bc13ad8383336040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b1580156123af57600080fd5b505af11580156123c3573d6000803e3d6000fd5b505050505050565b60008060008060008060008060008060008b8154811015156123e957fe5b90600052602060002090600e02019650600187600a015481548110151561240c57fe5b90600052602060002090600802019550600187600b015481548110151561242f57fe5b90600052602060002090600802019450600187600c015481548110151561245257fe5b90600052602060002090600802019350836002015485600201548760020154896001015401010192508360030154856003015487600301548960020154010101915083600401548560040154876004015401019050828282995099509950505050505050509193909250565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ce9a6ac88383336040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b15801561258b57600080fd5b505af115801561259f573d6000803e3d6000fd5b505050505050565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156125ff57600080fd5b80600860008481526020019081526020016000209080519060200190612626929190614b18565b505050565b6005602052826000526040600020602052816000526040600020602052806000526040600020600092509250509054906101000a900460ff1681565b60066020528160005260406000206020528060005260406000206000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b8181600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030191906126fa929190614b98565b505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166350be7503848433856040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182151515158152602001945050505050600060405180830381600087803b15801561280457600080fd5b505af1158015612818573d6000803e3d6000fd5b50505050505050565b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561287b57600080fd5b60018b81548110151561288a57fe5b906000526020600020906008020190508960ff168160010160009054906101000a900460ff1660ff161415156128d857898160010160006101000a81548160ff021916908360ff1602179055505b8860ff168160010160019054906101000a900460ff1660ff1614151561291657888160010160016101000a81548160ff021916908360ff1602179055505b87816002015414151561292d578781600201819055505b868160030154141515612944578681600301819055505b85816004015414151561295b578581600401819055505b848160050154141515612972578481600501819055505b838160060154141515612989578381600601819055505b8215158160070160009054906101000a900460ff1615151415156129c457828160070160006101000a81548160ff0219169083151502179055505b8115158160070160019054906101000a900460ff161515141515612a5a57818160070160016101000a81548160ff0219169083151502179055508115612a3057600960008015151515815260200190815260200160002060008154809291906001019190505550612a59565b600960008015151515815260200190815260200160002060008154809291906001900391905055505b5b5050505050505050505050565b60086020528060005260406000206000915090508054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612b0f5780601f10612ae457610100808354040283529160200191612b0f565b820191906000526020600020905b815481529060010190602001808311612af257829003601f168201915b505050505081565b8160008114151515612b2857600080fd5b6007600080151515158152602001908152602001600020600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515612bab57600080fd5b82600181815481101515612bbb57fe5b906000526020600020906008020160070160019054906101000a900460ff161515612be557600080fd5b600184815481101515612bf457fe5b906000526020600020906008020160050154803410151515612c1557600080fd5b3073ffffffffffffffffffffffffffffffffffffffff166007600080151515158152602001908152602001600020600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612c9f57612c9a84614963565b612cf2565b612cf16007600080151515158152602001908152602001600020600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1634614a29565b5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663811ea6de6007600080151515158152602001908152602001600020600088815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16338860006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b158015612e4057600080fd5b505af1158015612e54573d6000803e3d6000fd5b505050505050505050565b60008115612eb857600460008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600080549050039050612f07565b600460008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015460018080549050030390505b919050565b600a5481565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515612f6a57600080fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663811ea6de858585856040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b15801561306f57600080fd5b505af1158015613083573d6000803e3d6000fd5b5050505050505050565b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156130e757600080fd5b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508715613138578881600001819055505b8515613148578681600101819055505b8315613158578481600201819055505b81156131785782816003019080519060200190613176929190614b18565b505b50505050505050505050565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156131dc57600080fd5b816009600083151515158152602001908152602001600020819055505050565b606080600080600060096000871515151581526020019081526020016000205460405190808252806020026020018201604052801561324a5781602001602082028038833980820191505090505b5093506000600960008815151515815260200190815260200160002054111561337c576000925085156132fb57600091505b6000805490508210156132f6576001151560008381548110151561329c57fe5b90600052602060002090600e0201600d0160009054906101000a900460ff16151514156132e9578184848151811015156132d257fe5b906020019060200201818152505082806001019350505b818060010192505061327c565b61337b565b600090505b60018054905081101561337a576001151560018281548110151561332057fe5b906000526020600020906008020160070160019054906101000a900460ff161515141561336d5780848481518110151561335657fe5b906020019060200201818152505082806001019350505b8080600101915050613300565b5b5b83945050505050919050565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166394b5c9f3836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561341b57600080fd5b505af115801561342f573d6000803e3d6000fd5b505050506040513d602081101561344557600080fd5b81019080805190602001909291905050509050919050565b6000613467614c18565b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156134c157600080fd5b61014060405190810160405280600081526020018e60ff1681526020018d60ff1681526020018c81526020018b81526020018a81526020018981526020018881526020018715158152602001861515815250915060018083908060018154018082558091505090600182039060005260206000209060080201600090919290919091506000820151816000015560208201518160010160006101000a81548160ff021916908360ff16021790555060408201518160010160016101000a81548160ff021916908360ff160217905550606082015181600201556080820151816003015560a0820151816004015560c0820151816005015560e082015181600601556101008201518160070160006101000a81548160ff0219169083151502179055506101208201518160070160016101000a81548160ff02191690831515021790555050500390508060018281548110151561361957fe5b906000526020600020906008020160000181905550600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008154809291906001019190505550836007600080151515158152602001908152602001600020600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508415613715576009600080151515158152602001908152602001600020600081548092919060010191905055505b80925050509a9950505050505050505050565b600080829150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613767573391505b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506000811115156137bb57600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555061381881600a54614a8d90919063ffffffff16565b600a819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613864573d6000803e3d6000fd5b50505050565b60096020528060005260406000206000915090505481565b60076020528160005260406000206020528060005260406000206000915091509054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166309a0cfe4848484336040518563ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180858152602001806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281038252858582818152602001925080828437820191505095505050505050600060405180830381600087803b1580156139ab57600080fd5b505af11580156139bf573d6000803e3d6000fd5b50505050505050565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515613a2057600080fd5b8060026000848152602001908152602001600020819055505050565b60026020528060005260406000206000915090505481565b600181815481101515613a6357fe5b90600052602060002090600802016000915090508060000154908060010160009054906101000a900460ff16908060010160019054906101000a900460ff16908060020154908060030154908060040154908060050154908060060154908060070160009054906101000a900460ff16908060070160019054906101000a900460ff1690508a565b600081815481101515613afa57fe5b90600052602060002090600e020160009150905080600001549080600101549080600201549080600301549080600401549080600501549080600601549080600701549080600801549080600901549080600a01549080600b01549080600c01549080600d0160009054906101000a900460ff1690508e565b600080821515613b8e5760008514151515613b8d57600080fd5b5b6007600084151515158152602001908152602001600020600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480613c8657506006600084151515158152602001908152602001600020600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80613d2c5750600560008415151515815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b9150509392505050565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515613d8e57600080fd5b613d988282614a29565b5050565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515613df457600080fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015613e73573d6000803e3d6000fd5b50565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638c945d388383336040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018360ff1660ff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b158015613f4957600080fd5b505af1158015613f5d573d6000803e3d6000fd5b505050505050565b81600760006001151515158152602001908152602001600020600082815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515613fea57600080fd5b82600081815481101515613ffa57fe5b90600052602060002090600e0201600d0160009054906101000a900460ff16151561402457600080fd5b60008481548110151561403357fe5b90600052602060002090600e02016008015480341015151561405457600080fd5b3073ffffffffffffffffffffffffffffffffffffffff16600760006001151515158152602001908152602001600020600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156140df576140da84614963565b614133565b614132600760006001151515158152602001908152602001600020600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1634614a29565b5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663811ea6de600760006001151515158152602001908152602001600020600088815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16338860016040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001945050505050600060405180830381600087803b15801561428257600080fd5b505af1158015614296573d6000803e3d6000fd5b505050505050505050565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156142f957600080fd5b81600560008315151515815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505050565b6060600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e167458884846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018215151515815260200192505050600060405180830381600087803b15801561444757600080fd5b505af115801561445b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561448557600080fd5b81019080805164010000000081111561449d57600080fd5b828101905060208101848111156144b357600080fd5b81518560018202830111640100000000821117156144d057600080fd5b5050929190505050905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663daaf3d2e8383336040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b1580156145ad57600080fd5b505af11580156145c1573d6000803e3d6000fd5b505050505050565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561462157600080fd5b816007600083151515158152602001908152602001600020600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b606080600080600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546040519080825280602002602001820160405280156147045781602001602082028038833980820191505090505b50925060009150600090505b6000805490508110156147cd578473ffffffffffffffffffffffffffffffffffffffff16600760006001151515158152602001908152602001600020600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156147c0578083838151811015156147a957fe5b906020019060200201818152505081806001019250505b8080600101915050614710565b829350505050919050565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561483057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561486c57600080fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561490857600080fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61499e600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16603c60643481151561499757fe5b0402614a29565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015614a0757503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15614a2657614a25816019606434811515614a1e57fe5b0402614a29565b5b50565b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000828254019250508190555080600a600082825401925050819055505050565b6000828211151515614a9b57fe5b818303905092915050565b6101c060405190810160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10614b5957805160ff1916838001178555614b87565b82800160010185558215614b87579182015b82811115614b86578251825591602001919060010190614b6b565b5b509050614b949190614c76565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10614bd957803560ff1916838001178555614c07565b82800160010185558215614c07579182015b82811115614c06578235825591602001919060010190614beb565b5b509050614c149190614c76565b5090565b6101406040519081016040528060008152602001600060ff168152602001600060ff16815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581526020016000151581525090565b614c9891905b80821115614c94576000816000905550600101614c7c565b5090565b905600a165627a7a7230582067a990025a9138c614880f57620d6c8080a00f9be557de7466ec0d5681b6d5000029

   Swarm Source:
bzzr://67a990025a9138c614880f57620d6c8080a00f9be557de7466ec0d5681b6d500

 

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.