ETH Price: $3,093.20 (-0.65%)

Contract

0x4D305c2334c02E44aC592BbEA681bA4cC1576DE3
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve155956622022-09-23 11:10:59789 days ago1663931459IN
0x4D305c23...cC1576DE3
0 ETH0.00030966.66192734
Transfer155955702022-09-23 10:52:35789 days ago1663930355IN
0x4D305c23...cC1576DE3
0 ETH0.0009589417.52801999
Approve145062282022-04-02 10:34:32963 days ago1648895672IN
0x4D305c23...cC1576DE3
0 ETH0.0009401338.86456345
Approve127340892021-06-30 7:50:191239 days ago1625039419IN
0x4D305c23...cC1576DE3
0 ETH0.00088319
Approve126309822021-06-14 6:35:561255 days ago1623652556IN
0x4D305c23...cC1576DE3
0 ETH0.000422919.1
Approve123762572021-05-05 19:54:471294 days ago1620244487IN
0x4D305c23...cC1576DE3
0 ETH0.0031137567
Transfer122186062021-04-11 12:27:511319 days ago1618144071IN
0x4D305c23...cC1576DE3
0 ETH0.0020834164.50000056
Transfer122130842021-04-10 15:58:351320 days ago1618070315IN
0x4D305c23...cC1576DE3
0 ETH0.0041217101.00000145
Transfer117479282021-01-29 1:49:111391 days ago1611884951IN
0x4D305c23...cC1576DE3
0 ETH0.0033577682.28000025
Transfer112853052020-11-19 1:00:521462 days ago1605747652IN
0x4D305c23...cC1576DE3
0 ETH0.0011361244
Transfer112438802020-11-12 16:33:101469 days ago1605198790IN
0x4D305c23...cC1576DE3
0 ETH0.0008972722
Transfer111238592020-10-25 6:07:061487 days ago1603606026IN
0x4D305c23...cC1576DE3
0 ETH0.0008975322.00000123
Transfer103948102020-07-04 19:34:071599 days ago1593891247IN
0x4D305c23...cC1576DE3
0 ETH0.000815720
Transfer102450932020-06-11 15:06:121623 days ago1591887972IN
0x4D305c23...cC1576DE3
0 ETH0.0031422977
Transfer94861012020-02-15 6:50:361740 days ago1581749436IN
0x4D305c23...cC1576DE3
0 ETH0.0016731641
Transfer92337642020-01-07 13:28:521779 days ago1578403732IN
0x4D305c23...cC1576DE3
0 ETH0.000183644.5
Transfer91924492019-12-31 20:05:421785 days ago1577822742IN
0x4D305c23...cC1576DE3
0 ETH0.000040791
Transfer91406272019-12-21 12:17:091796 days ago1576930629IN
0x4D305c23...cC1576DE3
0 ETH0.000061171.5
Transfer88770522019-11-05 10:33:511842 days ago1572950031IN
0x4D305c23...cC1576DE3
0 ETH0.0006186611.50000025
Transfer88770412019-11-05 10:31:311842 days ago1572949891IN
0x4D305c23...cC1576DE3
0 ETH0.0006186611.50000025
Transfer88770282019-11-05 10:29:221842 days ago1572949762IN
0x4D305c23...cC1576DE3
0 ETH0.0006186611.50000025
Transfer88700462019-11-04 7:21:301843 days ago1572852090IN
0x4D305c23...cC1576DE3
0 ETH0.000641216.5
Transfer88649412019-11-03 11:41:561844 days ago1572781316IN
0x4D305c23...cC1576DE3
0 ETH0.0005917611
Transfer87919032019-10-22 18:34:591855 days ago1571769299IN
0x4D305c23...cC1576DE3
0 ETH0.000096831.8
Transfer85374792019-09-12 21:55:561895 days ago1568325356IN
0x4D305c23...cC1576DE3
0 ETH0.0007772220
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
54263352018-04-12 8:46:002414 days ago1523522760
0x4D305c23...cC1576DE3
0.11890606 ETH
54263292018-04-12 8:44:282414 days ago1523522668
0x4D305c23...cC1576DE3
0.11890606 ETH
54263262018-04-12 8:43:032414 days ago1523522583
0x4D305c23...cC1576DE3
0.2378 ETH
54263222018-04-12 8:41:122414 days ago1523522472
0x4D305c23...cC1576DE3
0.15 ETH
54263172018-04-12 8:40:002414 days ago1523522400
0x4D305c23...cC1576DE3
1 ETH
54263112018-04-12 8:36:512414 days ago1523522211
0x4D305c23...cC1576DE3
0.14387633 ETH
54263092018-04-12 8:35:322414 days ago1523522132
0x4D305c23...cC1576DE3
6.00475624 ETH
54263072018-04-12 8:35:092414 days ago1523522109
0x4D305c23...cC1576DE3
0.11890606 ETH
54263022018-04-12 8:34:132414 days ago1523522053
0x4D305c23...cC1576DE3
0.3354 ETH
54262902018-04-12 8:31:472414 days ago1523521907
0x4D305c23...cC1576DE3
0.025 ETH
54262792018-04-12 8:29:532414 days ago1523521793
0x4D305c23...cC1576DE3
0.145 ETH
54262722018-04-12 8:28:112414 days ago1523521691
0x4D305c23...cC1576DE3
0.15488224 ETH
54262692018-04-12 8:27:312414 days ago1523521651
0x4D305c23...cC1576DE3
0.34597653 ETH
54262572018-04-12 8:25:222414 days ago1523521522
0x4D305c23...cC1576DE3
0.17835909 ETH
54262542018-04-12 8:23:572414 days ago1523521437
0x4D305c23...cC1576DE3
0.17535909 ETH
54262512018-04-12 8:23:232414 days ago1523521403
0x4D305c23...cC1576DE3
0.93533977 ETH
54262012018-04-12 8:12:472414 days ago1523520767
0x4D305c23...cC1576DE3
0.1675 ETH
54260942018-04-12 7:44:392414 days ago1523519079
0x4D305c23...cC1576DE3
0.35671819 ETH
54260532018-04-12 7:37:112414 days ago1523518631
0x4D305c23...cC1576DE3
0.5 ETH
54260202018-04-12 7:28:242414 days ago1523518104
0x4D305c23...cC1576DE3
0.1859 ETH
54260172018-04-12 7:26:242414 days ago1523517984
0x4D305c23...cC1576DE3
0.35671819 ETH
54260152018-04-12 7:26:022414 days ago1523517962
0x4D305c23...cC1576DE3
0.11890606 ETH
54260102018-04-12 7:25:392414 days ago1523517939
0x4D305c23...cC1576DE3
0.95 ETH
54260062018-04-12 7:24:402414 days ago1523517880
0x4D305c23...cC1576DE3
0.46272303 ETH
54260032018-04-12 7:24:022414 days ago1523517842
0x4D305c23...cC1576DE3
0.11890606 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
RepuX

Compiler Version
v0.4.19+commit.c4cbbb05

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-02-07
*/

pragma solidity ^0.4.8;


/**
 * Math operations with safety checks
 * By OpenZeppelin: https://github.com/OpenZeppelin/zeppelin-solidity/contracts/SafeMath.sol
 */
library SafeMath {
  function mul(uint256 a, uint256 b) internal constant returns (uint256) {
    uint256 c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

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

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

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

contract ContractReceiver {
    function tokenFallback(address _from, uint256 _value, bytes  _data) external;
}

contract Ownable {
    address public owner;
    address public ownerCandidate;
    event OwnerTransfer(address originalOwner, address currentOwner);

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

    function proposeNewOwner(address newOwner) public onlyOwner {
        require(newOwner != address(0) && newOwner != owner);
        ownerCandidate = newOwner;
    }

    function acceptOwnerTransfer() public {
        require(msg.sender == ownerCandidate);
        OwnerTransfer(owner, ownerCandidate);
        owner = ownerCandidate;
    }
}

contract ERC20Basic {
  uint256 public totalSupply;
  function balanceOf(address who) public constant returns (uint256);
  function transfer(address to, uint256 value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}

contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender) public constant returns (uint256);
  function transferFrom(address from, address to, uint256 value) public returns (bool);
  function approve(address spender, uint256 value) public returns (bool);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract BasicToken is ERC20Basic {
  using SafeMath for uint256;

  mapping(address => uint256) balances;

  /**
  * @dev transfer token for a specified address
  * @param _to The address to transfer to.
  * @param _value The amount to be transferred.
  */
  function transfer(address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_value <= balances[msg.sender]);

    // SafeMath.sub will throw if there is not enough balance.
    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    Transfer(msg.sender, _to, _value);
    return true;
  }

  /**
  * @dev Gets the balance of the specified address.
  * @param _owner The address to query the the balance of.
  * @return An uint256 representing the amount owned by the passed address.
  */
  function balanceOf(address _owner) public constant returns (uint256 balance) {
    return balances[_owner];
  }

}

contract StandardToken is ERC20, BasicToken {

  mapping (address => mapping (address => uint256)) internal allowed;


  /**
   * @dev Transfer tokens from one address to another
   * @param _from address The address which you want to send tokens from
   * @param _to address The address which you want to transfer to
   * @param _value uint256 the amount of tokens to be transferred
   */
  function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_value <= balances[_from]);
    require(_value <= allowed[_from][msg.sender]);

    balances[_from] = balances[_from].sub(_value);
    balances[_to] = balances[_to].add(_value);
    allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
    Transfer(_from, _to, _value);
    return true;
  }

  /**
   * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
   *
   * Beware that changing an allowance with this method brings the risk that someone may use both the old
   * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
   * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   * @param _spender The address which will spend the funds.
   * @param _value The amount of tokens to be spent.
   */
  function approve(address _spender, uint256 _value) public returns (bool) {
    allowed[msg.sender][_spender] = _value;
    Approval(msg.sender, _spender, _value);
    return true;
  }

  /**
   * @dev Function to check the amount of tokens that an owner allowed to a spender.
   * @param _owner address The address which owns the funds.
   * @param _spender address The address which will spend the funds.
   * @return A uint256 specifying the amount of tokens still available for the spender.
   */
  function allowance(address _owner, address _spender) public constant returns (uint256 remaining) {
    return allowed[_owner][_spender];
  }

  /**
   * approve should be called when allowed[_spender] == 0. To increment
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   */
  function increaseApproval (address _spender, uint _addedValue) public returns (bool success) {
    allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

  function decreaseApproval (address _spender, uint _subtractedValue) public returns (bool success) {
    uint oldValue = allowed[msg.sender][_spender];
    if (_subtractedValue > oldValue) {
      allowed[msg.sender][_spender] = 0;
    } else {
      allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
    }
    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

}


// Based in part on code by Open-Zeppelin: https://github.com/OpenZeppelin/zeppelin-solidity.git
// Based in part on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
// Smart contract for the RepuX token & the first crowdsale
contract RepuX is StandardToken, Ownable {
    string public constant name = "RepuX";
    string public constant symbol = "REPUX";
    uint8 public constant decimals = 18;
    address public multisig; //multisig wallet, to which all contributions will be sent

    uint256 public phase1StartBlock; //Crowdsale start block
    uint256 public phase1EndBlock; // Day 7 (estimate)
    uint256 public phase2EndBlock; // Day 13 (estimate)
    uint256 public phase3EndBlock; // Day 19 (estimate)
    uint256 public phase4EndBlock; // Day 25 (estimate)
    uint256 public phase5EndBlock; // Day 31 (estimate)
    uint256 public endBlock; //whole crowdsale end block

    uint256 public basePrice = 1818 * (10**11); // ICO token base price: ~$0.20 (estimate assuming $1100 per Eth)

    uint256 public totalSupply = 500000000 * (10**uint256(decimals)); //Token total supply: 500000000 RPX
    uint256 public presaleTokenSupply = totalSupply.mul(20).div(100); //Amount of tokens available during presale (10%)
    uint256 public crowdsaleTokenSupply = totalSupply.mul(30).div(100); //Amount of tokens available during crowdsale (50%)
    uint256 public rewardsTokenSupply = totalSupply.mul(15).div(100); //Rewards pool (VIP etc, 10%), ambassador share(3%) & ICO bounties(2%)
    uint256 public teamTokenSupply = totalSupply.mul(12).div(100); //Tokens distributed to team (12% in total, 4% vested for 12, 24 & 36 months)
    uint256 public platformTokenSupply = totalSupply.mul(23).div(100); //Token reserve for sale on platform
    uint256 public presaleTokenSold = 0; //Records the amount of tokens sold during presale
    uint256 public crowdsaleTokenSold = 0; //Records the amount of tokens sold during the crowdsale

    uint256 public phase1Cap = crowdsaleTokenSupply.mul(50).div(100);
    uint256 public phase2Cap = crowdsaleTokenSupply.mul(60).div(100);
    uint256 public phase3Cap = crowdsaleTokenSupply.mul(70).div(100);
    uint256 public phase4Cap = crowdsaleTokenSupply.mul(80).div(100);

    uint256 public transferLockup = 5760; //Lock up token transfer until ~2 days after crowdsale concludes
    uint256 public teamLockUp; 
    uint256 private teamWithdrawalCount = 0;
    uint256 public averageBlockTime = 18; //Average block time in seconds

    bool public presaleStarted = false;
    bool public presaleConcluded = false;
    bool public crowdsaleStarted = false;
    bool public crowdsaleConcluded = false;
    bool public halted = false; //Halt crowdsale in emergency

    uint256 contributionCount = 0;
    bytes32[] public contributionHashes;
    mapping (bytes32 => Contribution) private contributions;

    address public platformWithdrawalRecipient = address(0);
    bool public platformWithdrawalProposed = false;
    bool platformWithdrawn = false;
    
    address public rewardsWithdrawalRecipient = address(0);
    bool public rewardsWithdrawalProposed = false;
    bool rewardsWithdrawn = false;

    event Halt(); //Halt event
    event Unhalt(); //Unhalt event
    event Burn(address burner, uint256 amount);
    event StartPresale();
    event ConcludePresale();
    event StartCrowdsale();
    event ConcludeCrowdsale();
    event SetMultisig(address newMultisig);

    struct Contribution {
        address contributor;
        address recipient;
        uint256 ethWei;
        uint256 tokens;
        bool resolved;
        bool success;
        uint8 stage;
    }

    event ContributionReceived(bytes32 contributionHash, address contributor, address recipient,
        uint256 ethWei, uint256 pendingTokens);

    event ContributionResolved(bytes32 contributionHash, bool pass, address contributor, 
        address recipient, uint256 ethWei, uint256 tokens);


    // lockup during and after 48h of end of crowdsale
    modifier crowdsaleTransferLock() {
        require(crowdsaleStarted && block.number >= endBlock.add(transferLockup));
        _;
    }

    modifier whenNotHalted() {
        require(!halted);
        _;
    }

    //Constructor: set owner (team) address & crowdsale recipient multisig wallet address
    //Allocate reward tokens to the team wallet
  	function RepuX(address _multisig) public {
        owner = msg.sender;
        multisig = _multisig;
        teamLockUp = dayToBlockNumber(31); // 31 days between withdrawing 1/36 of team tokens - vesting period in total is 3 years
  	}

    //Fallback function when receiving Ether. Contributors can directly send Ether to the token address during crowdsale.
    function() public payable {
        buy();
    }


    //Halt ICO in case of emergency.
    function halt() public onlyOwner {
        halted = true;
        Halt();
    }

    function unhalt() public onlyOwner {
        halted = false;
        Unhalt();
    }

    function startPresale() public onlyOwner {
        require(!presaleStarted);
        presaleStarted = true;
        StartPresale();
    }

    function concludePresale() public onlyOwner {
        require(presaleStarted && !presaleConcluded);
        presaleConcluded = true;
        //Unsold tokens in the presale are made available in the crowdsale.
        crowdsaleTokenSupply = crowdsaleTokenSupply.add(presaleTokenSupply.sub(presaleTokenSold)); 
        ConcludePresale();
    }

    // Can only be called after presale is concluded.
    function startCrowdsale() public onlyOwner {
        require(presaleConcluded && !crowdsaleStarted);
        crowdsaleStarted = true;
        phase1StartBlock = block.number;
        phase1EndBlock = phase1StartBlock.add(dayToBlockNumber(7));
        phase2EndBlock = phase1EndBlock.add(dayToBlockNumber(6));
        phase3EndBlock = phase2EndBlock.add(dayToBlockNumber(6));
        phase4EndBlock = phase3EndBlock.add(dayToBlockNumber(6));
        phase5EndBlock = phase4EndBlock.add(dayToBlockNumber(6));
        endBlock = phase5EndBlock;
        StartCrowdsale();
    }

    // Can only be called either after crowdsale time period ends, or after tokens have sold out
    function concludeCrowdsale() public onlyOwner {
        require(crowdsaleStarted && !crowdsaleOn() && !crowdsaleConcluded);
        
        crowdsaleConcluded = true;
        endBlock = block.number;
        uint256 unsold = crowdsaleTokenSupply.sub(crowdsaleTokenSold);
        
        if (unsold > 0) {
            //Burn unsold tokens
            totalSupply = totalSupply.sub(unsold);
            Burn(this, unsold);
            Transfer(this, address(0), unsold);
        }
        
        ConcludeCrowdsale();
    }

    // Make it possible for team to withdraw team tokens over 3 years
    function withdrawTeamToken(address recipient) public onlyOwner {
        require(crowdsaleStarted);
        require(teamWithdrawalCount < 36);
        require(block.number >= endBlock.add(teamLockUp.mul(teamWithdrawalCount.add(1)))); // 36-month lock-up in total, team can withdraw 1/36 of tokens each month
        
        teamWithdrawalCount++;
        uint256 tokens = teamTokenSupply.div(36); // distribute 1/36 of team tokens each month
        balances[recipient] = balances[recipient].add(tokens);
        Transfer(this, recipient, tokens);
    }
    
    // Withdrawing Platform Tokens supply
    function proposePlatformWithdrawal(address recipient) public onlyOwner {
        require(!platformWithdrawn);

        platformWithdrawalRecipient = recipient;
        platformWithdrawalProposed = true;
    }

    function cancelPlatformWithdrawal() public onlyOwner {
        require(!platformWithdrawn);
        require(platformWithdrawalProposed);

        platformWithdrawalProposed = false;
        platformWithdrawalRecipient = address(0); 
    }

    function confirmPlatformWithdrawal() public {
        require(!platformWithdrawn);
        require(platformWithdrawalProposed);
        require(msg.sender == platformWithdrawalRecipient);

        platformWithdrawn = true;
        balances[msg.sender] = balances[msg.sender].add(platformTokenSupply);

        Transfer(this, msg.sender, platformTokenSupply);
    }
    
    // Withdrawing Rewards Pool Tokens
    function proposeRewardsWithdrawal(address recipient) public onlyOwner {
        require(!rewardsWithdrawn);

        rewardsWithdrawalRecipient = recipient;
        rewardsWithdrawalProposed = true;
    }

    function cancelRewardsWithdrawal() public onlyOwner {
        require(!rewardsWithdrawn);
        require(rewardsWithdrawalProposed);

        rewardsWithdrawalProposed = false;
        rewardsWithdrawalRecipient = address(0); 
    }

    function confirmRewardsWithdrawal() public {
        require(!rewardsWithdrawn);
        require(rewardsWithdrawalProposed);
        require(msg.sender == rewardsWithdrawalRecipient);

        rewardsWithdrawn = true;
        balances[msg.sender] = balances[msg.sender].add(rewardsTokenSupply);

        Transfer(this, msg.sender, rewardsTokenSupply);
    }

    function buy() public payable {
        buyRecipient(msg.sender);
    }

    // Allow addresses to buy token for another account
    function buyRecipient(address recipient) public payable whenNotHalted {
        require(msg.value > 0);
        require(presaleOn()||crowdsaleOn()); //Contribution only allowed during presale/crowdsale
        uint256 tokens = msg.value.mul(10**uint256(decimals)).div(tokenPrice()); 
        uint8 stage = 0;

        if(presaleOn()) {
            require(presaleTokenSold.add(tokens) <= presaleTokenSupply);
            presaleTokenSold = presaleTokenSold.add(tokens);
        } else {
            require(crowdsaleTokenSold.add(tokens) <= crowdsaleTokenSupply);
            crowdsaleTokenSold = crowdsaleTokenSold.add(tokens);
            stage = 1;
        }
        contributionCount = contributionCount.add(1);
        bytes32 transactionHash = keccak256(contributionCount, msg.sender, msg.value, msg.data,
            msg.gas, block.number, tx.gasprice);
        contributions[transactionHash] = Contribution(msg.sender, recipient, msg.value, 
            tokens, false, false, stage);
        contributionHashes.push(transactionHash);
        ContributionReceived(transactionHash, msg.sender, recipient, msg.value, tokens);
    }

    //Accept a contribution if KYC passed.
    function acceptContribution(bytes32 transactionHash) public onlyOwner {
        Contribution storage c = contributions[transactionHash];
        require(!c.resolved);
        c.resolved = true;
        c.success = true;
        balances[c.recipient] = balances[c.recipient].add(c.tokens);
        assert(multisig.send(c.ethWei));
        Transfer(this, c.recipient, c.tokens);
        ContributionResolved(transactionHash, true, c.contributor, c.recipient, c.ethWei, 
            c.tokens);
    }

    //Reject a contribution if KYC failed.
    function rejectContribution(bytes32 transactionHash) public onlyOwner {
        Contribution storage c = contributions[transactionHash];
        require(!c.resolved);
        c.resolved = true;
        c.success = false;
        if (c.stage == 0) {
            presaleTokenSold = presaleTokenSold.sub(c.tokens);
        } else {
            crowdsaleTokenSold = crowdsaleTokenSold.sub(c.tokens);
        }
        assert(c.contributor.send(c.ethWei));
        ContributionResolved(transactionHash, false, c.contributor, c.recipient, c.ethWei, 
            c.tokens);
    }

    // Team manually mints tokens in case of BTC/wire-transfer contributions
    function mint(address recipient, uint256 value) public onlyOwner {
    	require(value > 0);
    	require(presaleStarted && !crowdsaleConcluded); // Minting allowed after presale started, up to crowdsale concluded (time for team to distribute tokens)

    	if (presaleOn()) {
            require(presaleTokenSold.add(value) <= presaleTokenSupply);
            presaleTokenSold = presaleTokenSold.add(value);
        } else {
            require(crowdsaleTokenSold.add(value) <= crowdsaleTokenSupply);
            crowdsaleTokenSold = crowdsaleTokenSold.add(value);
        }

        balances[recipient] = balances[recipient].add(value);
        Transfer(this, recipient, value);
    }

    //Burns the specified amount of tokens from the team wallet address
    function burn(uint256 _value) public onlyOwner returns (bool) {
        balances[msg.sender] = balances[msg.sender].sub(_value);
        totalSupply = totalSupply.sub(_value);
        Transfer(msg.sender, address(0), _value);
        Burn(msg.sender, _value);
        return true;
    }

    //Allow team to change the recipient multisig address
    function setMultisig(address addr) public onlyOwner {
      	require(addr != address(0));
      	multisig = addr;
        SetMultisig(addr);
    }

    //Allows Team to adjust average blocktime according to network status, 
    //in order to provide more precise timing for ICO phases & lock-up periods
    function setAverageBlockTime(uint256 newBlockTime) public onlyOwner {
        require(newBlockTime > 0);
        averageBlockTime = newBlockTime;
    }

    //Allows Team to adjust basePrice so price of the token has correct correlation to dollar
    function setBasePrice(uint256 newBasePrice) public onlyOwner {
        require(!crowdsaleStarted);
        require(newBasePrice > 0);
        basePrice = newBasePrice;
    }

    function transfer(address _to, uint256 _value) public crowdsaleTransferLock 
    returns(bool) {
        return super.transfer(_to, _value);
    }

    function transferFrom(address _from, address _to, uint256 _value) public 
    crowdsaleTransferLock returns(bool) {
        return super.transferFrom(_from, _to, _value);
    }

    //Price of token in terms of ether.
    function tokenPrice() public constant returns(uint256) {
        uint8 p = phase();
        if (p == 0) return basePrice.mul(50).div(100); //Presale: 50% discount
        if (p == 1) return basePrice.mul(70).div(100); //ICO phase 1: 30% discount
        if (p == 2) return basePrice.mul(75).div(100); //Phase 2 :25% discount
        if (p == 3) return basePrice.mul(80).div(100); //Phase 3: 20% discount
        if (p == 4) return basePrice.mul(85).div(100); //Phase 4: 15% discount
        if (p == 5) return basePrice.mul(90).div(100); //Phase 5: 10% discount
        return basePrice;
    }

    function phase() public constant returns (uint8) {
        if (presaleOn()) return 0;
        if (crowdsaleTokenSold <= phase1Cap && block.number <= phase1EndBlock) return 1;
        if (crowdsaleTokenSold <= phase2Cap && block.number <= phase2EndBlock) return 2;
        if (crowdsaleTokenSold <= phase3Cap && block.number <= phase3EndBlock) return 3;
        if (crowdsaleTokenSold <= phase4Cap && block.number <= phase4EndBlock) return 4;
        if (crowdsaleTokenSold <= crowdsaleTokenSupply && block.number <= phase5EndBlock) return 5;
        return 6;
    }

    function presaleOn() public constant returns (bool) {
        return (presaleStarted && !presaleConcluded && presaleTokenSold < presaleTokenSupply);
    }

    function crowdsaleOn() public constant returns (bool) {
        return (crowdsaleStarted && block.number <= endBlock && crowdsaleTokenSold < crowdsaleTokenSupply);
    }

    function dayToBlockNumber(uint256 dayNum) public constant returns(uint256) {
        return dayNum.mul(86400).div(averageBlockTime); //86400 = 24*60*60 = number of seconds in a day
    }

    function getContributionFromHash(bytes32 contributionHash) public constant returns (
            address contributor,
            address recipient,
            uint256 ethWei,
            uint256 tokens,
            bool resolved,
            bool success
        ) {
        Contribution c = contributions[contributionHash];
        contributor = c.contributor;
        recipient = c.recipient;
        ethWei = c.ethWei;
        tokens = c.tokens;
        resolved = c.resolved;
        success = c.success;
    }

    function getContributionHashes() public constant returns (bytes32[]) {
        return contributionHashes;
    }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"crowdsaleConcluded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"crowdsaleOn","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"presaleStarted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"startPresale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"endBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"recipient","type":"address"}],"name":"proposePlatformWithdrawal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"recipient","type":"address"}],"name":"buyRecipient","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"phase1StartBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardsWithdrawalRecipient","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"crowdsaleTokenSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"presaleOn","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"confirmPlatformWithdrawal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rewardsWithdrawalProposed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"averageBlockTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"recipient","type":"address"}],"name":"withdrawTeamToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"phase5EndBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newBlockTime","type":"uint256"}],"name":"setAverageBlockTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"platformTokenSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"recipient","type":"address"},{"name":"value","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"crowdsaleTokenSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getContributionHashes","outputs":[{"name":"","type":"bytes32[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"multisig","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"contributionHashes","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"phase1EndBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"halt","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ownerCandidate","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"transactionHash","type":"bytes32"}],"name":"acceptContribution","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"transactionHash","type":"bytes32"}],"name":"rejectContribution","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"phase4Cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"phase2EndBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnerTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"crowdsaleStarted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"concludePresale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"cancelRewardsWithdrawal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"concludeCrowdsale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"phase3EndBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"dayNum","type":"uint256"}],"name":"dayToBlockNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"confirmRewardsWithdrawal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"cancelPlatformWithdrawal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"startCrowdsale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"platformWithdrawalRecipient","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"phase","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"proposeNewOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"halted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"transferLockup","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"presaleTokenSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"phase4EndBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"basePrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"teamLockUp","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"platformWithdrawalProposed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unhalt","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"phase2Cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"phase3Cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rewardsTokenSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newBasePrice","type":"uint256"}],"name":"setBasePrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"phase1Cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"presaleConcluded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"contributionHash","type":"bytes32"}],"name":"getContributionFromHash","outputs":[{"name":"contributor","type":"address"},{"name":"recipient","type":"address"},{"name":"ethWei","type":"uint256"},{"name":"tokens","type":"uint256"},{"name":"resolved","type":"bool"},{"name":"success","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"setMultisig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"recipient","type":"address"}],"name":"proposeRewardsWithdrawal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"teamTokenSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"presaleTokenSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_multisig","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[],"name":"Halt","type":"event"},{"anonymous":false,"inputs":[],"name":"Unhalt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"burner","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[],"name":"StartPresale","type":"event"},{"anonymous":false,"inputs":[],"name":"ConcludePresale","type":"event"},{"anonymous":false,"inputs":[],"name":"StartCrowdsale","type":"event"},{"anonymous":false,"inputs":[],"name":"ConcludeCrowdsale","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newMultisig","type":"address"}],"name":"SetMultisig","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"contributionHash","type":"bytes32"},{"indexed":false,"name":"contributor","type":"address"},{"indexed":false,"name":"recipient","type":"address"},{"indexed":false,"name":"ethWei","type":"uint256"},{"indexed":false,"name":"pendingTokens","type":"uint256"}],"name":"ContributionReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"contributionHash","type":"bytes32"},{"indexed":false,"name":"pass","type":"bool"},{"indexed":false,"name":"contributor","type":"address"},{"indexed":false,"name":"recipient","type":"address"},{"indexed":false,"name":"ethWei","type":"uint256"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"ContributionResolved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"originalOwner","type":"address"},{"indexed":false,"name":"currentOwner","type":"address"}],"name":"OwnerTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]

606060405265a5589c6b9000600d55601260ff16600a0a631dcd650002600e556200006860646200004b6014600e54620005396401000000000262004498179091906401000000009004565b6200056f64010000000002620044cb179091906401000000009004565b600f55620000b4606462000097601e600e54620005396401000000000262004498179091906401000000009004565b6200056f64010000000002620044cb179091906401000000009004565b601055620001006064620000e3600f600e54620005396401000000000262004498179091906401000000009004565b6200056f64010000000002620044cb179091906401000000009004565b6011556200014c60646200012f600c600e54620005396401000000000262004498179091906401000000009004565b6200056f64010000000002620044cb179091906401000000009004565b6012556200019860646200017b6017600e54620005396401000000000262004498179091906401000000009004565b6200056f64010000000002620044cb179091906401000000009004565b60135560006014556000601555620001ee6064620001d16032601054620005396401000000000262004498179091906401000000009004565b6200056f64010000000002620044cb179091906401000000009004565b6016556200023a60646200021d603c601054620005396401000000000262004498179091906401000000009004565b6200056f64010000000002620044cb179091906401000000009004565b601755620002866064620002696046601054620005396401000000000262004498179091906401000000009004565b6200056f64010000000002620044cb179091906401000000009004565b601855620002d26064620002b56050601054620005396401000000000262004498179091906401000000009004565b6200056f64010000000002620044cb179091906401000000009004565b601955611680601a556000601c556012601d556000601e60006101000a81548160ff0219169083151502179055506000601e60016101000a81548160ff0219169083151502179055506000601e60026101000a81548160ff0219169083151502179055506000601e60036101000a81548160ff0219169083151502179055506000601e60046101000a81548160ff0219169083151502179055506000601f556000602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000602260146101000a81548160ff0219169083151502179055506000602260156101000a81548160ff0219169083151502179055506000602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000602360146101000a81548160ff0219169083151502179055506000602360156101000a81548160ff02191690831515021790555034156200046d57600080fd5b6040516020806200517f8339810160405280805190602001909190505033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200052c601f6200058b640100000000026200366e176401000000009004565b601b8190555050620005de565b600080828402905060008414806200055c57508284828115156200055957fe5b04145b15156200056557fe5b8091505092915050565b60008082848115156200057e57fe5b0490508091505092915050565b6000620005d7601d54620005ba6201518085620005396401000000000262004498179091906401000000009004565b6200056f64010000000002620044cb179091906401000000009004565b9050919050565b614b9180620005ee6000396000f300606060405260043610610384576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062c988e81461038e57806302dd92c4146103bb57806304549d6f146103e857806304c98b2b1461041557806306fdde031461042a578063083c6323146104b8578063095ea7b3146104e15780630b3af9011461053b57806311a4c71014610574578063145538ea146105a2578063165c86df146105cb57806318160ddd1461062057806319af6f48146106495780631ad874b414610672578063207019671461069f57806321338d1b146106b4578063233dedf1146106e157806323b872dd1461070a578063313ce56714610783578063315a6d65146107b2578063335b7c13146107eb5780633736d853146108145780633fdb705b1461083757806340c10f191461086057806342966c68146108a257806344acb8da146108dd57806345a7b991146109065780634783c35b146109705780634c7b8fba146109c5578063575d462a14610a045780635ed7ca5b14610a2d5780635f504a8214610a425780636380877314610a975780636618846314610abe5780636828d54914610b18578063690c5de814610b3f5780636aa68a1514610b68578063707a7ab314610b9157806370a0823114610ba65780637ff9b59614610bf3578063809ef92f14610c1c57806386517df414610c495780638751775b14610c5e5780638863c8d514610c73578063899ecf2b14610c885780638da5cb5b14610cb15780638f2ec01214610d06578063935814a614610d3d57806395d89b4114610d5257806397ff6d1014610de0578063a39953b214610df5578063a6f2ae3a14610e0a578063a70616de14610e14578063a9059cbb14610e69578063b1c9fe6e14610ec3578063b1f8100d14610ef2578063b9b8af0b14610f2b578063c24fe21b14610f58578063c4fc3a3b14610f81578063c588415e14610faa578063c7876ea414610fd3578063c7c80f0214610ffc578063c974631b14611025578063cb3e64fd14611052578063d73dd62314611067578063d7638b73146110c1578063d8cba7a2146110ea578063da62a24614611113578063dd62ed3e1461113c578063de4b3262146111a8578063e9629d7f146111cb578063e9deb98c146111f4578063eee457f714611221578063f3283fba146112df578063f994789a14611318578063fd17f28914611351578063ff197bc31461137a575b61038c6113a3565b005b341561039957600080fd5b6103a16113ae565b604051808215151515815260200191505060405180910390f35b34156103c657600080fd5b6103ce6113c1565b604051808215151515815260200191505060405180910390f35b34156103f357600080fd5b6103fb6113f5565b604051808215151515815260200191505060405180910390f35b341561042057600080fd5b610428611408565b005b341561043557600080fd5b61043d6114c9565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561047d578082015181840152602081019050610462565b50505050905090810190601f1680156104aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156104c357600080fd5b6104cb611502565b6040518082815260200191505060405180910390f35b34156104ec57600080fd5b610521600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611508565b604051808215151515815260200191505060405180910390f35b341561054657600080fd5b610572600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506115fa565b005b6105a0600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506116d1565b005b34156105ad57600080fd5b6105b5611b12565b6040518082815260200191505060405180910390f35b34156105d657600080fd5b6105de611b18565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561062b57600080fd5b610633611b3e565b6040518082815260200191505060405180910390f35b341561065457600080fd5b61065c611b44565b6040518082815260200191505060405180910390f35b341561067d57600080fd5b610685611b4a565b604051808215151515815260200191505060405180910390f35b34156106aa57600080fd5b6106b2611b89565b005b34156106bf57600080fd5b6106c7611d37565b604051808215151515815260200191505060405180910390f35b34156106ec57600080fd5b6106f4611d4a565b6040518082815260200191505060405180910390f35b341561071557600080fd5b610769600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611d50565b604051808215151515815260200191505060405180910390f35b341561078e57600080fd5b610796611da3565b604051808260ff1660ff16815260200191505060405180910390f35b34156107bd57600080fd5b6107e9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611da8565b005b34156107f657600080fd5b6107fe611fa6565b6040518082815260200191505060405180910390f35b341561081f57600080fd5b6108356004808035906020019091905050611fac565b005b341561084257600080fd5b61084a612021565b6040518082815260200191505060405180910390f35b341561086b57600080fd5b6108a0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612027565b005b34156108ad57600080fd5b6108c36004808035906020019091905050612257565b604051808215151515815260200191505060405180910390f35b34156108e857600080fd5b6108f061243f565b6040518082815260200191505060405180910390f35b341561091157600080fd5b610919612445565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561095c578082015181840152602081019050610941565b505050509050019250505060405180910390f35b341561097b57600080fd5b6109836124a7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109d057600080fd5b6109e660048080359060200190919050506124cd565b60405180826000191660001916815260200191505060405180910390f35b3415610a0f57600080fd5b610a176124f1565b6040518082815260200191505060405180910390f35b3415610a3857600080fd5b610a406124f7565b005b3415610a4d57600080fd5b610a5561259c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610aa257600080fd5b610abc6004808035600019169060200190919050506125c2565b005b3415610ac957600080fd5b610afe600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061297e565b604051808215151515815260200191505060405180910390f35b3415610b2357600080fd5b610b3d600480803560001916906020019091905050612c0f565b005b3415610b4a57600080fd5b610b52612ec0565b6040518082815260200191505060405180910390f35b3415610b7357600080fd5b610b7b612ec6565b6040518082815260200191505060405180910390f35b3415610b9c57600080fd5b610ba4612ecc565b005b3415610bb157600080fd5b610bdd600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613068565b6040518082815260200191505060405180910390f35b3415610bfe57600080fd5b610c066130b1565b6040518082815260200191505060405180910390f35b3415610c2757600080fd5b610c2f613230565b604051808215151515815260200191505060405180910390f35b3415610c5457600080fd5b610c5c613243565b005b3415610c6957600080fd5b610c7161334d565b005b3415610c7e57600080fd5b610c8661343f565b005b3415610c9357600080fd5b610c9b613642565b6040518082815260200191505060405180910390f35b3415610cbc57600080fd5b610cc4613648565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610d1157600080fd5b610d27600480803590602001909190505061366e565b6040518082815260200191505060405180910390f35b3415610d4857600080fd5b610d506136a1565b005b3415610d5d57600080fd5b610d6561384f565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610da5578082015181840152602081019050610d8a565b50505050905090810190601f168015610dd25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610deb57600080fd5b610df3613888565b005b3415610e0057600080fd5b610e0861397a565b005b610e126113a3565b005b3415610e1f57600080fd5b610e27613b17565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610e7457600080fd5b610ea9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050613b3d565b604051808215151515815260200191505060405180910390f35b3415610ece57600080fd5b610ed6613b8e565b604051808260ff1660ff16815260200191505060405180910390f35b3415610efd57600080fd5b610f29600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613c62565b005b3415610f3657600080fd5b610f3e613d98565b604051808215151515815260200191505060405180910390f35b3415610f6357600080fd5b610f6b613dab565b6040518082815260200191505060405180910390f35b3415610f8c57600080fd5b610f94613db1565b6040518082815260200191505060405180910390f35b3415610fb557600080fd5b610fbd613db7565b6040518082815260200191505060405180910390f35b3415610fde57600080fd5b610fe6613dbd565b6040518082815260200191505060405180910390f35b341561100757600080fd5b61100f613dc3565b6040518082815260200191505060405180910390f35b341561103057600080fd5b611038613dc9565b604051808215151515815260200191505060405180910390f35b341561105d57600080fd5b611065613ddc565b005b341561107257600080fd5b6110a7600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050613e81565b604051808215151515815260200191505060405180910390f35b34156110cc57600080fd5b6110d461407d565b6040518082815260200191505060405180910390f35b34156110f557600080fd5b6110fd614083565b6040518082815260200191505060405180910390f35b341561111e57600080fd5b611126614089565b6040518082815260200191505060405180910390f35b341561114757600080fd5b611192600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061408f565b6040518082815260200191505060405180910390f35b34156111b357600080fd5b6111c96004808035906020019091905050614116565b005b34156111d657600080fd5b6111de6141a7565b6040518082815260200191505060405180910390f35b34156111ff57600080fd5b6112076141ad565b604051808215151515815260200191505060405180910390f35b341561122c57600080fd5b6112466004808035600019169060200190919050506141c0565b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018315151515815260200182151515158152602001965050505050505060405180910390f35b34156112ea57600080fd5b611316600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050614276565b005b341561132357600080fd5b61134f600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506143b5565b005b341561135c57600080fd5b61136461448c565b6040518082815260200191505060405180910390f35b341561138557600080fd5b61138d614492565b6040518082815260200191505060405180910390f35b6113ac336116d1565b565b601e60039054906101000a900460ff1681565b6000601e60029054906101000a900460ff1680156113e15750600c544311155b80156113f05750601054601554105b905090565b601e60009054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561146457600080fd5b601e60009054906101000a900460ff1615151561148057600080fd5b6001601e60006101000a81548160ff0219169083151502179055507fd1cca6fe4d5aee03a8d044728a03c4ddae5db4b5b972a6485d78a168fd6e852460405160405180910390a1565b6040805190810160405280600581526020017f526570755800000000000000000000000000000000000000000000000000000081525081565b600c5481565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561165657600080fd5b602260159054906101000a900460ff1615151561167257600080fd5b80602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001602260146101000a81548160ff02191690831515021790555050565b6000806000601e60049054906101000a900460ff161515156116f257600080fd5b60003411151561170157600080fd5b611709611b4a565b8061171857506117176113c1565b5b151561172357600080fd5b61175661172e6130b1565b611748601260ff16600a0a3461449890919063ffffffff16565b6144cb90919063ffffffff16565b925060009150611764611b4a565b156117ae57600f54611781846014546144e690919063ffffffff16565b1115151561178e57600080fd5b6117a3836014546144e690919063ffffffff16565b6014819055506117f3565b6010546117c6846015546144e690919063ffffffff16565b111515156117d357600080fd5b6117e8836015546144e690919063ffffffff16565b601581905550600191505b6118096001601f546144e690919063ffffffff16565b601f81905550601f5433346000365a433a604051808981526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018781526020018686808284378201915050848152602001838152602001828152602001985050505050505050506040518091039020905060e0604051908101604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020013481526020018481526020016000151581526020016000151581526020018360ff1681525060216000836000191660001916815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003015560808201518160040160006101000a81548160ff02191690831515021790555060a08201518160040160016101000a81548160ff02191690831515021790555060c08201518160040160026101000a81548160ff021916908360ff16021790555090505060208054806001018281611a3a9190614b00565b9160005260206000209001600083909190915090600019169055507fff0c5a4b2effdcf75368a7b8cb608675e273cbd755505bf9e1a837e9701bd89e81338634876040518086600019166000191681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019550505050505060405180910390a150505050565b60065481565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b60155481565b6000601e60009054906101000a900460ff168015611b755750601e60019054906101000a900460ff16155b8015611b845750600f54601454105b905090565b602260159054906101000a900460ff16151515611ba557600080fd5b602260149054906101000a900460ff161515611bc057600080fd5b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c1c57600080fd5b6001602260156101000a81548160ff021916908315150217905550611c8b601354600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144e690919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6013546040518082815260200191505060405180910390a3565b602360149054906101000a900460ff1681565b601d5481565b6000601e60029054906101000a900460ff168015611d845750611d80601a54600c546144e690919063ffffffff16565b4310155b1515611d8f57600080fd5b611d9a848484614504565b90509392505050565b601281565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e0657600080fd5b601e60029054906101000a900460ff161515611e2157600080fd5b6024601c54101515611e3257600080fd5b611e70611e5f611e4e6001601c546144e690919063ffffffff16565b601b5461449890919063ffffffff16565b600c546144e690919063ffffffff16565b4310151515611e7e57600080fd5b601c60008154809291906001019190505550611ea660246012546144cb90919063ffffffff16565b9050611efa81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144e690919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600b5481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561200857600080fd5b60008111151561201757600080fd5b80601d8190555050565b60135481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561208357600080fd5b60008111151561209257600080fd5b601e60009054906101000a900460ff1680156120bb5750601e60039054906101000a900460ff16155b15156120c657600080fd5b6120ce611b4a565b1561211857600f546120eb826014546144e690919063ffffffff16565b111515156120f857600080fd5b61210d816014546144e690919063ffffffff16565b601481905550612159565b601054612130826015546144e690919063ffffffff16565b1115151561213d57600080fd5b612152816015546144e690919063ffffffff16565b6015819055505b6121ab81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144e690919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156122b557600080fd5b61230782600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148c390919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061235f82600e546148c390919063ffffffff16565b600e81905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a37fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca53383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a160019050919050565b60105481565b61244d614b2c565b602080548060200260200160405190810160405280929190818152602001828054801561249d57602002820191906000526020600020905b81546000191681526020019060010190808311612485575b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6020818154811015156124dc57fe5b90600052602060002090016000915090505481565b60075481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561255357600080fd5b6001601e60046101000a81548160ff0219169083151502179055507fa8d1ea886eaf8bd3d113c770bf7af546123c70e235b0d036ff752d5e920a7b5660405160405180910390a1565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561262057600080fd5b60216000836000191660001916815260200190815260200160002090508060040160009054906101000a900460ff1615151561265b57600080fd5b60018160040160006101000a81548160ff02191690831515021790555060018160040160016101000a81548160ff02191690831515021790555061270f8160030154600160008460010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144e690919063ffffffff16565b600160008360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc82600201549081150290604051600060405180830381858888f1935050505015156127d957fe5b8060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83600301546040518082815260200191505060405180910390a37f83711c709923be4ac11f3793650dc879f27f832eb4831a15f7c7eaefecdca2608260018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168460010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685600201548660030154604051808760001916600019168152602001861515151581526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001965050505050505060405180910390a15050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831115612a8f576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b23565b612aa283826148c390919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c6d57600080fd5b60216000836000191660001916815260200190815260200160002090508060040160009054906101000a900460ff16151515612ca857600080fd5b60018160040160006101000a81548160ff02191690831515021790555060008160040160016101000a81548160ff02191690831515021790555060008160040160029054906101000a900460ff1660ff161415612d2357612d1881600301546014546148c390919063ffffffff16565b601481905550612d43565b612d3c81600301546015546148c390919063ffffffff16565b6015819055505b8060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc82600201549081150290604051600060405180830381858888f193505050501515612da857fe5b7f83711c709923be4ac11f3793650dc879f27f832eb4831a15f7c7eaefecdca2608260008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168460010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685600201548660030154604051808760001916600019168152602001861515151581526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001965050505050505060405180910390a15050565b60195481565b60085481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612f2857600080fd5b7f5327f96e1b66776c2f90adb141c8f65efa8dd259adb405009213276527cbf69a600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000806130bc613b8e565b905060008160ff1614156130fa576130f360646130e56032600d5461449890919063ffffffff16565b6144cb90919063ffffffff16565b915061322c565b60018160ff1614156131365761312f60646131216046600d5461449890919063ffffffff16565b6144cb90919063ffffffff16565b915061322c565b60028160ff1614156131725761316b606461315d604b600d5461449890919063ffffffff16565b6144cb90919063ffffffff16565b915061322c565b60038160ff1614156131ae576131a760646131996050600d5461449890919063ffffffff16565b6144cb90919063ffffffff16565b915061322c565b60048160ff1614156131ea576131e360646131d56055600d5461449890919063ffffffff16565b6144cb90919063ffffffff16565b915061322c565b60058160ff1614156132265761321f6064613211605a600d5461449890919063ffffffff16565b6144cb90919063ffffffff16565b915061322c565b600d5491505b5090565b601e60029054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561329f57600080fd5b601e60009054906101000a900460ff1680156132c85750601e60019054906101000a900460ff16155b15156132d357600080fd5b6001601e60016101000a81548160ff021916908315150217905550613319613308601454600f546148c390919063ffffffff16565b6010546144e690919063ffffffff16565b6010819055507fb528945f9f8d6e631c43589e01dda0ae94be16ce2ed59fe5d804143fc67d6eb560405160405180910390a1565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156133a957600080fd5b602360159054906101000a900460ff161515156133c557600080fd5b602360149054906101000a900460ff1615156133e057600080fd5b6000602360146101000a81548160ff0219169083151502179055506000602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561349d57600080fd5b601e60029054906101000a900460ff1680156134be57506134bc6113c1565b155b80156134d75750601e60039054906101000a900460ff16155b15156134e257600080fd5b6001601e60036101000a81548160ff02191690831515021790555043600c8190555061351b6015546010546148c390919063ffffffff16565b905060008111156136135761353b81600e546148c390919063ffffffff16565b600e819055507fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca53082604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1600073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b7f0ca69ffaa24f7585a46a230e239f637d8aab90db504f53ac8e60515d75ee065e60405160405180910390a150565b60095481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061369a601d5461368c620151808561449890919063ffffffff16565b6144cb90919063ffffffff16565b9050919050565b602360159054906101000a900460ff161515156136bd57600080fd5b602360149054906101000a900460ff1615156136d857600080fd5b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561373457600080fd5b6001602360156101000a81548160ff0219169083151502179055506137a3601154600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144e690919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6011546040518082815260200191505060405180910390a3565b6040805190810160405280600581526020017f524550555800000000000000000000000000000000000000000000000000000081525081565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156138e457600080fd5b602260159054906101000a900460ff1615151561390057600080fd5b602260149054906101000a900460ff16151561391b57600080fd5b6000602260146101000a81548160ff0219169083151502179055506000602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156139d657600080fd5b601e60019054906101000a900460ff1680156139ff5750601e60029054906101000a900460ff16155b1515613a0a57600080fd5b6001601e60026101000a81548160ff02191690831515021790555043600681905550613a4a613a39600761366e565b6006546144e690919063ffffffff16565b600781905550613a6e613a5d600661366e565b6007546144e690919063ffffffff16565b600881905550613a92613a81600661366e565b6008546144e690919063ffffffff16565b600981905550613ab6613aa5600661366e565b6009546144e690919063ffffffff16565b600a81905550613ada613ac9600661366e565b600a546144e690919063ffffffff16565b600b81905550600b54600c819055507fc7a327262dbe9cd2bf3282d035e03d69a2b73561e7dcc74caa29f84ee3b9ab6d60405160405180910390a1565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601e60029054906101000a900460ff168015613b715750613b6d601a54600c546144e690919063ffffffff16565b4310155b1515613b7c57600080fd5b613b8683836148dc565b905092915050565b6000613b98611b4a565b15613ba65760009050613c5f565b60165460155411158015613bbc57506007544311155b15613bca5760019050613c5f565b60175460155411158015613be057506008544311155b15613bee5760029050613c5f565b60185460155411158015613c0457506009544311155b15613c125760039050613c5f565b60195460155411158015613c285750600a544311155b15613c365760049050613c5f565b60105460155411158015613c4c5750600b544311155b15613c5a5760059050613c5f565b600690505b90565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613cbe57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015613d495750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515613d5457600080fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601e60049054906101000a900460ff1681565b601a5481565b600f5481565b600a5481565b600d5481565b601b5481565b602260149054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613e3857600080fd5b6000601e60046101000a81548160ff0219169083151502179055507f6426a220e8910820230d4f2e29cc2bee7c13058ff2524cbcc4d823ba49aa2f6660405160405180910390a1565b6000613f1282600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144e690919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b60175481565b60185481565b60115481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561417257600080fd5b601e60029054906101000a900460ff1615151561418e57600080fd5b60008111151561419d57600080fd5b80600d8190555050565b60165481565b601e60019054906101000a900460ff1681565b600080600080600080600060216000896000191660001916815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1696508060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16955080600201549450806003015493508060040160009054906101000a900460ff1692508060040160019054906101000a900460ff1691505091939550919395565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156142d257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561430e57600080fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f8921d9ed49fbcd5da840617d62bf35c34f4871caaf7bbfef6da589dd8c2c1f3881604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561441157600080fd5b602360159054906101000a900460ff1615151561442d57600080fd5b80602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001602360146101000a81548160ff02191690831515021790555050565b60125481565b60145481565b600080828402905060008414806144b957508284828115156144b657fe5b04145b15156144c157fe5b8091505092915050565b60008082848115156144d957fe5b0490508091505092915050565b60008082840190508381101515156144fa57fe5b8091505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561454157600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561458f57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561461a57600080fd5b61466c82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148c390919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061470182600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144e690919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506147d382600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148c390919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60008282111515156148d157fe5b818303905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561491957600080fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561496757600080fd5b6149b982600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148c390919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a4e82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144e690919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b815481835581811511614b2757818360005260206000209182019101614b269190614b40565b5b505050565b602060405190810160405280600081525090565b614b6291905b80821115614b5e576000816000905550600101614b46565b5090565b905600a165627a7a72305820876a49e7475e45a5a65cfe52b59fe90b6291c72614a428157e61518c8c4a0b3e00290000000000000000000000008cae32c636385a14b4e0a0e68a760facfabbcd9c

Deployed Bytecode

0x606060405260043610610384576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062c988e81461038e57806302dd92c4146103bb57806304549d6f146103e857806304c98b2b1461041557806306fdde031461042a578063083c6323146104b8578063095ea7b3146104e15780630b3af9011461053b57806311a4c71014610574578063145538ea146105a2578063165c86df146105cb57806318160ddd1461062057806319af6f48146106495780631ad874b414610672578063207019671461069f57806321338d1b146106b4578063233dedf1146106e157806323b872dd1461070a578063313ce56714610783578063315a6d65146107b2578063335b7c13146107eb5780633736d853146108145780633fdb705b1461083757806340c10f191461086057806342966c68146108a257806344acb8da146108dd57806345a7b991146109065780634783c35b146109705780634c7b8fba146109c5578063575d462a14610a045780635ed7ca5b14610a2d5780635f504a8214610a425780636380877314610a975780636618846314610abe5780636828d54914610b18578063690c5de814610b3f5780636aa68a1514610b68578063707a7ab314610b9157806370a0823114610ba65780637ff9b59614610bf3578063809ef92f14610c1c57806386517df414610c495780638751775b14610c5e5780638863c8d514610c73578063899ecf2b14610c885780638da5cb5b14610cb15780638f2ec01214610d06578063935814a614610d3d57806395d89b4114610d5257806397ff6d1014610de0578063a39953b214610df5578063a6f2ae3a14610e0a578063a70616de14610e14578063a9059cbb14610e69578063b1c9fe6e14610ec3578063b1f8100d14610ef2578063b9b8af0b14610f2b578063c24fe21b14610f58578063c4fc3a3b14610f81578063c588415e14610faa578063c7876ea414610fd3578063c7c80f0214610ffc578063c974631b14611025578063cb3e64fd14611052578063d73dd62314611067578063d7638b73146110c1578063d8cba7a2146110ea578063da62a24614611113578063dd62ed3e1461113c578063de4b3262146111a8578063e9629d7f146111cb578063e9deb98c146111f4578063eee457f714611221578063f3283fba146112df578063f994789a14611318578063fd17f28914611351578063ff197bc31461137a575b61038c6113a3565b005b341561039957600080fd5b6103a16113ae565b604051808215151515815260200191505060405180910390f35b34156103c657600080fd5b6103ce6113c1565b604051808215151515815260200191505060405180910390f35b34156103f357600080fd5b6103fb6113f5565b604051808215151515815260200191505060405180910390f35b341561042057600080fd5b610428611408565b005b341561043557600080fd5b61043d6114c9565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561047d578082015181840152602081019050610462565b50505050905090810190601f1680156104aa5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156104c357600080fd5b6104cb611502565b6040518082815260200191505060405180910390f35b34156104ec57600080fd5b610521600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611508565b604051808215151515815260200191505060405180910390f35b341561054657600080fd5b610572600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506115fa565b005b6105a0600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506116d1565b005b34156105ad57600080fd5b6105b5611b12565b6040518082815260200191505060405180910390f35b34156105d657600080fd5b6105de611b18565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561062b57600080fd5b610633611b3e565b6040518082815260200191505060405180910390f35b341561065457600080fd5b61065c611b44565b6040518082815260200191505060405180910390f35b341561067d57600080fd5b610685611b4a565b604051808215151515815260200191505060405180910390f35b34156106aa57600080fd5b6106b2611b89565b005b34156106bf57600080fd5b6106c7611d37565b604051808215151515815260200191505060405180910390f35b34156106ec57600080fd5b6106f4611d4a565b6040518082815260200191505060405180910390f35b341561071557600080fd5b610769600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611d50565b604051808215151515815260200191505060405180910390f35b341561078e57600080fd5b610796611da3565b604051808260ff1660ff16815260200191505060405180910390f35b34156107bd57600080fd5b6107e9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611da8565b005b34156107f657600080fd5b6107fe611fa6565b6040518082815260200191505060405180910390f35b341561081f57600080fd5b6108356004808035906020019091905050611fac565b005b341561084257600080fd5b61084a612021565b6040518082815260200191505060405180910390f35b341561086b57600080fd5b6108a0600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612027565b005b34156108ad57600080fd5b6108c36004808035906020019091905050612257565b604051808215151515815260200191505060405180910390f35b34156108e857600080fd5b6108f061243f565b6040518082815260200191505060405180910390f35b341561091157600080fd5b610919612445565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561095c578082015181840152602081019050610941565b505050509050019250505060405180910390f35b341561097b57600080fd5b6109836124a7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109d057600080fd5b6109e660048080359060200190919050506124cd565b60405180826000191660001916815260200191505060405180910390f35b3415610a0f57600080fd5b610a176124f1565b6040518082815260200191505060405180910390f35b3415610a3857600080fd5b610a406124f7565b005b3415610a4d57600080fd5b610a5561259c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610aa257600080fd5b610abc6004808035600019169060200190919050506125c2565b005b3415610ac957600080fd5b610afe600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061297e565b604051808215151515815260200191505060405180910390f35b3415610b2357600080fd5b610b3d600480803560001916906020019091905050612c0f565b005b3415610b4a57600080fd5b610b52612ec0565b6040518082815260200191505060405180910390f35b3415610b7357600080fd5b610b7b612ec6565b6040518082815260200191505060405180910390f35b3415610b9c57600080fd5b610ba4612ecc565b005b3415610bb157600080fd5b610bdd600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613068565b6040518082815260200191505060405180910390f35b3415610bfe57600080fd5b610c066130b1565b6040518082815260200191505060405180910390f35b3415610c2757600080fd5b610c2f613230565b604051808215151515815260200191505060405180910390f35b3415610c5457600080fd5b610c5c613243565b005b3415610c6957600080fd5b610c7161334d565b005b3415610c7e57600080fd5b610c8661343f565b005b3415610c9357600080fd5b610c9b613642565b6040518082815260200191505060405180910390f35b3415610cbc57600080fd5b610cc4613648565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610d1157600080fd5b610d27600480803590602001909190505061366e565b6040518082815260200191505060405180910390f35b3415610d4857600080fd5b610d506136a1565b005b3415610d5d57600080fd5b610d6561384f565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610da5578082015181840152602081019050610d8a565b50505050905090810190601f168015610dd25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415610deb57600080fd5b610df3613888565b005b3415610e0057600080fd5b610e0861397a565b005b610e126113a3565b005b3415610e1f57600080fd5b610e27613b17565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610e7457600080fd5b610ea9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050613b3d565b604051808215151515815260200191505060405180910390f35b3415610ece57600080fd5b610ed6613b8e565b604051808260ff1660ff16815260200191505060405180910390f35b3415610efd57600080fd5b610f29600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613c62565b005b3415610f3657600080fd5b610f3e613d98565b604051808215151515815260200191505060405180910390f35b3415610f6357600080fd5b610f6b613dab565b6040518082815260200191505060405180910390f35b3415610f8c57600080fd5b610f94613db1565b6040518082815260200191505060405180910390f35b3415610fb557600080fd5b610fbd613db7565b6040518082815260200191505060405180910390f35b3415610fde57600080fd5b610fe6613dbd565b6040518082815260200191505060405180910390f35b341561100757600080fd5b61100f613dc3565b6040518082815260200191505060405180910390f35b341561103057600080fd5b611038613dc9565b604051808215151515815260200191505060405180910390f35b341561105d57600080fd5b611065613ddc565b005b341561107257600080fd5b6110a7600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050613e81565b604051808215151515815260200191505060405180910390f35b34156110cc57600080fd5b6110d461407d565b6040518082815260200191505060405180910390f35b34156110f557600080fd5b6110fd614083565b6040518082815260200191505060405180910390f35b341561111e57600080fd5b611126614089565b6040518082815260200191505060405180910390f35b341561114757600080fd5b611192600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061408f565b6040518082815260200191505060405180910390f35b34156111b357600080fd5b6111c96004808035906020019091905050614116565b005b34156111d657600080fd5b6111de6141a7565b6040518082815260200191505060405180910390f35b34156111ff57600080fd5b6112076141ad565b604051808215151515815260200191505060405180910390f35b341561122c57600080fd5b6112466004808035600019169060200190919050506141c0565b604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018315151515815260200182151515158152602001965050505050505060405180910390f35b34156112ea57600080fd5b611316600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050614276565b005b341561132357600080fd5b61134f600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506143b5565b005b341561135c57600080fd5b61136461448c565b6040518082815260200191505060405180910390f35b341561138557600080fd5b61138d614492565b6040518082815260200191505060405180910390f35b6113ac336116d1565b565b601e60039054906101000a900460ff1681565b6000601e60029054906101000a900460ff1680156113e15750600c544311155b80156113f05750601054601554105b905090565b601e60009054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561146457600080fd5b601e60009054906101000a900460ff1615151561148057600080fd5b6001601e60006101000a81548160ff0219169083151502179055507fd1cca6fe4d5aee03a8d044728a03c4ddae5db4b5b972a6485d78a168fd6e852460405160405180910390a1565b6040805190810160405280600581526020017f526570755800000000000000000000000000000000000000000000000000000081525081565b600c5481565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561165657600080fd5b602260159054906101000a900460ff1615151561167257600080fd5b80602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001602260146101000a81548160ff02191690831515021790555050565b6000806000601e60049054906101000a900460ff161515156116f257600080fd5b60003411151561170157600080fd5b611709611b4a565b8061171857506117176113c1565b5b151561172357600080fd5b61175661172e6130b1565b611748601260ff16600a0a3461449890919063ffffffff16565b6144cb90919063ffffffff16565b925060009150611764611b4a565b156117ae57600f54611781846014546144e690919063ffffffff16565b1115151561178e57600080fd5b6117a3836014546144e690919063ffffffff16565b6014819055506117f3565b6010546117c6846015546144e690919063ffffffff16565b111515156117d357600080fd5b6117e8836015546144e690919063ffffffff16565b601581905550600191505b6118096001601f546144e690919063ffffffff16565b601f81905550601f5433346000365a433a604051808981526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018781526020018686808284378201915050848152602001838152602001828152602001985050505050505050506040518091039020905060e0604051908101604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020013481526020018481526020016000151581526020016000151581526020018360ff1681525060216000836000191660001916815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003015560808201518160040160006101000a81548160ff02191690831515021790555060a08201518160040160016101000a81548160ff02191690831515021790555060c08201518160040160026101000a81548160ff021916908360ff16021790555090505060208054806001018281611a3a9190614b00565b9160005260206000209001600083909190915090600019169055507fff0c5a4b2effdcf75368a7b8cb608675e273cbd755505bf9e1a837e9701bd89e81338634876040518086600019166000191681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019550505050505060405180910390a150505050565b60065481565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b60155481565b6000601e60009054906101000a900460ff168015611b755750601e60019054906101000a900460ff16155b8015611b845750600f54601454105b905090565b602260159054906101000a900460ff16151515611ba557600080fd5b602260149054906101000a900460ff161515611bc057600080fd5b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c1c57600080fd5b6001602260156101000a81548160ff021916908315150217905550611c8b601354600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144e690919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6013546040518082815260200191505060405180910390a3565b602360149054906101000a900460ff1681565b601d5481565b6000601e60029054906101000a900460ff168015611d845750611d80601a54600c546144e690919063ffffffff16565b4310155b1515611d8f57600080fd5b611d9a848484614504565b90509392505050565b601281565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e0657600080fd5b601e60029054906101000a900460ff161515611e2157600080fd5b6024601c54101515611e3257600080fd5b611e70611e5f611e4e6001601c546144e690919063ffffffff16565b601b5461449890919063ffffffff16565b600c546144e690919063ffffffff16565b4310151515611e7e57600080fd5b601c60008154809291906001019190505550611ea660246012546144cb90919063ffffffff16565b9050611efa81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144e690919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600b5481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561200857600080fd5b60008111151561201757600080fd5b80601d8190555050565b60135481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561208357600080fd5b60008111151561209257600080fd5b601e60009054906101000a900460ff1680156120bb5750601e60039054906101000a900460ff16155b15156120c657600080fd5b6120ce611b4a565b1561211857600f546120eb826014546144e690919063ffffffff16565b111515156120f857600080fd5b61210d816014546144e690919063ffffffff16565b601481905550612159565b601054612130826015546144e690919063ffffffff16565b1115151561213d57600080fd5b612152816015546144e690919063ffffffff16565b6015819055505b6121ab81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144e690919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156122b557600080fd5b61230782600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148c390919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061235f82600e546148c390919063ffffffff16565b600e81905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a37fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca53383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a160019050919050565b60105481565b61244d614b2c565b602080548060200260200160405190810160405280929190818152602001828054801561249d57602002820191906000526020600020905b81546000191681526020019060010190808311612485575b5050505050905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6020818154811015156124dc57fe5b90600052602060002090016000915090505481565b60075481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561255357600080fd5b6001601e60046101000a81548160ff0219169083151502179055507fa8d1ea886eaf8bd3d113c770bf7af546123c70e235b0d036ff752d5e920a7b5660405160405180910390a1565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561262057600080fd5b60216000836000191660001916815260200190815260200160002090508060040160009054906101000a900460ff1615151561265b57600080fd5b60018160040160006101000a81548160ff02191690831515021790555060018160040160016101000a81548160ff02191690831515021790555061270f8160030154600160008460010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144e690919063ffffffff16565b600160008360010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc82600201549081150290604051600060405180830381858888f1935050505015156127d957fe5b8060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83600301546040518082815260200191505060405180910390a37f83711c709923be4ac11f3793650dc879f27f832eb4831a15f7c7eaefecdca2608260018360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168460010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685600201548660030154604051808760001916600019168152602001861515151581526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001965050505050505060405180910390a15050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905080831115612a8f576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b23565b612aa283826148c390919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c6d57600080fd5b60216000836000191660001916815260200190815260200160002090508060040160009054906101000a900460ff16151515612ca857600080fd5b60018160040160006101000a81548160ff02191690831515021790555060008160040160016101000a81548160ff02191690831515021790555060008160040160029054906101000a900460ff1660ff161415612d2357612d1881600301546014546148c390919063ffffffff16565b601481905550612d43565b612d3c81600301546015546148c390919063ffffffff16565b6015819055505b8060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc82600201549081150290604051600060405180830381858888f193505050501515612da857fe5b7f83711c709923be4ac11f3793650dc879f27f832eb4831a15f7c7eaefecdca2608260008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168460010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685600201548660030154604051808760001916600019168152602001861515151581526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001965050505050505060405180910390a15050565b60195481565b60085481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612f2857600080fd5b7f5327f96e1b66776c2f90adb141c8f65efa8dd259adb405009213276527cbf69a600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000806130bc613b8e565b905060008160ff1614156130fa576130f360646130e56032600d5461449890919063ffffffff16565b6144cb90919063ffffffff16565b915061322c565b60018160ff1614156131365761312f60646131216046600d5461449890919063ffffffff16565b6144cb90919063ffffffff16565b915061322c565b60028160ff1614156131725761316b606461315d604b600d5461449890919063ffffffff16565b6144cb90919063ffffffff16565b915061322c565b60038160ff1614156131ae576131a760646131996050600d5461449890919063ffffffff16565b6144cb90919063ffffffff16565b915061322c565b60048160ff1614156131ea576131e360646131d56055600d5461449890919063ffffffff16565b6144cb90919063ffffffff16565b915061322c565b60058160ff1614156132265761321f6064613211605a600d5461449890919063ffffffff16565b6144cb90919063ffffffff16565b915061322c565b600d5491505b5090565b601e60029054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561329f57600080fd5b601e60009054906101000a900460ff1680156132c85750601e60019054906101000a900460ff16155b15156132d357600080fd5b6001601e60016101000a81548160ff021916908315150217905550613319613308601454600f546148c390919063ffffffff16565b6010546144e690919063ffffffff16565b6010819055507fb528945f9f8d6e631c43589e01dda0ae94be16ce2ed59fe5d804143fc67d6eb560405160405180910390a1565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156133a957600080fd5b602360159054906101000a900460ff161515156133c557600080fd5b602360149054906101000a900460ff1615156133e057600080fd5b6000602360146101000a81548160ff0219169083151502179055506000602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561349d57600080fd5b601e60029054906101000a900460ff1680156134be57506134bc6113c1565b155b80156134d75750601e60039054906101000a900460ff16155b15156134e257600080fd5b6001601e60036101000a81548160ff02191690831515021790555043600c8190555061351b6015546010546148c390919063ffffffff16565b905060008111156136135761353b81600e546148c390919063ffffffff16565b600e819055507fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca53082604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1600073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b7f0ca69ffaa24f7585a46a230e239f637d8aab90db504f53ac8e60515d75ee065e60405160405180910390a150565b60095481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061369a601d5461368c620151808561449890919063ffffffff16565b6144cb90919063ffffffff16565b9050919050565b602360159054906101000a900460ff161515156136bd57600080fd5b602360149054906101000a900460ff1615156136d857600080fd5b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561373457600080fd5b6001602360156101000a81548160ff0219169083151502179055506137a3601154600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144e690919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6011546040518082815260200191505060405180910390a3565b6040805190810160405280600581526020017f524550555800000000000000000000000000000000000000000000000000000081525081565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156138e457600080fd5b602260159054906101000a900460ff1615151561390057600080fd5b602260149054906101000a900460ff16151561391b57600080fd5b6000602260146101000a81548160ff0219169083151502179055506000602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156139d657600080fd5b601e60019054906101000a900460ff1680156139ff5750601e60029054906101000a900460ff16155b1515613a0a57600080fd5b6001601e60026101000a81548160ff02191690831515021790555043600681905550613a4a613a39600761366e565b6006546144e690919063ffffffff16565b600781905550613a6e613a5d600661366e565b6007546144e690919063ffffffff16565b600881905550613a92613a81600661366e565b6008546144e690919063ffffffff16565b600981905550613ab6613aa5600661366e565b6009546144e690919063ffffffff16565b600a81905550613ada613ac9600661366e565b600a546144e690919063ffffffff16565b600b81905550600b54600c819055507fc7a327262dbe9cd2bf3282d035e03d69a2b73561e7dcc74caa29f84ee3b9ab6d60405160405180910390a1565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601e60029054906101000a900460ff168015613b715750613b6d601a54600c546144e690919063ffffffff16565b4310155b1515613b7c57600080fd5b613b8683836148dc565b905092915050565b6000613b98611b4a565b15613ba65760009050613c5f565b60165460155411158015613bbc57506007544311155b15613bca5760019050613c5f565b60175460155411158015613be057506008544311155b15613bee5760029050613c5f565b60185460155411158015613c0457506009544311155b15613c125760039050613c5f565b60195460155411158015613c285750600a544311155b15613c365760049050613c5f565b60105460155411158015613c4c5750600b544311155b15613c5a5760059050613c5f565b600690505b90565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613cbe57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015613d495750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515613d5457600080fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601e60049054906101000a900460ff1681565b601a5481565b600f5481565b600a5481565b600d5481565b601b5481565b602260149054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515613e3857600080fd5b6000601e60046101000a81548160ff0219169083151502179055507f6426a220e8910820230d4f2e29cc2bee7c13058ff2524cbcc4d823ba49aa2f6660405160405180910390a1565b6000613f1282600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144e690919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b60175481565b60185481565b60115481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561417257600080fd5b601e60029054906101000a900460ff1615151561418e57600080fd5b60008111151561419d57600080fd5b80600d8190555050565b60165481565b601e60019054906101000a900460ff1681565b600080600080600080600060216000896000191660001916815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1696508060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16955080600201549450806003015493508060040160009054906101000a900460ff1692508060040160019054906101000a900460ff1691505091939550919395565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156142d257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561430e57600080fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f8921d9ed49fbcd5da840617d62bf35c34f4871caaf7bbfef6da589dd8c2c1f3881604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561441157600080fd5b602360159054906101000a900460ff1615151561442d57600080fd5b80602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001602360146101000a81548160ff02191690831515021790555050565b60125481565b60145481565b600080828402905060008414806144b957508284828115156144b657fe5b04145b15156144c157fe5b8091505092915050565b60008082848115156144d957fe5b0490508091505092915050565b60008082840190508381101515156144fa57fe5b8091505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561454157600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561458f57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561461a57600080fd5b61466c82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148c390919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061470182600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144e690919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506147d382600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148c390919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60008282111515156148d157fe5b818303905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561491957600080fd5b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561496757600080fd5b6149b982600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546148c390919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614a4e82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546144e690919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b815481835581811511614b2757818360005260206000209182019101614b269190614b40565b5b505050565b602060405190810160405280600081525090565b614b6291905b80821115614b5e576000816000905550600101614b46565b5090565b905600a165627a7a72305820876a49e7475e45a5a65cfe52b59fe90b6291c72614a428157e61518c8c4a0b3e0029

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

0000000000000000000000008cae32c636385a14b4e0a0e68a760facfabbcd9c

-----Decoded View---------------
Arg [0] : _multisig (address): 0x8CaE32C636385A14b4E0A0e68a760FaCfabBCd9c

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000008cae32c636385a14b4e0a0e68a760facfabbcd9c


Swarm Source

bzzr://876a49e7475e45a5a65cfe52b59fe90b6291c72614a428157e61518c8c4a0b3e

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.