ETH Price: $1,962.73 (+0.77%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Sweep69607742018-12-27 7:16:572623 days ago1545895017IN
0x7547Eaeb...731006E2b
0 ETH0.000091453
Withdraw66273852018-11-02 3:29:312678 days ago1541129371IN
0x7547Eaeb...731006E2b
0 ETH0.001270999
Withdraw66111982018-10-30 11:33:482681 days ago1540899228IN
0x7547Eaeb...731006E2b
0 ETH0.000535933.79500015
Withdraw66095652018-10-30 5:10:482681 days ago1540876248IN
0x7547Eaeb...731006E2b
0 ETH0.000330725
Withdraw66095612018-10-30 5:09:332681 days ago1540876173IN
0x7547Eaeb...731006E2b
0 ETH0.000330725
Withdraw66095562018-10-30 5:08:492681 days ago1540876129IN
0x7547Eaeb...731006E2b
0 ETH0.000556115
Withdraw66094722018-10-30 4:52:002681 days ago1540875120IN
0x7547Eaeb...731006E2b
0 ETH0.001135999
Withdraw66094652018-10-30 4:49:592681 days ago1540874999IN
0x7547Eaeb...731006E2b
0 ETH0.000504884
Withdraw66094502018-10-30 4:46:392681 days ago1540874799IN
0x7547Eaeb...731006E2b
0 ETH0.000564884
Withdraw66094372018-10-30 4:43:072681 days ago1540874587IN
0x7547Eaeb...731006E2b
0 ETH0.000847336
Withdraw66094342018-10-30 4:42:422681 days ago1540874562IN
0x7547Eaeb...731006E2b
0 ETH0.000631115
Withdraw66094172018-10-30 4:37:312681 days ago1540874251IN
0x7547Eaeb...731006E2b
0 ETH0.000555785
Buy From Wallet66094112018-10-30 4:35:482681 days ago1540874148IN
0x7547Eaeb...731006E2b
0.1 ETH0.000338243
Buy From Wallet66087232018-10-30 1:50:312681 days ago1540864231IN
0x7547Eaeb...731006E2b
1.5 ETH0.004340259
Buy From Wallet66059362018-10-29 14:59:102681 days ago1540825150IN
0x7547Eaeb...731006E2b
2.3 ETH0.001514746
Reg Refcode66052742018-10-29 12:29:002681 days ago1540816140IN
0x7547Eaeb...731006E2b
0.01 ETH0.00015455
Buy From Wallet66050552018-10-29 11:37:232682 days ago1540813043IN
0x7547Eaeb...731006E2b
1 ETH0.001997336
Reg Refcode66046782018-10-29 10:02:192682 days ago1540807339IN
0x7547Eaeb...731006E2b
0.01 ETH0.000743479
Buy From Wallet66043012018-10-29 8:35:262682 days ago1540802126IN
0x7547Eaeb...731006E2b
0.5 ETH0.001962728
Buy From Wallet66042962018-10-29 8:34:192682 days ago1540802059IN
0x7547Eaeb...731006E2b
0.5 ETH0.0035369
Buy From Wallet66042752018-10-29 8:29:312682 days ago1540801771IN
0x7547Eaeb...731006E2b
0.1 ETH0.001688
Reg Refcode66041172018-10-29 7:51:362682 days ago1540799496IN
0x7547Eaeb...731006E2b
0.01 ETH0.000423425
Buy From Wallet66041162018-10-29 7:51:072682 days ago1540799467IN
0x7547Eaeb...731006E2b
0.1 ETH0.002731418.65625
Reg Refcode66040732018-10-29 7:40:402682 days ago1540798840IN
0x7547Eaeb...731006E2b
0.01 ETH0.00068265
Reg Refcode66040092018-10-29 7:23:462682 days ago1540797826IN
0x7547Eaeb...731006E2b
0.01 ETH0.000277539
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
-69607742018-12-27 7:16:572623 days ago1545895017
0x7547Eaeb...731006E2b
0.13548748 ETH
Transfer66273852018-11-02 3:29:312678 days ago1541129371
0x7547Eaeb...731006E2b
0.14862293 ETH
Transfer66111982018-10-30 11:33:482681 days ago1540899228
0x7547Eaeb...731006E2b
0.5405155 ETH
Transfer66095562018-10-30 5:08:492681 days ago1540876129
0x7547Eaeb...731006E2b
0.33319457 ETH
Transfer66094722018-10-30 4:52:002681 days ago1540875120
0x7547Eaeb...731006E2b
1.79614456 ETH
Transfer66094652018-10-30 4:49:592681 days ago1540874999
0x7547Eaeb...731006E2b
0.59966664 ETH
Transfer66094502018-10-30 4:46:392681 days ago1540874799
0x7547Eaeb...731006E2b
5.09607956 ETH
Transfer66094372018-10-30 4:43:072681 days ago1540874587
0x7547Eaeb...731006E2b
0.06297161 ETH
Transfer66094342018-10-30 4:42:422681 days ago1540874562
0x7547Eaeb...731006E2b
0.89962947 ETH
Transfer66094172018-10-30 4:37:312681 days ago1540874251
0x7547Eaeb...731006E2b
0.63568764 ETH
Transfer66087232018-10-30 1:50:312681 days ago1540864231
0x7547Eaeb...731006E2b
0.165 ETH
Transfer66059362018-10-29 14:59:102681 days ago1540825150
0x7547Eaeb...731006E2b
0.46 ETH
Transfer66052742018-10-29 12:29:002681 days ago1540816140
0x7547Eaeb...731006E2b
0.01 ETH
Transfer66050552018-10-29 11:37:232682 days ago1540813043
0x7547Eaeb...731006E2b
0.08 ETH
Transfer66046782018-10-29 10:02:192682 days ago1540807339
0x7547Eaeb...731006E2b
0.01 ETH
Transfer66043012018-10-29 8:35:262682 days ago1540802126
0x7547Eaeb...731006E2b
0.04 ETH
Transfer66042962018-10-29 8:34:192682 days ago1540802059
0x7547Eaeb...731006E2b
0.04 ETH
Transfer66041162018-10-29 7:51:072682 days ago1540799467
0x7547Eaeb...731006E2b
0.011 ETH
Transfer66040092018-10-29 7:23:462682 days ago1540797826
0x7547Eaeb...731006E2b
0.01 ETH
Transfer66039572018-10-29 7:13:002682 days ago1540797180
0x7547Eaeb...731006E2b
0.11 ETH
Transfer66039422018-10-29 7:09:252682 days ago1540796965
0x7547Eaeb...731006E2b
0.022 ETH
Transfer66039202018-10-29 7:04:032682 days ago1540796643
0x7547Eaeb...731006E2b
0.011 ETH
Transfer66038432018-10-29 6:45:032682 days ago1540795503
0x7547Eaeb...731006E2b
0.011 ETH
Transfer66037172018-10-29 6:15:442682 days ago1540793744
0x7547Eaeb...731006E2b
0.011 ETH
Transfer66036832018-10-29 6:06:462682 days ago1540793206
0x7547Eaeb...731006E2b
0.44 ETH
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x19CB2f6F...7D5Bd13A8
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
Game

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-10-24
*/

pragma solidity ^0.4.24;


contract Game{
  using ShareCalc for uint256;
  using SafeMath for *;
  uint256 constant private weight0 = 1;
  uint256 constant private weight1 = 1;  
  uint256 constant private refcodeFee = 1e16;
  uint256 constant private phasePerStage = 4;
  uint256 constant private maxStage = 10;
  Entrepreneur.Company public gameState;  
  mapping (bytes32 => address) public refcode2Addr;

  mapping (address => Entrepreneur.Player) public players;    
  address foundationAddr = 0x52E9e51e2519e9D8e5D68D992958e7D1bD4e5899;
  uint256 constant private phaseLen  = 11 hours;
  uint256 constant private growthTarget    = 110; 
  uint256 constant private lockup = 2 ;
  uint256 constant private sweepDelay = 30 days;
  Entrepreneur.Allocation rate = Entrepreneur.Allocation(50,9,3,2,6,30);
  mapping (uint256 => Entrepreneur.Phase) public phases;
  mapping (uint256 => mapping (address => uint256)) public phase_player_origShare; 
  mapping (uint256 =>mapping (uint256 => mapping (address => uint256))) public stage_prod_player_origShare;
  mapping (uint256 =>mapping (uint256 => mapping (address => uint256))) public stage_prod_player_cdps;
  mapping (uint256 =>mapping (uint256 => mapping (address => uint256))) public stage_prod_player_cbps;
  mapping (uint256 =>mapping (uint256 =>  uint256)) public phase_prod_Share;
  mapping (uint256 =>mapping (uint256 =>  uint256)) public stage_prod_currShare;
  mapping (uint256 =>mapping (uint256 =>  uint256)) public stage_prod_origShare;
  mapping (uint256 =>mapping (uint256 =>  uint256)) public stage_prod_cdps;
  mapping (uint256 =>mapping (uint256 =>  uint256)) public stage_prod_cbps;
  mapping (address =>mapping (uint256=>  bytes32)) public player_id_refCode;
  modifier isHuman() { 
    require(msg.sender == tx.origin, "Humans only");
    _;
  }
  modifier ethLimit(uint256 _eth) { 
    require(_eth >= 1e16, "0.01ETH min");
    require(_eth <= 1e20, "100ETH max");
    _;    
  }
  constructor () public {
    gameState.stage=1;
    gameState.phase=1;
    phases[gameState.phase].ethGoal=10*1e18;
    phases[gameState.phase].shareGoal=(gameState.eth).sharesRec(phases[gameState.phase].ethGoal);            
    phases[gameState.phase].stage=1;    
  }
  string public gameName = "Entrepreneur";
  function checkRefcode(address playerAddr,uint256 id)
    public 
    view
    returns(bytes32)
  {
    return player_id_refCode[playerAddr][id];
  }
  function accruedDiv (address playerAddr)
    public 
    view 
    returns (uint256)
  {
    uint256 div=0;
    for(uint i=1;i<=gameState.stage;i++){
      for(uint j=0;j<2;j++){
        div=(stage_prod_cdps[i][j].sub(stage_prod_player_cdps[i][j][playerAddr]).mul(stage_prod_player_origShare[i][j][playerAddr])/1e18).add(div);        
      }
    }
    return div;
  }
  function accruedBuyout (address playerAddr)
    public
    view 
    returns (uint256)
  {
    if(gameState.stage<=lockup)
      return 0;
    uint256 buyoutEth=0;
      for(uint i=1;i<=gameState.stage.sub(lockup);i++){
        buyoutEth=buyoutEth.add((stage_prod_cbps[i][0].sub(stage_prod_player_cbps[i][0][playerAddr])).mul(stage_prod_player_origShare[i][0][playerAddr])/1e18);        
      }
    return buyoutEth;
  }
  function potShare(address playerAddr)
    private
    view
    returns (uint256)
  {
    uint256 weightedShare=phase_player_origShare[gameState.phase][playerAddr].mul(weight0);
    if(gameState.phase>1){
      weightedShare=weightedShare.add(phase_player_origShare[gameState.phase-1][playerAddr].mul(weight1));                  
    }
    return weightedShare;        
  }
  function accruedLiq(address playerAddr) 
    private 
    view 
    returns (uint256)
  {
    if(gameState.ended>0 && !players[playerAddr].redeemed )
    {                                          
      return (gameState.lps).mul(potShare(playerAddr))/1e18;      
    }      
    return 0;
  }
  function currShares(address playerAddr)
    private
    view
    returns(uint256)
  {
    uint256 _shares;
    for(uint i=1;i<=gameState.stage;i++){
      for(uint j=0;j<2;j++){
        if(stage_prod_origShare[i][j]>0)
          _shares=_shares.add(stage_prod_player_origShare[i][j][playerAddr].mul(stage_prod_currShare[i][j])/stage_prod_origShare[i][j]);        
      }
    }
    return _shares;
  }
  function getState() 
    public 
    view 
    returns (
      uint256,
      uint256,
      uint256,
      uint256,
      uint256,
      uint256,
      uint256,
      uint256,
      uint256,
      uint256
    )
  {
    uint256 phase=gameState.phase;
    uint256 end;
    uint256 ethGoal;
    uint256 eth;  
    uint256 stage=gameState.stage;
    if(phases[phase].end!=0 && now > phases[phase].end && phases[phase].shares>=phases[phase].shareGoal && gameState.ended==0){
      end=phases[phase].end.add(phaseLen);      
      ethGoal=phases[phase].eth.mul(growthTarget)/100;
      phase++;
      stage=(phase-1)/phasePerStage+1;                  
    }else{
      end=phases[phase].end;
      ethGoal=phases[phase].ethGoal;
      eth=phases[phase].eth;
    }
    return (
      gameState.pot, 
      gameState.origShares,
      gameState.plyrCount,
      phase,
      end,
      ethGoal,
      eth,
      stage,
      gameState.eth,
      gameState.currShares
      );    
  }
  // function getState2() 
  //   public 
  //   view 
  //   returns (
  //     uint256 pot,
  //     uint256 origShares,
  //     uint256 plyrCount,
  //     uint256 phase,
  //     uint256 end,
  //     uint256 phaseEthGoal,
  //     uint256 phaseEth,
  //     uint256 stage,
  //     uint256 totalEth,
  //     uint256 totalCurrShares
  //   )
  // {
  //   phase=gameState.phase;            
  //   stage=gameState.stage;
  //   if(phases[phase].end!=0 && now > phases[phase].end && phases[phase].shares>=phases[phase].shareGoal && gameState.ended==0){
  //     end=phases[phase].end.add(phaseLen);      
  //     phaseEthGoal=phases[phase].eth.mul(growthTarget)/100;
  //     phase++;
  //     stage=(phase-1)/phasePerStage+1;                  
  //   }else{
  //     end=phases[phase].end;
  //     phaseEthGoal=phases[phase].ethGoal;
  //     phaseEth=phases[phase].eth;
  //   }
  //   pot=gameState.pot;
  //   origShares=gameState.origShares;
  //   plyrCount=gameState.plyrCount;
  //   totalEth=gameState.eth;
  //   totalCurrShares=gameState.currShares;
  //   return (
  //     pot, 
  //     origShares,
  //     plyrCount,
  //     phase,
  //     end,
  //     phaseEthGoal,
  //     phaseEth,
  //     stage,
  //     totalEth,
  //     totalCurrShares
  //     );    
  // }
  function phaseAddtlInfo(uint256 phase)
    public 
    view
    returns(      
      uint256,
      uint256,
      uint256,
      uint256
    )
  { 
    uint256 growth;
    if(phase==1)
      growth=0;
    else
      growth=phases[phase].eth.mul(10000)/phases[phase.sub(1)].eth;
    uint256 stage;    
    uint256 ethGoal;          
    if(phase == gameState.phase + 1 && phases[gameState.phase].end!=0 && phases[gameState.phase].shares>=phases[gameState.phase].shareGoal && now > phases[gameState.phase].end){
      stage=(phase-1)/phasePerStage+1;            
      ethGoal=phases[gameState.phase].eth.mul(growthTarget)/100;
    }else{
      stage=phases[phase].stage;      
      ethGoal=phases[phase].ethGoal;
    }
    return(
      stage,      
      phases[phase].eth,
      ethGoal,      
      growth
    );
  }
  function getPlayerIncome(address playerAddr) 
    public 
    view 
    returns (      
      uint256,
      uint256,
      uint256,
      uint256
      )
  {     
    return (     
      players[playerAddr].redeemedDiv.add(accruedDiv(playerAddr)),      
      players[playerAddr].redeemedRef,
      players[playerAddr].redeemedBuyout.add(accruedBuyout(playerAddr)),
      players[playerAddr].redeemedLiq.add(accruedLiq(playerAddr)));
  }
  
  function getPlayerVault(address playerAddr) 
    public 
    view 
    returns (            
      uint256,
      uint256,
      uint256,
      uint256
      )
  { 
    uint256 shares=currShares(playerAddr);
    return (            
      totalBal(playerAddr),
      shares,
      potShare(playerAddr),
      (gameState.origShares).ethRec(shares));
  }
  function totalBal(address playerAddr)
    public 
    view 
    returns(uint256)
  {
    uint256 div = accruedDiv(playerAddr);  
    uint256 liq = accruedLiq(playerAddr);
    uint256 buyout=accruedBuyout(playerAddr);
    return players[playerAddr].bal.add(div).add(liq).add(buyout);
  }

  function _register(address playerAddr,address ref) 
    private
  {
    if(players[playerAddr].id>0)
      return;
    if(players[ref].id==0 || ref==playerAddr)
      ref=address(0);
    players[playerAddr].id=++gameState.plyrCount;
    players[playerAddr].ref=ref;
    players[ref].apprentice1++;
    address ref2=players[ref].ref;
    if(ref2 != address(0)){
      players[ref2].apprentice2++;
      address ref3=players[ref2].ref;
      if(ref3 != address(0)){
        players[ref3].apprentice3++;
      }
    }    
  }
  function _register2(address playerAddr,bytes32 refcode)
    private
  {
    _register(playerAddr,refcode2Addr[refcode]);
  }

  function endGame() 
    private 
    returns (uint256)
  {
    if(gameState.ended>0){
      return gameState.ended;
    }      
    if(now > phases[gameState.phase].end){
      if(phases[gameState.phase].shares>=phases[gameState.phase].shareGoal)
      {
        uint256 nextPhase=gameState.phase+1;
        if(gameState.phase % phasePerStage == 0){          
          if(gameState.stage+1>maxStage){
            gameState.ended=2;            
          }else{
            gameState.stage++;            
          }
        }     
        if(gameState.ended==0){
          phases[nextPhase].stage=gameState.stage;
          phases[nextPhase].end=phases[gameState.phase].end.add(phaseLen);      
          phases[nextPhase].ethGoal=phases[gameState.phase].eth.mul(growthTarget)/100;
          phases[nextPhase].shareGoal=(gameState.eth).sharesRec(phases[nextPhase].ethGoal);
          gameState.phase=nextPhase;        
          if(now > phases[gameState.phase].end){
            gameState.ended=1;
          }                
        }        
      }else{
        gameState.ended=1;                
      }      
    }
    if(gameState.ended>0){
      uint256 weightedShare=phases[gameState.phase].shares.mul(weight0);
      if(gameState.phase>1){
        weightedShare=weightedShare.add(phases[gameState.phase-1].shares.mul(weight1));                        
      }        
      gameState.lps=(gameState.pot).mul(1e18)/weightedShare;
      gameState.pot=0;
    }
    return gameState.ended;      
  }
  function calcBuyout(uint256 shares) 
    public
    view
    returns(uint256)
  { 
    if(gameState.stage<=lockup)
      return 0;
    uint256 buyoutShares;

    if(phases[gameState.phase].shares.add(shares)>phases[gameState.phase].shareGoal){
      buyoutShares=phases[gameState.phase].shares.add(shares).sub(phases[gameState.phase].shareGoal);
    }
    if(buyoutShares>shares){
      buyoutShares=shares;
    }
    if(buyoutShares > stage_prod_currShare[gameState.stage.sub(lockup)][0]){
      buyoutShares= stage_prod_currShare[gameState.stage.sub(lockup)][0];
    }
    return buyoutShares;
  }
  function minRedeem(address playerAddr,uint256 stage,uint256 prodId)
    public
  {     
    uint256 div= (stage_prod_cdps[stage][prodId].sub(stage_prod_player_cdps[stage][prodId][playerAddr])).mul(stage_prod_player_origShare[stage][prodId][playerAddr])/1e18;      
    stage_prod_player_cdps[stage][prodId][playerAddr]=stage_prod_cdps[stage][prodId];
    players[playerAddr].bal=div.add(players[playerAddr].bal);
    players[playerAddr].redeemedDiv=div.add(players[playerAddr].redeemedDiv);    
  }
  function redeem(address playerAddr) 
    public
  {
    uint256 liq=0;
    if(gameState.ended>0 && !players[playerAddr].redeemed){
      liq=accruedLiq(playerAddr);      
      players[playerAddr].redeemed=true;
    }

    uint256 div=0;
    for(uint i=1;i<=gameState.stage;i++){
      for(uint j=0;j<2;j++){
        div=div.add((stage_prod_cdps[i][j].sub(stage_prod_player_cdps[i][j][playerAddr])).mul(stage_prod_player_origShare[i][j][playerAddr])/1e18);
        stage_prod_player_cdps[i][j][playerAddr]=stage_prod_cdps[i][j];
      }
    }      
    
    uint256 buyoutEth=0;
    if(gameState.stage>lockup){
      for(i=1;i<=gameState.stage.sub(lockup);i++){
        buyoutEth=buyoutEth.add((stage_prod_cbps[i][0].sub(stage_prod_player_cbps[i][0][playerAddr])).mul(stage_prod_player_origShare[i][0][playerAddr])/1e18);
        stage_prod_player_cbps[i][0][playerAddr]=stage_prod_cbps[i][0];
      }
    }    
    players[playerAddr].bal=liq.add(div).add(buyoutEth).add(players[playerAddr].bal);
    players[playerAddr].redeemedLiq=players[playerAddr].redeemedLiq.add(liq);
    players[playerAddr].redeemedDiv=players[playerAddr].redeemedDiv.add(div);
    players[playerAddr].redeemedBuyout=players[playerAddr].redeemedBuyout.add(buyoutEth);
  }    
  
  function payRef(address playerAddr,uint256 eth) 
    private
  {
    uint256 foundationAmt=eth.mul(rate.foundation)/100;
    uint256 ref1Amt=eth.mul(rate.ref1)/100;
    uint256 ref2Amt=eth.mul(rate.ref2)/100;
    uint256 ref3Amt=eth.mul(rate.ref3)/100;
    address ref1= players[playerAddr].ref;
    if(ref1 != address(0)){
      players[ref1].bal=ref1Amt.add(players[ref1].bal);
      players[ref1].redeemedRef=ref1Amt.add(players[ref1].redeemedRef);
      address ref2=players[ref1].ref;
      if(ref2 != address(0)){
        players[ref2].bal=ref2Amt.add(players[ref2].bal);
        players[ref2].redeemedRef=ref2Amt.add(players[ref2].redeemedRef);
        address ref3=players[ref2].ref;
        if(ref3 != address(0)){
          players[ref3].bal=ref3Amt.add(players[ref3].bal);
          players[ref3].redeemedRef=ref3Amt.add(players[ref3].redeemedRef);
        }else{
          foundationAmt=foundationAmt.add(ref3Amt);    
        }        
      }else{
        foundationAmt=foundationAmt.add(ref3Amt).add(ref2Amt);    
      }        
    }else{
      foundationAmt=foundationAmt.add(ref3Amt).add(ref2Amt).add(ref1Amt);    
    }            
    foundationAddr.transfer(foundationAmt);  
  }
  function updateDps(uint256 div) 
    private
  {
    uint256 dps=div.mul(1e18)/gameState.currShares;  
    for(uint i = 1; i <= gameState.stage; i++){
      for(uint j=0;j<=1;j++){
        if(stage_prod_origShare[i][j]>0){
          stage_prod_cdps[i][j]=(dps.mul(stage_prod_currShare[i][j])/stage_prod_origShare[i][j]).add(stage_prod_cdps[i][j]);     
        }        
      }
    }    
  }  
  function _buy(address playerAddr, uint256 eth, uint256 prodId) 
    ethLimit(eth)
    private      
  {
    if(prodId>1)
      prodId=1;
    if(players[playerAddr].id==0)
      _register(playerAddr,address(0));      
    minRedeem(playerAddr,gameState.stage,prodId);
    require(players[playerAddr].bal >= eth,"insufficient fund");        
    if(eth>0 && phases[gameState.phase].end==0)
      phases[gameState.phase].end=now.add(phaseLen);
    if(endGame()>0)
      return;
    uint256 stage=gameState.stage;
    uint256 phase=gameState.phase;
    players[playerAddr].bal=(players[playerAddr].bal).sub(eth);    
    uint256 shares=(gameState.eth).sharesRec(eth);
    uint256 buyout = calcBuyout(shares);            
    uint256 newShare=shares.sub(buyout);    
    uint256 newShareEth=(gameState.origShares).ethRec(newShare);
    uint256 buyoutEth=eth.sub(newShareEth);    
    if(buyout>0){
      uint256 buyoutStage=stage.sub(lockup);
      stage_prod_currShare[buyoutStage][0]=stage_prod_currShare[buyoutStage][0].sub(buyout);                  
      stage_prod_cbps[buyoutStage][0]=(stage_prod_cbps[buyoutStage][0]).add(buyoutEth.mul(rate.pot).mul(1e18)/100/stage_prod_origShare[buyoutStage][0]);
    }    
        
    gameState.origShares = shares.add(gameState.origShares);
    gameState.currShares=newShare.add(gameState.currShares);
    gameState.eth = eth.add(gameState.eth);
    phases[phase].shares=shares.add(phases[phase].shares);    
    phases[phase].eth=eth.add(phases[phase].eth);    
    stage_prod_origShare[stage][prodId]=shares.add(stage_prod_origShare[stage][prodId]);
    stage_prod_currShare[stage][prodId]=stage_prod_origShare[stage][prodId];
    
    players[playerAddr].origShares=shares.add(players[playerAddr].origShares);
    stage_prod_player_origShare[stage][prodId][playerAddr]=shares.add(stage_prod_player_origShare[stage][prodId][playerAddr]);
    phase_player_origShare[phase][playerAddr]=shares.add(phase_player_origShare[phase][playerAddr]);
    
    updateDps(eth.mul(rate.div)/100);            
    payRef(playerAddr,eth);    
    gameState.pot=gameState.pot.add(newShareEth.mul(rate.pot)/100);        
  }
  function sweep()
    public
  {
    if(gameState.ended>0 && now > sweepDelay + phases[gameState.phase].end)
      foundationAddr.transfer(address(this).balance);
  }

  function register(address ref)
    isHuman()
    public
  {
    _register(msg.sender,ref);
  }

  function recharge()    
    public 
    payable
  {
    players[msg.sender].bal=(players[msg.sender].bal).add(msg.value);
  }

  function withdraw() 
    isHuman()
    public 
  {
    redeem(msg.sender);
    uint256 _bal = players[msg.sender].bal;            
    players[msg.sender].bal=0;    
    msg.sender.transfer(_bal);
  }
  function buyFromWallet(uint256 prodId,bytes32 refCode) 
    isHuman()    
    public 
    payable
  {
    _register2(msg.sender, refCode);
    players[msg.sender].bal=(players[msg.sender].bal).add(msg.value);        
    _buy(msg.sender,msg.value,prodId);
  }

  function regRefcode(bytes32 refcode)
    public 
    payable
    returns (bool)
  {
    _register2(msg.sender, "");
    if(msg.value<refcodeFee || refcode2Addr[refcode]!=address(0)){
      msg.sender.transfer(msg.value);
      return false;
    }
    refcode2Addr[refcode]=msg.sender;
    
    players[msg.sender].numRefcodes=players[msg.sender].numRefcodes.add(1);
    player_id_refCode[msg.sender][players[msg.sender].numRefcodes]=refcode;
    return true;  
  }

  function buyFromBal(uint256 eth,uint256 prodId,bytes32 refCode)    
    isHuman()
    public
  {
    _register2(msg.sender, refCode);
    redeem(msg.sender);
    _buy(msg.sender,eth,prodId);
  }

  function getEthNeeded(uint256 keysCount) public view returns(uint256) {
    uint256 ethCount=(gameState.origShares).ethRec(keysCount);

    return ethCount;
  }
}

library Entrepreneur {
  struct Player {    
    uint256 origShares;       
    uint256 bal;    
    bool redeemed;
    uint256 id;
    address ref;
    uint256 redeemedDiv;    
    uint256 redeemedRef;
    uint256 redeemedBuyout;
    uint256 redeemedLiq;
    uint256 apprentice1;
    uint256 apprentice2;
    uint256 apprentice3;
    uint256 numRefcodes;
  }
    
  struct Company {    
    uint256 eth;    
    uint256 pot;    
    uint256 origShares;
    uint256 currShares;
    uint256 lps;
    uint256 ended;
    uint256 plyrCount;
    uint256 phase;
    uint256 stage;  
  }  

  struct Phase{ 
    uint256 stage;
    uint256 end; 
    uint256 shareGoal; 
    uint256 shares; 
    uint256 eth;
    uint256 ethGoal;    
  }

  struct Allocation {
    uint256 div;  
    uint256 ref1;
    uint256 ref2;
    uint256 ref3;
    uint256 foundation;   
    uint256 pot;    
  }  
}

library ShareCalc {
  using SafeMath for *;
  /**
    * @dev calculates number of share received given X eth 
    * @param _curEth current amount of eth in contract 
    * @param _newEth eth being spent
    * @return amount of Share purchased
    */
  function sharesRec(uint256 _curEth, uint256 _newEth)
      internal
      pure
      returns (uint256)
  {
    return(shares((_curEth).add(_newEth)).sub(shares(_curEth)));
  }
  
  /**
    * @dev calculates amount of eth received if you sold X share 
    * @param _curShares current amount of shares that exist 
    * @param _sellShares amount of shares you wish to sell
    * @return amount of eth received
    */
  function ethRec(uint256 _curShares, uint256 _sellShares)
      internal
      pure
      returns (uint256)
  {
    return(eth(_curShares.add(_sellShares)).sub(eth(_curShares)));
  }

  /**
    * @dev calculates how many shares would exist with given an amount of eth
    * @param _eth eth "in contract"
    * @return number of shares that would exist
    */
  function shares(uint256 _eth) 
      internal
      pure
      returns(uint256)
  {
    // old
    // return ((((((_eth).mul(1000000000000000000)).mul(46675600000000000000000000)).add(49018761795600000000000000000000000000000000000000000000000000)).sqrt()).sub(7001340000000000000000000000000)) / (23337800);
    // new
    return ((((((_eth).mul(1000000000000000000)).mul(466756000000000000000000)).add(49018761795600000000000000000000000000000000000000000000000000)).sqrt()).sub(7001340000000000000000000000000)) / (233378);
  }
  
  /**
    * @dev calculates how much eth would be in contract given a number of shares
    * @param _shares number of shares "in contract" 
    * @return eth that would exists
    */
  function eth(uint256 _shares) 
      internal
      pure
      returns(uint256)  
  {
    // old
    // return ((11668900).mul(_shares.sq()).add(((14002680000000).mul(_shares.mul(1000000000000000000))) / (2))) / ((1000000000000000000).sq());
    // new
    return ((116689).mul(_shares.sq()).add(((14002680000000).mul(_shares.mul(1000000000000000000))) / (2))) / ((1000000000000000000).sq());
  }
}

library SafeMath {
    
  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 a, uint256 b) 
      internal 
      pure 
      returns (uint256 c) 
  {
    if (a == 0) {
      return 0;
    }
    c = a * b;
    require(c / a == b, "SafeMath mul failed");
    return c;
  }

  /**
  * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b)
      internal
      pure
      returns (uint256) 
  {
    require(b <= a, "SafeMath sub failed");
    return a - b;
  }

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint256 a, uint256 b)
      internal
      pure
      returns (uint256 c) 
  {
    c = a + b;
    require(c >= a, "SafeMath add failed");
    return c;
  }
  
  /**
    * @dev gives square root of given x.
    */
  function sqrt(uint256 x)
      internal
      pure
      returns (uint256 y) 
  {
    uint256 z = ((add(x,1)) / 2);
    y = x;
    while (z < y) 
    {
      y = z;
      z = ((add((x / z),z)) / 2);
    }
  }
  
  /**
    * @dev gives square. multiplies x by x
    */
  function sq(uint256 x)
      internal
      pure
      returns (uint256)
  {
    return (mul(x,x));
  }
  
  /**
    * @dev x to the power of y 
    */
  function pwr(uint256 x, uint256 y)
      internal 
      pure 
      returns (uint256)
  {
    if (x==0)
        return (0);
    else if (y==0)
        return (1);
    else 
    {
      uint256 z = x;
      for (uint256 i = 1; i < y; i++)
        z = mul(z,x);
      return (z);
    }
  }
}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[{"name":"playerAddr","type":"address"}],"name":"accruedDiv","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getState","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"playerAddr","type":"address"}],"name":"accruedBuyout","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"phases","outputs":[{"name":"stage","type":"uint256"},{"name":"end","type":"uint256"},{"name":"shareGoal","type":"uint256"},{"name":"shares","type":"uint256"},{"name":"eth","type":"uint256"},{"name":"ethGoal","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"refcode2Addr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"player_id_refCode","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"playerAddr","type":"address"}],"name":"getPlayerVault","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"shares","type":"uint256"}],"name":"calcBuyout","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"sweep","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"playerAddr","type":"address"}],"name":"totalBal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"phase","type":"uint256"}],"name":"phaseAddtlInfo","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"ref","type":"address"}],"name":"register","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"gameName","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"recharge","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"refcode","type":"bytes32"}],"name":"regRefcode","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"stage_prod_cdps","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"phase_player_origShare","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"playerAddr","type":"address"},{"name":"id","type":"uint256"}],"name":"checkRefcode","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"phase_prod_Share","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"playerAddr","type":"address"},{"name":"stage","type":"uint256"},{"name":"prodId","type":"uint256"}],"name":"minRedeem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"stage_prod_currShare","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"keysCount","type":"uint256"}],"name":"getEthNeeded","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"stage_prod_player_cdps","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"playerAddr","type":"address"}],"name":"redeem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"stage_prod_player_origShare","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"stage_prod_cbps","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gameState","outputs":[{"name":"eth","type":"uint256"},{"name":"pot","type":"uint256"},{"name":"origShares","type":"uint256"},{"name":"currShares","type":"uint256"},{"name":"lps","type":"uint256"},{"name":"ended","type":"uint256"},{"name":"plyrCount","type":"uint256"},{"name":"phase","type":"uint256"},{"name":"stage","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"prodId","type":"uint256"},{"name":"refCode","type":"bytes32"}],"name":"buyFromWallet","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"stage_prod_player_cbps","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"players","outputs":[{"name":"origShares","type":"uint256"},{"name":"bal","type":"uint256"},{"name":"redeemed","type":"bool"},{"name":"id","type":"uint256"},{"name":"ref","type":"address"},{"name":"redeemedDiv","type":"uint256"},{"name":"redeemedRef","type":"uint256"},{"name":"redeemedBuyout","type":"uint256"},{"name":"redeemedLiq","type":"uint256"},{"name":"apprentice1","type":"uint256"},{"name":"apprentice2","type":"uint256"},{"name":"apprentice3","type":"uint256"},{"name":"numRefcodes","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"stage_prod_origShare","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"eth","type":"uint256"},{"name":"prodId","type":"uint256"},{"name":"refCode","type":"bytes32"}],"name":"buyFromBal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"playerAddr","type":"address"}],"name":"getPlayerIncome","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"}]

0x60806040527352e9e51e2519e9d8e5d68d992958e7d1bd4e5899600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060c0604051908101604052806032815260200160098152602001600381526020016002815260200160068152602001601e815250600c600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015550506040805190810160405280600c81526020017f456e7472657072656e6575720000000000000000000000000000000000000000815250601d90805190602001906200011a9291906200059b565b503480156200012857600080fd5b5060016000600801819055506001600060070181905550678ac7230489e80000601260008060070154815260200190815260200160002060050181905550620001a76012600080600701548152602001908152602001600020600501546000800154620001eb6401000000000262004428179091906401000000009004565b60126000806007015481526020019081526020016000206002018190555060016012600080600701548152602001908152602001600020600001819055506200064a565b6000620002646200020b846200026c640100000000026401000000009004565b62000247620002328587620003646401000000000262002f2b179091906401000000009004565b6200026c640100000000026401000000009004565b620003ed6401000000000262002e02179091906401000000009004565b905092915050565b600062038fa2620003526c585e8cb5bb7bab2d3e7c000000620003356200031b791e8123a893b1fa92b99695340490aca0aed84c10000000000000620002fe6962d6e4b9dcb992900000620002e1670de0b6b3a76400008b620004736401000000000262002e87179091906401000000009004565b620004736401000000000262002e87179091906401000000009004565b620003646401000000000262002f2b179091906401000000009004565b6200051b6401000000000262004d91176401000000009004565b620003ed6401000000000262002e02179091906401000000009004565b8115156200035c57fe5b049050919050565b60008183019050828110151515620003e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f536166654d61746820616464206661696c65640000000000000000000000000081525060200191505060405180910390fd5b80905092915050565b600082821115151562000468576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f536166654d61746820737562206661696c65640000000000000000000000000081525060200191505060405180910390fd5b818303905092915050565b60008083141562000488576000905062000515565b81830290508183828115156200049a57fe5b0414151562000511576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f536166654d617468206d756c206661696c65640000000000000000000000000081525060200191505060405180910390fd5b8090505b92915050565b60008060026200053c84600162000364640100000000026401000000009004565b8115156200054657fe5b0490508291505b81811015620005955780915060026200058282858115156200056b57fe5b048362000364640100000000026401000000009004565b8115156200058c57fe5b0490506200054d565b50919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620005de57805160ff19168380011785556200060f565b828001600101855582156200060f579182015b828111156200060e578251825591602001919060010190620005f1565b5b5090506200061e919062000622565b5090565b6200064791905b808211156200064357600081600090555060010162000629565b5090565b90565b614e16806200065a6000396000f3006080604052600436106101ac576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630641d812146101b15780631865c57d14610208578063253515d5146102725780632e37eef6146102c95780632f19c2c11461032d5780632fae38491461039e57806330e73c7614610407578063358fa6c61461047357806335faa416146104b45780633658964c146104cb5780633ccfd60b146105225780633ed4c4c8146105395780634420e4861461058f578063473bc223146105d25780634cddae28146106625780635b48c11b1461066c5780635e0e5b9f146106a8578063773c6dfa146106f35780637a070cba1461075457806380ecc02c146107bd5780638916cbc6146108085780638f56054d1461085f5780639248d4ec146108aa5780639530311e146108eb57806395a2251f14610956578063b1ec676214610999578063bbb0729614610a04578063d1f9c24d14610a4f578063d500f86114610ab2578063d85ef95e14610ae0578063e2eb41ff14610b4b578063e8a915ad14610c26578063fe2506a414610c71578063feca4ef114610cb6575b600080fd5b3480156101bd57600080fd5b506101f2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d22565b6040518082815260200191505060405180910390f35b34801561021457600080fd5b5061021d610ea4565b604051808b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019a505050505050505050505060405180910390f35b34801561027e57600080fd5b506102b3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061106d565b6040518082815260200191505060405180910390f35b3480156102d557600080fd5b506102f4600480360381019080803590602001909291905050506111fe565b60405180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390f35b34801561033957600080fd5b5061035c600480360381019080803560001916906020019092919050505061123a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103aa57600080fd5b506103e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061126d565b60405180826000191660001916815260200191505060405180910390f35b34801561041357600080fd5b50610448600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611292565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b34801561047f57600080fd5b5061049e600480360381019080803590602001909291905050506112e0565b6040518082815260200191505060405180910390f35b3480156104c057600080fd5b506104c961143f565b005b3480156104d757600080fd5b5061050c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114f9565b6040518082815260200191505060405180910390f35b34801561052e57600080fd5b506105376115a3565b005b34801561054557600080fd5b5061056460048036038101908080359060200190929190505050611728565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b34801561059b57600080fd5b506105d0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118f8565b005b3480156105de57600080fd5b506105e76119a8565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561062757808201518184015260208101905061060c565b50505050905090810190601f1680156106545780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61066a611a46565b005b61068e6004803603810190808035600019169060200190929190505050611ae3565b604051808215151515815260200191505060405180910390f35b3480156106b457600080fd5b506106dd6004803603810190808035906020019092919080359060200190929190505050611d5d565b6040518082815260200191505060405180910390f35b3480156106ff57600080fd5b5061073e60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d82565b6040518082815260200191505060405180910390f35b34801561076057600080fd5b5061079f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611da7565b60405180826000191660001916815260200191505060405180910390f35b3480156107c957600080fd5b506107f26004803603810190808035906020019092919080359060200190929190505050611e02565b6040518082815260200191505060405180910390f35b34801561081457600080fd5b5061085d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611e27565b005b34801561086b57600080fd5b50610894600480360381019080803590602001909291908035906020019092919050505061210f565b6040518082815260200191505060405180910390f35b3480156108b657600080fd5b506108d560048036038101908080359060200190929190505050612134565b6040518082815260200191505060405180910390f35b3480156108f757600080fd5b506109406004803603810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061215a565b6040518082815260200191505060405180910390f35b34801561096257600080fd5b50610997600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061218c565b005b3480156109a557600080fd5b506109ee6004803603810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128f9565b6040518082815260200191505060405180910390f35b348015610a1057600080fd5b50610a39600480360381019080803590602001909291908035906020019092919050505061292b565b6040518082815260200191505060405180910390f35b348015610a5b57600080fd5b50610a64612950565b604051808a8152602001898152602001888152602001878152602001868152602001858152602001848152602001838152602001828152602001995050505050505050505060405180910390f35b610ade60048036038101908080359060200190929190803560001916906020019092919050505061298c565b005b348015610aec57600080fd5b50610b356004803603810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ae3565b6040518082815260200191505060405180910390f35b348015610b5757600080fd5b50610b8c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b15565b604051808e81526020018d81526020018c1515151581526020018b81526020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019d505050505050505050505050505060405180910390f35b348015610c3257600080fd5b50610c5b6004803603810190808035906020019092919080359060200190929190505050612ba8565b6040518082815260200191505060405180910390f35b348015610c7d57600080fd5b50610cb460048036038101908080359060200190929190803590602001909291908035600019169060200190929190505050612bcd565b005b348015610cc257600080fd5b50610cf7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c93565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b60008060008060009250600191505b60006008015482111515610e9957600090505b6002811015610e8c57610e7d83670de0b6b3a7640000610e6560146000878152602001908152602001600020600086815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e5760156000898152602001908152602001600020600088815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601a60008a8152602001908152602001600020600089815260200190815260200160002054612e0290919063ffffffff16565b612e8790919063ffffffff16565b811515610e6e57fe5b04612f2b90919063ffffffff16565b92508080600101915050610d44565b8180600101925050610d31565b829350505050919050565b60008060008060008060008060008060008060008060008060070154945060006008015490506000601260008781526020019081526020016000206001015414158015610f065750601260008681526020019081526020016000206001015442115b8015610f3e57506012600086815260200190815260200160002060020154601260008781526020019081526020016000206003015410155b8015610f4e575060008060050154145b15610fda57610f7e619ab06012600088815260200190815260200160002060010154612f2b90919063ffffffff16565b93506064610fac606e6012600089815260200190815260200160002060040154612e8790919063ffffffff16565b811515610fb557fe5b04925084806001019550506001600460018703811515610fd157fe5b04019050611026565b6012600086815260200190815260200160002060010154935060126000868152602001908152602001600020600501549250601260008681526020019081526020016000206004015491505b600060010154600060020154600060060154878787878760008001546000600301549e509e509e509e509e509e509e509e509e509e50505050505090919293949596979899565b6000806000600260006008015411151561108a57600092506111f7565b60009150600190505b6110ac6002600060080154612e0290919063ffffffff16565b811115156111f3576111e4670de0b6b3a76400006111cb60146000858152602001908152602001600020600080815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111bd60166000878152602001908152602001600020600080815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601b6000888152602001908152602001600020600080815260200190815260200160002054612e0290919063ffffffff16565b612e8790919063ffffffff16565b8115156111d457fe5b0483612f2b90919063ffffffff16565b91508080600101915050611093565b8192505b5050919050565b60126020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050154905086565b60096020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c602052816000526040600020602052806000526040600020600091509150505481565b60008060008060006112a386612fb3565b90506112ae866114f9565b816112b888613108565b6112d08460006002015461320d90919063ffffffff16565b9450945094509450509193509193565b60008060026000600801541115156112fb5760009150611439565b60126000806007015481526020019081526020016000206002015461134384601260008060070154815260200190815260200160002060030154612f2b90919063ffffffff16565b11156113a5576113a260126000806007015481526020019081526020016000206002015461139485601260008060070154815260200190815260200160002060030154612f2b90919063ffffffff16565b612e0290919063ffffffff16565b90505b828111156113b1578290505b601860006113ce6002600060080154612e0290919063ffffffff16565b815260200190815260200160002060008081526020019081526020016000205481111561143557601860006114126002600060080154612e0290919063ffffffff16565b815260200190815260200160002060008081526020019081526020016000205490505b8091505b50919050565b60008060050154118015611471575060126000806007015481526020019081526020016000206001015462278d000142115b156114f757600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501580156114f5573d6000803e3d6000fd5b505b565b60008060008061150885610d22565b92506115138561324c565b915061151e8561106d565b90506115998161158b8461157d87600a60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154612f2b90919063ffffffff16565b612f2b90919063ffffffff16565b612f2b90919063ffffffff16565b9350505050919050565b60003273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f48756d616e73206f6e6c7900000000000000000000000000000000000000000081525060200191505060405180910390fd5b6116513361218c565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490506000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611724573d6000803e3d6000fd5b5050565b6000806000806000806000600188141561174557600092506117a7565b6012600061175d60018b612e0290919063ffffffff16565b81526020019081526020016000206004015461179a612710601260008c815260200190815260200160002060040154612e8790919063ffffffff16565b8115156117a357fe5b0492505b600160006007015401881480156117d95750600060126000806007015481526020019081526020016000206001015414155b8015611819575060126000806007015481526020019081526020016000206002015460126000806007015481526020019081526020016000206003015410155b801561183e575060126000806007015481526020019081526020016000206001015442115b15611899576001600460018a0381151561185457fe5b040191506064611888606e601260008060070154815260200190815260200160002060040154612e8790919063ffffffff16565b81151561189157fe5b0490506118cc565b60126000898152602001908152602001600020600001549150601260008981526020019081526020016000206005015490505b81601260008a815260200190815260200160002060040154828596509650965096505050509193509193565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561199b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f48756d616e73206f6e6c7900000000000000000000000000000000000000000081525060200191505060405180910390fd5b6119a533826132f8565b50565b601d8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a3e5780601f10611a1357610100808354040283529160200191611a3e565b820191906000526020600020905b815481529060010190602001808311611a2157829003601f168201915b505050505081565b611a9b34600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154612f2b90919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550565b6000611af03360006136df565b662386f26fc10000341080611b6d5750600073ffffffffffffffffffffffffffffffffffffffff1660096000846000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15611bc2573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611bb8573d6000803e3d6000fd5b5060009050611d58565b3360096000846000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611c726001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600c0154612f2b90919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600c018190555081601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600c015481526020019081526020016000208160001916905550600190505b919050565b601a602052816000526040600020602052806000526040600020600091509150505481565b6013602052816000526040600020602052806000526040600020600091509150505481565b6000601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b6017602052816000526040600020602052806000526040600020600091509150505481565b6000670de0b6b3a7640000611f3d60146000868152602001908152602001600020600085815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f2f60156000888152602001908152602001600020600087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601a6000898152602001908152602001600020600088815260200190815260200160002054612e0290919063ffffffff16565b612e8790919063ffffffff16565b811515611f4657fe5b049050601a600084815260200190815260200160002060008381526020019081526020016000205460156000858152602001908152602001600020600084815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612028600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015482612f2b90919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506120c3600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005015482612f2b90919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005018190555050505050565b6018602052816000526040600020602052806000526040600020600091509150505481565b60008061214f8360006002015461320d90919063ffffffff16565b905080915050919050565b601560205282600052604060002060205281600052604060002060205280600052604060002060009250925050505481565b6000806000806000809450600080600501541180156121f85750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff16155b15612264576122068661324c565b94506001600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160006101000a81548160ff0219169083151502179055505b60009350600192505b6000600801548311151561245f57600091505b6002821015612452576123b9670de0b6b3a76400006123a060146000878152602001908152602001600020600086815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461239260156000898152602001908152602001600020600088815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601a60008a8152602001908152602001600020600089815260200190815260200160002054612e0290919063ffffffff16565b612e8790919063ffffffff16565b8115156123a957fe5b0485612f2b90919063ffffffff16565b9350601a600084815260200190815260200160002060008381526020019081526020016000205460156000858152602001908152602001600020600084815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508180600101925050612280565b828060010193505061226d565b600090506002600060080154111561266157600192505b61248f6002600060080154612e0290919063ffffffff16565b83111515612660576125c7670de0b6b3a76400006125ae60146000878152602001908152602001600020600080815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125a060166000898152602001908152602001600020600080815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601b60008a8152602001908152602001600020600080815260200190815260200160002054612e0290919063ffffffff16565b612e8790919063ffffffff16565b8115156125b757fe5b0482612f2b90919063ffffffff16565b9050601b600084815260200190815260200160002060008081526020019081526020016000205460166000858152602001908152602001600020600080815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508280600101935050612476565b5b6126da600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546126cc836126be888a612f2b90919063ffffffff16565b612f2b90919063ffffffff16565b612f2b90919063ffffffff16565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555061277585600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080154612f2b90919063ffffffff16565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206008018190555061281084600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154612f2b90919063ffffffff16565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055506128ab81600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070154612f2b90919063ffffffff16565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070181905550505050505050565b601460205282600052604060002060205281600052604060002060205280600052604060002060009250925050505481565b601b602052816000526040600020602052806000526040600020600091509150505481565b60008060000154908060010154908060020154908060030154908060040154908060050154908060060154908060070154908060080154905089565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612a2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f48756d616e73206f6e6c7900000000000000000000000000000000000000000081525060200191505060405180910390fd5b612a3933826136df565b612a8e34600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154612f2b90919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550612adf333484613728565b5050565b601660205282600052604060002060205281600052604060002060205280600052604060002060009250925050505481565b600a6020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900460ff16908060030154908060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600501549080600601549080600701549080600801549080600901549080600a01549080600b01549080600c015490508d565b6019602052816000526040600020602052806000526040600020600091509150505481565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f48756d616e73206f6e6c7900000000000000000000000000000000000000000081525060200191505060405180910390fd5b612c7a33826136df565b612c833361218c565b612c8e338484613728565b505050565b600080600080612cf6612ca586610d22565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154612f2b90919063ffffffff16565b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060154612d96612d458861106d565b600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070154612f2b90919063ffffffff16565b612df3612da28961324c565b600a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080154612f2b90919063ffffffff16565b93509350935093509193509193565b6000828211151515612e7c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f536166654d61746820737562206661696c65640000000000000000000000000081525060200191505060405180910390fd5b818303905092915050565b600080831415612e9a5760009050612f25565b8183029050818382811515612eab57fe5b04141515612f21576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f536166654d617468206d756c206661696c65640000000000000000000000000081525060200191505060405180910390fd5b8090505b92915050565b60008183019050828110151515612faa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f536166654d61746820616464206661696c65640000000000000000000000000081525060200191505060405180910390fd5b80905092915050565b600080600080600191505b600060080154821115156130fd57600090505b60028110156130f05760006019600084815260200190815260200160002060008381526020019081526020016000205411156130e3576130e0601960008481526020019081526020016000206000838152602001908152602001600020546130c76018600086815260200190815260200160002060008581526020019081526020016000205460146000878152602001908152602001600020600086815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e8790919063ffffffff16565b8115156130d057fe5b0484612f2b90919063ffffffff16565b92505b8080600101915050612fd1565b8180600101925050612fbe565b829350505050919050565b6000806131736001601360008060070154815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e8790919063ffffffff16565b905060016000600701541115613204576132016131f2600160136000600160006007015403815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e8790919063ffffffff16565b82612f2b90919063ffffffff16565b90505b80915050919050565b600061324461321b84614080565b6132366132318587612f2b90919063ffffffff16565b614080565b612e0290919063ffffffff16565b905092915050565b6000806000600501541180156132af5750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff16155b156132ee57670de0b6b3a76400006132dd6132c984613108565b600060040154612e8790919063ffffffff16565b8115156132e657fe5b0490506132f3565b600090505b919050565b6000806000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154111561334b576136d9565b6000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003015414806133c757508373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156133d157600092505b600060060160008154600101919050819055600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018190555082600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060090160008154809291906001019190505550600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156136d857600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a0160008154809291906001019190505550600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156136d757600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b01600081548092919060010191905055505b5b5b50505050565b6137248260096000846000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166132f8565b5050565b60008060008060008060008089662386f26fc1000081101515156137b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f302e3031455448206d696e00000000000000000000000000000000000000000081525060200191505060405180910390fd5b68056bc75e2d631000008111151515613835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f313030455448206d61780000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60018a111561384357600199505b6000600a60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154141561389a576138998c60006132f8565b5b6138aa8c6000600801548c611e27565b8a600a60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015410151515613964576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f696e73756666696369656e742066756e6400000000000000000000000000000081525060200191505060405180910390fd5b60008b11801561398e57506000601260008060070154815260200190815260200160002060010154145b156139c7576139a8619ab042612f2b90919063ffffffff16565b6012600080600701548152602001908152602001600020600101819055505b60006139d1614112565b11156139dc57614072565b60006008015498506000600701549750613a418b600a60008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154612e0290919063ffffffff16565b600a60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550613a9e8b600080015461442890919063ffffffff16565b9650613aa9876112e0565b9550613abe8688612e0290919063ffffffff16565b9450613ad88560006002015461320d90919063ffffffff16565b9350613aed848c612e0290919063ffffffff16565b92506000861115613c3957613b0c60028a612e0290919063ffffffff16565b9150613b458660186000858152602001908152602001600020600080815260200190815260200160002054612e0290919063ffffffff16565b60186000848152602001908152602001600020600080815260200190815260200160002081905550613c10601960008481526020019081526020016000206000808152602001908152602001600020546064613bc9670de0b6b3a7640000613bbb600c6005015489612e8790919063ffffffff16565b612e8790919063ffffffff16565b811515613bd257fe5b04811515613bdc57fe5b04601b6000858152602001908152602001600020600080815260200190815260200160002054612f2b90919063ffffffff16565b601b60008481526020019081526020016000206000808152602001908152602001600020819055505b613c5160006002015488612f2b90919063ffffffff16565b600060020181905550613c7260006003015486612f2b90919063ffffffff16565b600060030181905550613c9260008001548c612f2b90919063ffffffff16565b6000800181905550613cc3601260008a81526020019081526020016000206003015488612f2b90919063ffffffff16565b601260008a815260200190815260200160002060030181905550613d06601260008a8152602001908152602001600020600401548c612f2b90919063ffffffff16565b601260008a815260200190815260200160002060040181905550613d57601960008b815260200190815260200160002060008c81526020019081526020016000205488612f2b90919063ffffffff16565b601960008b815260200190815260200160002060008c815260200190815260200160002081905550601960008a815260200190815260200160002060008b815260200190815260200160002054601860008b815260200190815260200160002060008c815260200190815260200160002081905550613e21600a60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015488612f2b90919063ffffffff16565b600a60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550613edb601460008b815260200190815260200160002060008c815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205488612f2b90919063ffffffff16565b601460008b815260200190815260200160002060008c815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613fa3601360008a815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205488612f2b90919063ffffffff16565b601360008a815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506140236064614014600c600001548e612e8790919063ffffffff16565b81151561401d57fe5b04614467565b61402d8c8c6145cc565b614068606461404a600c6005015487612e8790919063ffffffff16565b81151561405357fe5b04600060010154612f2b90919063ffffffff16565b6000600101819055505b505050505050505050505050565b6000614093670de0b6b3a7640000614cdd565b61410160026140cb6140b6670de0b6b3a764000087612e8790919063ffffffff16565b650cbc40c46e00612e8790919063ffffffff16565b8115156140d457fe5b046140f36140e186614cdd565b6201c7d1612e8790919063ffffffff16565b612f2b90919063ffffffff16565b81151561410a57fe5b049050919050565b6000806000806000600501541115614131576000600501549250614423565b6012600080600701548152602001908152602001600020600101544211156143495760126000806007015481526020019081526020016000206002015460126000806007015481526020019081526020016000206003015410151561433c576001600060070154019150600060046000600701548115156141ae57fe5b0614156141ed57600a60016000600801540111156141d65760026000600501819055506141ec565b6000600801600081548092919060010191905055505b5b600080600501541415614337576000600801546012600084815260200190815260200160002060000181905550614249619ab0601260008060070154815260200190815260200160002060010154612f2b90919063ffffffff16565b60126000848152602001908152602001600020600101819055506064614293606e601260008060070154815260200190815260200160002060040154612e8790919063ffffffff16565b81151561429c57fe5b0460126000848152602001908152602001600020600501819055506142e46012600084815260200190815260200160002060050154600080015461442890919063ffffffff16565b6012600084815260200190815260200160002060020181905550816000600701819055506012600080600701548152602001908152602001600020600101544211156143365760016000600501819055505b5b614348565b60016000600501819055505b5b60008060050154111561441a576143846001601260008060070154815260200190815260200160002060030154612e8790919063ffffffff16565b9050600160006007015411156143db576143d86143c9600160126000600160006007015403815260200190815260200160002060030154612e8790919063ffffffff16565b82612f2b90919063ffffffff16565b90505b806143fc670de0b6b3a7640000600060010154612e8790919063ffffffff16565b81151561440557fe5b04600060040181905550600080600101819055505b60006005015492505b505090565b600061445f61443684614cf0565b61445161444c8587612f2b90919063ffffffff16565b614cf0565b612e0290919063ffffffff16565b905092915050565b6000806000806003015461448c670de0b6b3a764000086612e8790919063ffffffff16565b81151561449557fe5b049250600191505b600060080154821115156145c657600090505b6001811115156145b95760006019600084815260200190815260200160002060008381526020019081526020016000205411156145ac57614583601a60008481526020019081526020016000206000838152602001908152602001600020546019600085815260200190815260200160002060008481526020019081526020016000205461456b6018600087815260200190815260200160002060008681526020019081526020016000205487612e8790919063ffffffff16565b81151561457457fe5b04612f2b90919063ffffffff16565b601a60008481526020019081526020016000206000838152602001908152602001600020819055505b80806001019150506144b0565b818060010192505061449d565b50505050565b600080600080600080600060646145f1600c600401548a612e8790919063ffffffff16565b8115156145fa57fe5b0496506064614617600c600101548a612e8790919063ffffffff16565b81151561462057fe5b049550606461463d600c600201548a612e8790919063ffffffff16565b81151561464657fe5b0494506064614663600c600301548a612e8790919063ffffffff16565b81151561466c57fe5b049350600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515614c2f5761475f600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015487612f2b90919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506147fa600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006015487612f2b90919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060181905550600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515614c0257614930600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015486612f2b90919063ffffffff16565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506149cb600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006015486612f2b90919063ffffffff16565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060181905550600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515614be757614b01600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015485612f2b90919063ffffffff16565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550614b9c600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006015485612f2b90919063ffffffff16565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060181905550614bfd565b614bfa8488612f2b90919063ffffffff16565b96505b614c2a565b614c2785614c19868a612f2b90919063ffffffff16565b612f2b90919063ffffffff16565b96505b614c69565b614c6686614c5887614c4a888c612f2b90919063ffffffff16565b612f2b90919063ffffffff16565b612f2b90919063ffffffff16565b96505b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc889081150290604051600060405180830381858888f19350505050158015614cd1573d6000803e3d6000fd5b50505050505050505050565b6000614ce98283612e87565b9050919050565b600062038fa2614d806c585e8cb5bb7bab2d3e7c000000614d72614d6d791e8123a893b1fa92b99695340490aca0aed84c10000000000000614d5f6962d6e4b9dcb992900000614d51670de0b6b3a76400008b612e8790919063ffffffff16565b612e8790919063ffffffff16565b612f2b90919063ffffffff16565b614d91565b612e0290919063ffffffff16565b811515614d8957fe5b049050919050565b6000806002614da1846001612f2b565b811515614daa57fe5b0490508291505b81811015614de4578091506002614dd38285811515614dcc57fe5b0483612f2b565b811515614ddc57fe5b049050614db1565b509190505600a165627a7a723058204c7ca15b974d0acd9afa3b351f14cc834bdfa4d9cf3c738da32a6759a3cc4dba0029

Deployed Bytecode

0x6080604052600436106101ac576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630641d812146101b15780631865c57d14610208578063253515d5146102725780632e37eef6146102c95780632f19c2c11461032d5780632fae38491461039e57806330e73c7614610407578063358fa6c61461047357806335faa416146104b45780633658964c146104cb5780633ccfd60b146105225780633ed4c4c8146105395780634420e4861461058f578063473bc223146105d25780634cddae28146106625780635b48c11b1461066c5780635e0e5b9f146106a8578063773c6dfa146106f35780637a070cba1461075457806380ecc02c146107bd5780638916cbc6146108085780638f56054d1461085f5780639248d4ec146108aa5780639530311e146108eb57806395a2251f14610956578063b1ec676214610999578063bbb0729614610a04578063d1f9c24d14610a4f578063d500f86114610ab2578063d85ef95e14610ae0578063e2eb41ff14610b4b578063e8a915ad14610c26578063fe2506a414610c71578063feca4ef114610cb6575b600080fd5b3480156101bd57600080fd5b506101f2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d22565b6040518082815260200191505060405180910390f35b34801561021457600080fd5b5061021d610ea4565b604051808b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019a505050505050505050505060405180910390f35b34801561027e57600080fd5b506102b3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061106d565b6040518082815260200191505060405180910390f35b3480156102d557600080fd5b506102f4600480360381019080803590602001909291905050506111fe565b60405180878152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390f35b34801561033957600080fd5b5061035c600480360381019080803560001916906020019092919050505061123a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103aa57600080fd5b506103e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061126d565b60405180826000191660001916815260200191505060405180910390f35b34801561041357600080fd5b50610448600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611292565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b34801561047f57600080fd5b5061049e600480360381019080803590602001909291905050506112e0565b6040518082815260200191505060405180910390f35b3480156104c057600080fd5b506104c961143f565b005b3480156104d757600080fd5b5061050c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114f9565b6040518082815260200191505060405180910390f35b34801561052e57600080fd5b506105376115a3565b005b34801561054557600080fd5b5061056460048036038101908080359060200190929190505050611728565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b34801561059b57600080fd5b506105d0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118f8565b005b3480156105de57600080fd5b506105e76119a8565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561062757808201518184015260208101905061060c565b50505050905090810190601f1680156106545780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61066a611a46565b005b61068e6004803603810190808035600019169060200190929190505050611ae3565b604051808215151515815260200191505060405180910390f35b3480156106b457600080fd5b506106dd6004803603810190808035906020019092919080359060200190929190505050611d5d565b6040518082815260200191505060405180910390f35b3480156106ff57600080fd5b5061073e60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d82565b6040518082815260200191505060405180910390f35b34801561076057600080fd5b5061079f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611da7565b60405180826000191660001916815260200191505060405180910390f35b3480156107c957600080fd5b506107f26004803603810190808035906020019092919080359060200190929190505050611e02565b6040518082815260200191505060405180910390f35b34801561081457600080fd5b5061085d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611e27565b005b34801561086b57600080fd5b50610894600480360381019080803590602001909291908035906020019092919050505061210f565b6040518082815260200191505060405180910390f35b3480156108b657600080fd5b506108d560048036038101908080359060200190929190505050612134565b6040518082815260200191505060405180910390f35b3480156108f757600080fd5b506109406004803603810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061215a565b6040518082815260200191505060405180910390f35b34801561096257600080fd5b50610997600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061218c565b005b3480156109a557600080fd5b506109ee6004803603810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128f9565b6040518082815260200191505060405180910390f35b348015610a1057600080fd5b50610a39600480360381019080803590602001909291908035906020019092919050505061292b565b6040518082815260200191505060405180910390f35b348015610a5b57600080fd5b50610a64612950565b604051808a8152602001898152602001888152602001878152602001868152602001858152602001848152602001838152602001828152602001995050505050505050505060405180910390f35b610ade60048036038101908080359060200190929190803560001916906020019092919050505061298c565b005b348015610aec57600080fd5b50610b356004803603810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ae3565b6040518082815260200191505060405180910390f35b348015610b5757600080fd5b50610b8c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b15565b604051808e81526020018d81526020018c1515151581526020018b81526020018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019d505050505050505050505050505060405180910390f35b348015610c3257600080fd5b50610c5b6004803603810190808035906020019092919080359060200190929190505050612ba8565b6040518082815260200191505060405180910390f35b348015610c7d57600080fd5b50610cb460048036038101908080359060200190929190803590602001909291908035600019169060200190929190505050612bcd565b005b348015610cc257600080fd5b50610cf7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c93565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390f35b60008060008060009250600191505b60006008015482111515610e9957600090505b6002811015610e8c57610e7d83670de0b6b3a7640000610e6560146000878152602001908152602001600020600086815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e5760156000898152602001908152602001600020600088815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601a60008a8152602001908152602001600020600089815260200190815260200160002054612e0290919063ffffffff16565b612e8790919063ffffffff16565b811515610e6e57fe5b04612f2b90919063ffffffff16565b92508080600101915050610d44565b8180600101925050610d31565b829350505050919050565b60008060008060008060008060008060008060008060008060070154945060006008015490506000601260008781526020019081526020016000206001015414158015610f065750601260008681526020019081526020016000206001015442115b8015610f3e57506012600086815260200190815260200160002060020154601260008781526020019081526020016000206003015410155b8015610f4e575060008060050154145b15610fda57610f7e619ab06012600088815260200190815260200160002060010154612f2b90919063ffffffff16565b93506064610fac606e6012600089815260200190815260200160002060040154612e8790919063ffffffff16565b811515610fb557fe5b04925084806001019550506001600460018703811515610fd157fe5b04019050611026565b6012600086815260200190815260200160002060010154935060126000868152602001908152602001600020600501549250601260008681526020019081526020016000206004015491505b600060010154600060020154600060060154878787878760008001546000600301549e509e509e509e509e509e509e509e509e509e50505050505090919293949596979899565b6000806000600260006008015411151561108a57600092506111f7565b60009150600190505b6110ac6002600060080154612e0290919063ffffffff16565b811115156111f3576111e4670de0b6b3a76400006111cb60146000858152602001908152602001600020600080815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111bd60166000878152602001908152602001600020600080815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601b6000888152602001908152602001600020600080815260200190815260200160002054612e0290919063ffffffff16565b612e8790919063ffffffff16565b8115156111d457fe5b0483612f2b90919063ffffffff16565b91508080600101915050611093565b8192505b5050919050565b60126020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050154905086565b60096020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c602052816000526040600020602052806000526040600020600091509150505481565b60008060008060006112a386612fb3565b90506112ae866114f9565b816112b888613108565b6112d08460006002015461320d90919063ffffffff16565b9450945094509450509193509193565b60008060026000600801541115156112fb5760009150611439565b60126000806007015481526020019081526020016000206002015461134384601260008060070154815260200190815260200160002060030154612f2b90919063ffffffff16565b11156113a5576113a260126000806007015481526020019081526020016000206002015461139485601260008060070154815260200190815260200160002060030154612f2b90919063ffffffff16565b612e0290919063ffffffff16565b90505b828111156113b1578290505b601860006113ce6002600060080154612e0290919063ffffffff16565b815260200190815260200160002060008081526020019081526020016000205481111561143557601860006114126002600060080154612e0290919063ffffffff16565b815260200190815260200160002060008081526020019081526020016000205490505b8091505b50919050565b60008060050154118015611471575060126000806007015481526020019081526020016000206001015462278d000142115b156114f757600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501580156114f5573d6000803e3d6000fd5b505b565b60008060008061150885610d22565b92506115138561324c565b915061151e8561106d565b90506115998161158b8461157d87600a60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154612f2b90919063ffffffff16565b612f2b90919063ffffffff16565b612f2b90919063ffffffff16565b9350505050919050565b60003273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f48756d616e73206f6e6c7900000000000000000000000000000000000000000081525060200191505060405180910390fd5b6116513361218c565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490506000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611724573d6000803e3d6000fd5b5050565b6000806000806000806000600188141561174557600092506117a7565b6012600061175d60018b612e0290919063ffffffff16565b81526020019081526020016000206004015461179a612710601260008c815260200190815260200160002060040154612e8790919063ffffffff16565b8115156117a357fe5b0492505b600160006007015401881480156117d95750600060126000806007015481526020019081526020016000206001015414155b8015611819575060126000806007015481526020019081526020016000206002015460126000806007015481526020019081526020016000206003015410155b801561183e575060126000806007015481526020019081526020016000206001015442115b15611899576001600460018a0381151561185457fe5b040191506064611888606e601260008060070154815260200190815260200160002060040154612e8790919063ffffffff16565b81151561189157fe5b0490506118cc565b60126000898152602001908152602001600020600001549150601260008981526020019081526020016000206005015490505b81601260008a815260200190815260200160002060040154828596509650965096505050509193509193565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561199b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f48756d616e73206f6e6c7900000000000000000000000000000000000000000081525060200191505060405180910390fd5b6119a533826132f8565b50565b601d8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a3e5780601f10611a1357610100808354040283529160200191611a3e565b820191906000526020600020905b815481529060010190602001808311611a2157829003601f168201915b505050505081565b611a9b34600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154612f2b90919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550565b6000611af03360006136df565b662386f26fc10000341080611b6d5750600073ffffffffffffffffffffffffffffffffffffffff1660096000846000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15611bc2573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611bb8573d6000803e3d6000fd5b5060009050611d58565b3360096000846000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611c726001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600c0154612f2b90919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600c018190555081601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600c015481526020019081526020016000208160001916905550600190505b919050565b601a602052816000526040600020602052806000526040600020600091509150505481565b6013602052816000526040600020602052806000526040600020600091509150505481565b6000601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b6017602052816000526040600020602052806000526040600020600091509150505481565b6000670de0b6b3a7640000611f3d60146000868152602001908152602001600020600085815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f2f60156000888152602001908152602001600020600087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601a6000898152602001908152602001600020600088815260200190815260200160002054612e0290919063ffffffff16565b612e8790919063ffffffff16565b811515611f4657fe5b049050601a600084815260200190815260200160002060008381526020019081526020016000205460156000858152602001908152602001600020600084815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612028600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015482612f2b90919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506120c3600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005015482612f2b90919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005018190555050505050565b6018602052816000526040600020602052806000526040600020600091509150505481565b60008061214f8360006002015461320d90919063ffffffff16565b905080915050919050565b601560205282600052604060002060205281600052604060002060205280600052604060002060009250925050505481565b6000806000806000809450600080600501541180156121f85750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff16155b15612264576122068661324c565b94506001600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160006101000a81548160ff0219169083151502179055505b60009350600192505b6000600801548311151561245f57600091505b6002821015612452576123b9670de0b6b3a76400006123a060146000878152602001908152602001600020600086815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461239260156000898152602001908152602001600020600088815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601a60008a8152602001908152602001600020600089815260200190815260200160002054612e0290919063ffffffff16565b612e8790919063ffffffff16565b8115156123a957fe5b0485612f2b90919063ffffffff16565b9350601a600084815260200190815260200160002060008381526020019081526020016000205460156000858152602001908152602001600020600084815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508180600101925050612280565b828060010193505061226d565b600090506002600060080154111561266157600192505b61248f6002600060080154612e0290919063ffffffff16565b83111515612660576125c7670de0b6b3a76400006125ae60146000878152602001908152602001600020600080815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125a060166000898152602001908152602001600020600080815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601b60008a8152602001908152602001600020600080815260200190815260200160002054612e0290919063ffffffff16565b612e8790919063ffffffff16565b8115156125b757fe5b0482612f2b90919063ffffffff16565b9050601b600084815260200190815260200160002060008081526020019081526020016000205460166000858152602001908152602001600020600080815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508280600101935050612476565b5b6126da600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101546126cc836126be888a612f2b90919063ffffffff16565b612f2b90919063ffffffff16565b612f2b90919063ffffffff16565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001018190555061277585600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080154612f2b90919063ffffffff16565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206008018190555061281084600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154612f2b90919063ffffffff16565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600501819055506128ab81600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070154612f2b90919063ffffffff16565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070181905550505050505050565b601460205282600052604060002060205281600052604060002060205280600052604060002060009250925050505481565b601b602052816000526040600020602052806000526040600020600091509150505481565b60008060000154908060010154908060020154908060030154908060040154908060050154908060060154908060070154908060080154905089565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612a2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f48756d616e73206f6e6c7900000000000000000000000000000000000000000081525060200191505060405180910390fd5b612a3933826136df565b612a8e34600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154612f2b90919063ffffffff16565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550612adf333484613728565b5050565b601660205282600052604060002060205281600052604060002060205280600052604060002060009250925050505481565b600a6020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900460ff16908060030154908060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600501549080600601549080600701549080600801549080600901549080600a01549080600b01549080600c015490508d565b6019602052816000526040600020602052806000526040600020600091509150505481565b3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f48756d616e73206f6e6c7900000000000000000000000000000000000000000081525060200191505060405180910390fd5b612c7a33826136df565b612c833361218c565b612c8e338484613728565b505050565b600080600080612cf6612ca586610d22565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154612f2b90919063ffffffff16565b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060154612d96612d458861106d565b600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070154612f2b90919063ffffffff16565b612df3612da28961324c565b600a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080154612f2b90919063ffffffff16565b93509350935093509193509193565b6000828211151515612e7c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f536166654d61746820737562206661696c65640000000000000000000000000081525060200191505060405180910390fd5b818303905092915050565b600080831415612e9a5760009050612f25565b8183029050818382811515612eab57fe5b04141515612f21576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f536166654d617468206d756c206661696c65640000000000000000000000000081525060200191505060405180910390fd5b8090505b92915050565b60008183019050828110151515612faa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f536166654d61746820616464206661696c65640000000000000000000000000081525060200191505060405180910390fd5b80905092915050565b600080600080600191505b600060080154821115156130fd57600090505b60028110156130f05760006019600084815260200190815260200160002060008381526020019081526020016000205411156130e3576130e0601960008481526020019081526020016000206000838152602001908152602001600020546130c76018600086815260200190815260200160002060008581526020019081526020016000205460146000878152602001908152602001600020600086815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e8790919063ffffffff16565b8115156130d057fe5b0484612f2b90919063ffffffff16565b92505b8080600101915050612fd1565b8180600101925050612fbe565b829350505050919050565b6000806131736001601360008060070154815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e8790919063ffffffff16565b905060016000600701541115613204576132016131f2600160136000600160006007015403815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e8790919063ffffffff16565b82612f2b90919063ffffffff16565b90505b80915050919050565b600061324461321b84614080565b6132366132318587612f2b90919063ffffffff16565b614080565b612e0290919063ffffffff16565b905092915050565b6000806000600501541180156132af5750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff16155b156132ee57670de0b6b3a76400006132dd6132c984613108565b600060040154612e8790919063ffffffff16565b8115156132e657fe5b0490506132f3565b600090505b919050565b6000806000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154111561334b576136d9565b6000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003015414806133c757508373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156133d157600092505b600060060160008154600101919050819055600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003018190555082600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060090160008154809291906001019190505550600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156136d857600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a0160008154809291906001019190505550600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156136d757600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b01600081548092919060010191905055505b5b5b50505050565b6137248260096000846000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166132f8565b5050565b60008060008060008060008089662386f26fc1000081101515156137b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f302e3031455448206d696e00000000000000000000000000000000000000000081525060200191505060405180910390fd5b68056bc75e2d631000008111151515613835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f313030455448206d61780000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60018a111561384357600199505b6000600a60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154141561389a576138998c60006132f8565b5b6138aa8c6000600801548c611e27565b8a600a60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015410151515613964576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f696e73756666696369656e742066756e6400000000000000000000000000000081525060200191505060405180910390fd5b60008b11801561398e57506000601260008060070154815260200190815260200160002060010154145b156139c7576139a8619ab042612f2b90919063ffffffff16565b6012600080600701548152602001908152602001600020600101819055505b60006139d1614112565b11156139dc57614072565b60006008015498506000600701549750613a418b600a60008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154612e0290919063ffffffff16565b600a60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550613a9e8b600080015461442890919063ffffffff16565b9650613aa9876112e0565b9550613abe8688612e0290919063ffffffff16565b9450613ad88560006002015461320d90919063ffffffff16565b9350613aed848c612e0290919063ffffffff16565b92506000861115613c3957613b0c60028a612e0290919063ffffffff16565b9150613b458660186000858152602001908152602001600020600080815260200190815260200160002054612e0290919063ffffffff16565b60186000848152602001908152602001600020600080815260200190815260200160002081905550613c10601960008481526020019081526020016000206000808152602001908152602001600020546064613bc9670de0b6b3a7640000613bbb600c6005015489612e8790919063ffffffff16565b612e8790919063ffffffff16565b811515613bd257fe5b04811515613bdc57fe5b04601b6000858152602001908152602001600020600080815260200190815260200160002054612f2b90919063ffffffff16565b601b60008481526020019081526020016000206000808152602001908152602001600020819055505b613c5160006002015488612f2b90919063ffffffff16565b600060020181905550613c7260006003015486612f2b90919063ffffffff16565b600060030181905550613c9260008001548c612f2b90919063ffffffff16565b6000800181905550613cc3601260008a81526020019081526020016000206003015488612f2b90919063ffffffff16565b601260008a815260200190815260200160002060030181905550613d06601260008a8152602001908152602001600020600401548c612f2b90919063ffffffff16565b601260008a815260200190815260200160002060040181905550613d57601960008b815260200190815260200160002060008c81526020019081526020016000205488612f2b90919063ffffffff16565b601960008b815260200190815260200160002060008c815260200190815260200160002081905550601960008a815260200190815260200160002060008b815260200190815260200160002054601860008b815260200190815260200160002060008c815260200190815260200160002081905550613e21600a60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015488612f2b90919063ffffffff16565b600a60008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550613edb601460008b815260200190815260200160002060008c815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205488612f2b90919063ffffffff16565b601460008b815260200190815260200160002060008c815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613fa3601360008a815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205488612f2b90919063ffffffff16565b601360008a815260200190815260200160002060008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506140236064614014600c600001548e612e8790919063ffffffff16565b81151561401d57fe5b04614467565b61402d8c8c6145cc565b614068606461404a600c6005015487612e8790919063ffffffff16565b81151561405357fe5b04600060010154612f2b90919063ffffffff16565b6000600101819055505b505050505050505050505050565b6000614093670de0b6b3a7640000614cdd565b61410160026140cb6140b6670de0b6b3a764000087612e8790919063ffffffff16565b650cbc40c46e00612e8790919063ffffffff16565b8115156140d457fe5b046140f36140e186614cdd565b6201c7d1612e8790919063ffffffff16565b612f2b90919063ffffffff16565b81151561410a57fe5b049050919050565b6000806000806000600501541115614131576000600501549250614423565b6012600080600701548152602001908152602001600020600101544211156143495760126000806007015481526020019081526020016000206002015460126000806007015481526020019081526020016000206003015410151561433c576001600060070154019150600060046000600701548115156141ae57fe5b0614156141ed57600a60016000600801540111156141d65760026000600501819055506141ec565b6000600801600081548092919060010191905055505b5b600080600501541415614337576000600801546012600084815260200190815260200160002060000181905550614249619ab0601260008060070154815260200190815260200160002060010154612f2b90919063ffffffff16565b60126000848152602001908152602001600020600101819055506064614293606e601260008060070154815260200190815260200160002060040154612e8790919063ffffffff16565b81151561429c57fe5b0460126000848152602001908152602001600020600501819055506142e46012600084815260200190815260200160002060050154600080015461442890919063ffffffff16565b6012600084815260200190815260200160002060020181905550816000600701819055506012600080600701548152602001908152602001600020600101544211156143365760016000600501819055505b5b614348565b60016000600501819055505b5b60008060050154111561441a576143846001601260008060070154815260200190815260200160002060030154612e8790919063ffffffff16565b9050600160006007015411156143db576143d86143c9600160126000600160006007015403815260200190815260200160002060030154612e8790919063ffffffff16565b82612f2b90919063ffffffff16565b90505b806143fc670de0b6b3a7640000600060010154612e8790919063ffffffff16565b81151561440557fe5b04600060040181905550600080600101819055505b60006005015492505b505090565b600061445f61443684614cf0565b61445161444c8587612f2b90919063ffffffff16565b614cf0565b612e0290919063ffffffff16565b905092915050565b6000806000806003015461448c670de0b6b3a764000086612e8790919063ffffffff16565b81151561449557fe5b049250600191505b600060080154821115156145c657600090505b6001811115156145b95760006019600084815260200190815260200160002060008381526020019081526020016000205411156145ac57614583601a60008481526020019081526020016000206000838152602001908152602001600020546019600085815260200190815260200160002060008481526020019081526020016000205461456b6018600087815260200190815260200160002060008681526020019081526020016000205487612e8790919063ffffffff16565b81151561457457fe5b04612f2b90919063ffffffff16565b601a60008481526020019081526020016000206000838152602001908152602001600020819055505b80806001019150506144b0565b818060010192505061449d565b50505050565b600080600080600080600060646145f1600c600401548a612e8790919063ffffffff16565b8115156145fa57fe5b0496506064614617600c600101548a612e8790919063ffffffff16565b81151561462057fe5b049550606461463d600c600201548a612e8790919063ffffffff16565b81151561464657fe5b0494506064614663600c600301548a612e8790919063ffffffff16565b81151561466c57fe5b049350600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515614c2f5761475f600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015487612f2b90919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506147fa600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006015487612f2b90919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060181905550600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515614c0257614930600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015486612f2b90919063ffffffff16565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506149cb600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006015486612f2b90919063ffffffff16565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060181905550600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515614be757614b01600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015485612f2b90919063ffffffff16565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550614b9c600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006015485612f2b90919063ffffffff16565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060181905550614bfd565b614bfa8488612f2b90919063ffffffff16565b96505b614c2a565b614c2785614c19868a612f2b90919063ffffffff16565b612f2b90919063ffffffff16565b96505b614c69565b614c6686614c5887614c4a888c612f2b90919063ffffffff16565b612f2b90919063ffffffff16565b612f2b90919063ffffffff16565b96505b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc889081150290604051600060405180830381858888f19350505050158015614cd1573d6000803e3d6000fd5b50505050505050505050565b6000614ce98283612e87565b9050919050565b600062038fa2614d806c585e8cb5bb7bab2d3e7c000000614d72614d6d791e8123a893b1fa92b99695340490aca0aed84c10000000000000614d5f6962d6e4b9dcb992900000614d51670de0b6b3a76400008b612e8790919063ffffffff16565b612e8790919063ffffffff16565b612f2b90919063ffffffff16565b614d91565b612e0290919063ffffffff16565b811515614d8957fe5b049050919050565b6000806002614da1846001612f2b565b811515614daa57fe5b0490508291505b81811015614de4578091506002614dd38285811515614dcc57fe5b0483612f2b565b811515614ddc57fe5b049050614db1565b509190505600a165627a7a723058204c7ca15b974d0acd9afa3b351f14cc834bdfa4d9cf3c738da32a6759a3cc4dba0029

Swarm Source

bzzr://4c7ca15b974d0acd9afa3b351f14cc834bdfa4d9cf3c738da32a6759a3cc4dba

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
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.