Overview
ETH Balance
0.920704976000677404 ETH
Eth Value
$3,412.24 (@ $3,706.12/ETH)Token Holdings
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 1,755 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 20626679 | 112 days ago | IN | 0 ETH | 0.0002886 | ||||
Withdraw | 7707622 | 2053 days ago | IN | 0 ETH | 0.00031016 | ||||
Withdraw | 7707487 | 2053 days ago | IN | 0 ETH | 0.0003 | ||||
Withdraw | 7070084 | 2164 days ago | IN | 0 ETH | 0.00015986 | ||||
Withdraw | 6797055 | 2210 days ago | IN | 0 ETH | 0.00029703 | ||||
Withdraw | 6764199 | 2216 days ago | IN | 0 ETH | 0.00018185 | ||||
Withdraw | 6764198 | 2216 days ago | IN | 0 ETH | 0.00018185 | ||||
Withdraw | 6668848 | 2231 days ago | IN | 0 ETH | 0.00016701 | ||||
Withdraw | 6666754 | 2232 days ago | IN | 0 ETH | 0.00020876 | ||||
Withdraw | 6666685 | 2232 days ago | IN | 0 ETH | 0.00041995 | ||||
Withdraw | 6660164 | 2233 days ago | IN | 0 ETH | 0.00045761 | ||||
Withdraw | 6604889 | 2242 days ago | IN | 0 ETH | 0.00029948 | ||||
Withdraw | 6588315 | 2245 days ago | IN | 0 ETH | 0.00035524 | ||||
Withdraw | 6587091 | 2245 days ago | IN | 0 ETH | 0.00044349 | ||||
Buy | 6586254 | 2245 days ago | IN | 0.001 ETH | 0.00378895 | ||||
Buy | 6584427 | 2245 days ago | IN | 0.01 ETH | 0.00986212 | ||||
Withdraw | 6582689 | 2246 days ago | IN | 0 ETH | 0.00017049 | ||||
Withdraw | 6581241 | 2246 days ago | IN | 0 ETH | 0.00022203 | ||||
Withdraw | 6579957 | 2246 days ago | IN | 0 ETH | 0.00044406 | ||||
Buy | 6578544 | 2246 days ago | IN | 0.001 ETH | 0.00426308 | ||||
Withdraw | 6578025 | 2246 days ago | IN | 0 ETH | 0.00039965 | ||||
Withdraw | 6577950 | 2246 days ago | IN | 0 ETH | 0.00096168 | ||||
Withdraw | 6577877 | 2246 days ago | IN | 0 ETH | 0.00031084 | ||||
Buy | 6577780 | 2246 days ago | IN | 0.001 ETH | 0.00264348 | ||||
Buy | 6577779 | 2246 days ago | IN | 0.028 ETH | 0.00231533 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
20626679 | 112 days ago | 0.00177871 ETH | ||||
7707622 | 2053 days ago | 0.044 ETH | ||||
7070084 | 2164 days ago | 0.00210758 ETH | ||||
6797055 | 2210 days ago | 0.02415884 ETH | ||||
6668848 | 2231 days ago | 0.5230659 ETH | ||||
6666754 | 2232 days ago | 0.088 ETH | ||||
6660164 | 2233 days ago | 2.06950089 ETH | ||||
6588315 | 2245 days ago | 0.00831574 ETH | ||||
6587091 | 2245 days ago | 0.0092489 ETH | ||||
6586254 | 2245 days ago | 0.00002 ETH | ||||
6586254 | 2245 days ago | 0.00001 ETH | ||||
6584427 | 2245 days ago | 0.0002 ETH | ||||
6584427 | 2245 days ago | 0.0001 ETH | ||||
6581241 | 2246 days ago | 0.05901234 ETH | ||||
6579957 | 2246 days ago | 0.00210758 ETH | ||||
6578544 | 2246 days ago | 0.00002 ETH | ||||
6578544 | 2246 days ago | 0.00001 ETH | ||||
6578025 | 2246 days ago | 0.81062959 ETH | ||||
6577950 | 2246 days ago | 1.38273274 ETH | ||||
6577877 | 2246 days ago | 0.09264338 ETH | ||||
6577780 | 2246 days ago | 0.00002 ETH | ||||
6577780 | 2246 days ago | 0.00001 ETH | ||||
6577779 | 2246 days ago | 0.00056 ETH | ||||
6577779 | 2246 days ago | 0.00028 ETH | ||||
6577732 | 2246 days ago | 0.0010964 ETH |
Loading...
Loading
Contract Name:
FairBankFomo
Compiler Version
v0.4.25+commit.59dbf8f1
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-10-16 */ pragma solidity ^0.4.25; /** * * https://fairdapp.com/bankfomo/ https://fairdapp.com/bankfomo/ https://fairdapp.com/bankfomo/ * * _______ _ ______ _______ ______ ______ * (_______) (_) (______)(_______|_____ (_____ \ * _____ _____ _ ____ _ _ _______ _____) )____) ) * | ___|____ | |/ ___) | | | ___ | ____/ ____/ * | | / ___ | | | | |__/ /| | | | | | | * |_| \_____|_|_| |_____/ |_| |_|_| |_| * * ______ _ * (____ \ | | * ____) )_____ ____ | | _ * | __ ((____ | _ \| |_/ ) * | |__) ) ___ | | | | _ ( * |______/\_____|_| |_|_| \_) * * _______ * (_______) * _____ ___ ____ ___ * | ___) _ \| \ / _ \ * | | | |_| | | | | |_| | * |_| \___/|_|_|_|\___/ * * Warning: * * FairDAPP – Bank Fomo is a re-release of the original game FairDAPP - Bank Simulator. * This version ties into the FairExchange and has about 3x more aggressive scaling. * This contract may only be used internally for study purposes and all could be * lost by sending anything to this contract address. * All users are prohibited to interact with this contract if this * contract is in conflict with user’s local regulations or laws. * * -Original Contract built by the FairDAPP Community * -Code Audited by 8Bit & Etherguy (formula calculations are excluded from the audit) * * -The resetTime and reduceTime functions have an on and off switch which the developer owner can control. * -No one can change anything else once the contract has been deployed. * * -The contract is fully solvent in any event (assuming there are no bugs). * -ie. The contract will always payout what it owes. * **/ contract ERC721{ function totalSupply() public view returns (uint256 total); function balanceOf(address _owner) public view returns (uint256 balance); function ownerOf(uint256 _tokenId) public view returns (address owner); function approve(address _to, uint256 _tokenId) public; function takeOwnership(uint256 _tokenId) public; function transfer(address _to, uint256 _tokenId) public; function transferFrom(address _from, address _to, uint256 _tokenId) public; event Transfer(address from, address to, uint256 tokenId); event Approval(address owner, address approved, uint256 tokenId); } contract FairBankFomo is ERC721{ using SafeMath for uint256; address public developerAddr = 0xbC817A495f0114755Da5305c5AA84fc5ca7ebaBd; address public fairProfitContract = 0x53a39eeF083c4A91e36145176Cc9f52bE29B7288; string public name = "FairDAPP - Bank Simulator - Fomo"; string public symbol = "FBankFomo"; uint256 public stageDuration = 3600; uint256 public standardProtectRatio = 57; bool public modifyCountdown = false; uint256 public startTime = 1539997200; uint256 public cardTime = 1539993600; uint256 public rId = 1; uint256 public sId = 1; mapping (uint256 => FBankdatasets.Round) public round; mapping (uint256 => mapping (uint256 => FBankdatasets.Stage)) public stage; mapping (address => bool) public player; mapping (address => uint256[]) public playerGoodsList; mapping (address => uint256[]) public playerWithdrawList; /** * Anti clone protection. * Do not clone this contract without permission even if you manage to break the conceal. * The concealed code contains core calculations necessary for this contract to function, read line 1058. * This contract can be licensed for a fee, contact us instead of cloning! */ FairBankCompute constant private bankCompute = FairBankCompute(0xdd033Ff7e98792694F6b358DaEB065d4FF01Bd5A); FBankdatasets.Goods[] public goodsList; FBankdatasets.Card[6] public cardList; mapping (uint256 => address) public cardIndexToApproved; modifier isDeveloperAddr() { require(msg.sender == developerAddr, "Permission denied"); _; } modifier startTimeVerify() { require(now >= startTime); _; } modifier cardTimeVerify() { require(now >= cardTime); _; } modifier modifyCountdownVerify() { require(modifyCountdown == true, "this feature is not turned on or has been turned off"); require(now >= stage[rId][sId].start, "Can only use the addtime/reduce time functions when game has started"); _; } modifier senderVerify() { require (msg.sender == tx.origin, "sender does not meet the rules"); if(!player[msg.sender]) player[msg.sender] = true; _; } /** * Don't toy or spam the contract, it may raise the gas cost for everyone else. * The scientists will take anything below 0.001 ETH sent to the contract. * Also added antiwhale settings. * Thank you for your donation. */ modifier buyVerify() { if(msg.value < 1000000000000000){ developerAddr.send(msg.value); }else{ require(msg.value >= 1000000000000000, "minimum amount is 0.001 ether"); if(sId < 25) require(tx.gasprice <= 25000000000); if(sId < 25) require(msg.value <= 10 ether); _; } } modifier withdrawVerify() { require(playerGoodsList[msg.sender].length > 0, "user has not purchased the product or has completed the withdrawal"); _; } modifier stepSizeVerify(uint256 _stepSize) { require(_stepSize <= 1000000, "step size must not exceed 1000000"); _; } constructor() public { round[rId].start = startTime; stage[rId][sId].start = startTime; uint256 i; while(i < cardList.length){ cardList[i].playerAddress = fairProfitContract; cardList[i].amount = 1 ether; i++; } } function openModifyCountdown() senderVerify() isDeveloperAddr() public { require(modifyCountdown == false, "Time service is already open"); modifyCountdown = true; } function closeModifyCountdown() senderVerify() isDeveloperAddr() public { require(modifyCountdown == true, "Time service is already open"); modifyCountdown = false; } function purchaseCard(uint256 _cId) cardTimeVerify() senderVerify() payable public { address _player = msg.sender; uint256 _amount = msg.value; uint256 _purchasePrice = cardList[_cId].amount.mul(110) / 100; require( cardList[_cId].playerAddress != address(0) && cardList[_cId].playerAddress != _player && _amount >= _purchasePrice, "Failed purchase" ); if(cardIndexToApproved[_cId] != address(0)){ cardIndexToApproved[_cId].send( cardList[_cId].amount.mul(105) / 100 ); delete cardIndexToApproved[_cId]; }else cardList[_cId].playerAddress.send( cardList[_cId].amount.mul(105) / 100 ); fairProfitContract.send(cardList[_cId].amount.mul(5) / 100); if(_amount > _purchasePrice) _player.send(_amount.sub(_purchasePrice)); cardList[_cId].amount = _purchasePrice; cardList[_cId].playerAddress = _player; } /** * Fallback function to handle ethereum that was send straight to the contract * Unfortunately we cannot use a referral address this way. */ function() startTimeVerify() senderVerify() buyVerify() payable public { buyAnalysis(100, standardProtectRatio); } function buy(uint256 _stepSize, uint256 _protectRatio) startTimeVerify() senderVerify() buyVerify() stepSizeVerify(_stepSize) public payable { buyAnalysis( _stepSize <= 0 ? 100 : _stepSize, _protectRatio <= 100 ? _protectRatio : standardProtectRatio ); } /** * Standard withdraw function. */ function withdraw() startTimeVerify() senderVerify() withdrawVerify() public { address _player = msg.sender; uint256[] memory _playerGoodsList = playerGoodsList[_player]; uint256 length = _playerGoodsList.length; uint256 _totalAmount; uint256 _amount; uint256 _withdrawSid; uint256 _reachAmount; bool _finish; uint256 i; delete playerGoodsList[_player]; while(i < length){ (_amount, _withdrawSid, _reachAmount, _finish) = getEarningsAmountByGoodsIndex(_playerGoodsList[i]); if(_finish == true){ playerWithdrawList[_player].push(_playerGoodsList[i]); }else{ goodsList[_playerGoodsList[i]].withdrawSid = _withdrawSid; goodsList[_playerGoodsList[i]].reachAmount = _reachAmount; playerGoodsList[_player].push(_playerGoodsList[i]); } _totalAmount = _totalAmount.add(_amount); i++; } _player.transfer(_totalAmount); } /** * Backup withdraw function in case gas is too high to use standard withdraw. */ function withdrawByGid(uint256 _gId) startTimeVerify() senderVerify() withdrawVerify() public { address _player = msg.sender; uint256 _amount; uint256 _withdrawSid; uint256 _reachAmount; bool _finish; (_amount, _withdrawSid, _reachAmount, _finish) = getEarningsAmountByGoodsIndex(_gId); if(_finish == true){ for(uint256 i = 0; i < playerGoodsList[_player].length; i++){ if(playerGoodsList[_player][i] == _gId) break; } require(i < playerGoodsList[_player].length, "gid is wrong"); playerWithdrawList[_player].push(_gId); playerGoodsList[_player][i] = playerGoodsList[_player][playerGoodsList[_player].length - 1]; playerGoodsList[_player].length--; }else{ goodsList[_gId].withdrawSid = _withdrawSid; goodsList[_gId].reachAmount = _reachAmount; } _player.transfer(_amount); } function resetTime() modifyCountdownVerify() senderVerify() public payable { uint256 _rId = rId; uint256 _sId = sId; uint256 _amount = msg.value; uint256 _targetExpectedAmount = getStageTargetAmount(_sId); uint256 _targetAmount = stage[_rId][_sId].dividendAmount <= _targetExpectedAmount ? _targetExpectedAmount : stage[_rId][_sId].dividendAmount; _targetAmount = _targetAmount.mul(100) / 88; uint256 _costAmount = _targetAmount.mul(20) / 100; if(_costAmount > 3 ether) _costAmount = 3 ether; require(_amount >= _costAmount, "Not enough price"); stage[_rId][_sId].start = now; cardList[5].playerAddress.send(_costAmount / 2); developerAddr.send(_costAmount / 2); if(_amount > _costAmount) msg.sender.send(_amount.sub(_costAmount)); } function reduceTime() modifyCountdownVerify() senderVerify() public payable { uint256 _rId = rId; uint256 _sId = sId; uint256 _amount = msg.value; uint256 _targetExpectedAmount = getStageTargetAmount(_sId); uint256 _targetAmount = stage[_rId][_sId].dividendAmount <= _targetExpectedAmount ? _targetExpectedAmount : stage[_rId][_sId].dividendAmount; _targetAmount = _targetAmount.mul(100) / 88; uint256 _costAmount = _targetAmount.mul(30) / 100; if(_costAmount > 3 ether) _costAmount = 3 ether; require(_amount >= _costAmount, "Not enough price"); stage[_rId][_sId].start = now - stageDuration + 900; cardList[5].playerAddress.send(_costAmount / 2); developerAddr.send(_costAmount / 2); if(_amount > _costAmount) msg.sender.send(_amount.sub(_costAmount)); } /** * Core logic to analyse buy behaviour. */ function buyAnalysis(uint256 _stepSize, uint256 _protectRatio) private { uint256 _rId = rId; uint256 _sId = sId; uint256 _targetExpectedAmount = getStageTargetAmount(_sId); uint256 _targetAmount = stage[_rId][_sId].dividendAmount <= _targetExpectedAmount ? _targetExpectedAmount : stage[_rId][_sId].dividendAmount; _targetAmount = _targetAmount.mul(100) / 88; uint256 _stageTargetBalance = stage[_rId][_sId].amount > 0 ? _targetAmount.sub(stage[_rId][_sId].amount) : _targetAmount; if(now > stage[_rId][_sId].start.add(stageDuration) && _targetAmount > stage[_rId][_sId].amount ){ endRound(_rId, _sId); _rId = rId; _sId = sId; stage[_rId][_sId].start = now; _targetExpectedAmount = getStageTargetAmount(_sId); _targetAmount = stage[_rId][_sId].dividendAmount <= _targetExpectedAmount ? _targetExpectedAmount : stage[_rId][_sId].dividendAmount; _targetAmount = _targetAmount.mul(100) / 88; _stageTargetBalance = stage[_rId][_sId].amount > 0 ? _targetAmount.sub(stage[_rId][_sId].amount) : _targetAmount; } if(_stageTargetBalance > msg.value) buyDataRecord( _rId, _sId, _targetAmount, msg.value, _stepSize, _protectRatio ); else multiStake( msg.value, _stepSize, _protectRatio, _targetAmount, _stageTargetBalance ); /* This is a backstop check to ensure that the contract will always be solvent. It would reject any stakes with a protection ratio that the contract may not be able to repay. This backstop should never be needed under current settings. */ require( ( round[_rId].jackpotAmount.add(round[_rId].amount.mul(88) / 100) .sub(round[_rId].protectAmount) .sub(round[_rId].dividendAmount) ) > 0, "data error" ); bankerFeeDataRecord(msg.value, _protectRatio); } function multiStake(uint256 _amount, uint256 _stepSize, uint256 _protectRatio, uint256 _targetAmount, uint256 _stageTargetBalance) private { uint256 _rId = rId; uint256 _sId = sId; uint256 _crossStageNum = 1; uint256 _protectTotalAmount; uint256 _dividendTotalAmount; while(true){ if(_crossStageNum == 1){ playerDataRecord( _rId, _sId, _amount, _stageTargetBalance, _stepSize, _protectRatio, _crossStageNum ); round[_rId].amount = round[_rId].amount.add(_amount); round[_rId].protectAmount = round[_rId].protectAmount.add( _amount.mul(_protectRatio.mul(88)) / 10000); } buyStageDataRecord( _rId, _sId, _targetAmount, _stageTargetBalance, _sId. add(_stepSize), _protectRatio ); _dividendTotalAmount = _dividendTotalAmount.add(stage[_rId][_sId].dividendAmount); _protectTotalAmount = _protectTotalAmount.add(stage[_rId][_sId].protectAmount); _sId++; _amount = _amount.sub(_stageTargetBalance); _targetAmount = stage[_rId][_sId].dividendAmount <= getStageTargetAmount(_sId) ? getStageTargetAmount(_sId) : stage[_rId][_sId].dividendAmount; _targetAmount = _targetAmount.mul(100) / 88; _stageTargetBalance = _targetAmount; _crossStageNum++; if(_stageTargetBalance >= _amount){ buyStageDataRecord( _rId, _sId, _targetAmount, _amount, _sId.add(_stepSize), _protectRatio ); playerDataRecord( _rId, _sId, 0, _amount, _stepSize, _protectRatio, _crossStageNum ); if(_targetAmount == _amount) _sId++; stage[_rId][_sId].start = now; sId = _sId; round[_rId].protectAmount = round[_rId].protectAmount.sub(_protectTotalAmount); round[_rId].dividendAmount = round[_rId].dividendAmount.add(_dividendTotalAmount); break; } } } /** * Records all data. */ function buyDataRecord(uint256 _rId, uint256 _sId, uint256 _targetAmount, uint256 _amount, uint256 _stepSize, uint256 _protectRatio) private { uint256 _expectEndSid = _sId.add(_stepSize); uint256 _protectAmount = _amount.mul(_protectRatio.mul(88)) / 10000; round[_rId].amount = round[_rId].amount.add(_amount); round[_rId].protectAmount = round[_rId].protectAmount.add(_protectAmount); stage[_rId][_sId].amount = stage[_rId][_sId].amount.add(_amount); stage[_rId][_expectEndSid].protectAmount = stage[_rId][_expectEndSid].protectAmount.add(_protectAmount); stage[_rId][_expectEndSid].dividendAmount = stage[_rId][_expectEndSid].dividendAmount.add( computeEarningsAmount(_sId, _amount, _targetAmount, _expectEndSid, 100 - _protectRatio ) ); FBankdatasets.Goods memory _goods; _goods.rId = _rId; _goods.startSid = _sId; _goods.amount = _amount; _goods.endSid = _expectEndSid; _goods.protectRatio = _protectRatio; playerGoodsList[msg.sender].push(goodsList.push(_goods) - 1); } /** * Records the stage data. */ function buyStageDataRecord(uint256 _rId, uint256 _sId, uint256 _targetAmount, uint256 _amount, uint256 _expectEndSid, uint256 _protectRatio) private { uint256 _protectAmount = _amount.mul(_protectRatio.mul(88)) / 10000; if(_targetAmount != _amount) stage[_rId][_sId].amount = stage[_rId][_sId].amount.add(_amount); stage[_rId][_expectEndSid].protectAmount = stage[_rId][_expectEndSid].protectAmount.add(_protectAmount); stage[_rId][_expectEndSid].dividendAmount = stage[_rId][_expectEndSid].dividendAmount.add( computeEarningsAmount( _sId, _amount, _targetAmount, _expectEndSid, 100 - _protectRatio ) ); } /** * Records the player data. */ function playerDataRecord(uint256 _rId, uint256 _sId, uint256 _totalAmount, uint256 _stageBuyAmount, uint256 _stepSize, uint256 _protectRatio, uint256 _crossStageNum) private { if(_crossStageNum <= 1){ FBankdatasets.Goods memory _goods; _goods.rId = _rId; _goods.startSid = _sId; _goods.amount = _totalAmount; _goods.stepSize = _stepSize; _goods.protectRatio = _protectRatio; if(_crossStageNum == 1) _goods.startAmount = _stageBuyAmount; playerGoodsList[msg.sender].push(goodsList.push(_goods) - 1); } else{ uint256 _goodsIndex = goodsList.length - 1; goodsList[_goodsIndex].endAmount = _stageBuyAmount; goodsList[_goodsIndex].endSid = _sId; } } function bankerFeeDataRecord(uint256 _amount, uint256 _protectRatio) private { round[rId].jackpotAmount = round[rId].jackpotAmount.add(_amount.mul(9).div(100)); uint256 _cardAmount = _amount / 100; if(_protectRatio == 0) cardList[0].playerAddress.send(_cardAmount); else if(_protectRatio > 0 && _protectRatio < 57) cardList[1].playerAddress.send(_cardAmount); else if(_protectRatio == 57) cardList[2].playerAddress.send(_cardAmount); else if(_protectRatio > 57 && _protectRatio < 100) cardList[3].playerAddress.send(_cardAmount); else if(_protectRatio == 100) cardList[4].playerAddress.send(_cardAmount); fairProfitContract.send(_amount.div(50)); } function endRound(uint256 _rId, uint256 _sId) private { round[_rId].end = now; round[_rId].ended = true; round[_rId].endSid = _sId; if(stage[_rId][_sId].amount > 0) round[_rId + 1].jackpotAmount = ( round[_rId].jackpotAmount.add(round[_rId].amount.mul(88) / 100) .sub(round[_rId].protectAmount) .sub(round[_rId].dividendAmount) ).mul(20).div(100); else round[_rId + 1].jackpotAmount = ( round[_rId].jackpotAmount.add(round[_rId].amount.mul(88) / 100) .sub(round[_rId].protectAmount) .sub(round[_rId].dividendAmount) ); round[_rId + 1].start = now; rId++; sId = 1; } function getStageTargetAmount(uint256 _sId) public view returns(uint256) { return bankCompute.getStageTargetAmount(_sId); } function computeEarningsAmount(uint256 _sId, uint256 _amount, uint256 _currentTargetAmount, uint256 _expectEndSid, uint256 _ratio) public view returns(uint256) { return bankCompute.computeEarningsAmount(_sId, _amount, _currentTargetAmount, _expectEndSid, _ratio); } function getEarningsAmountByGoodsIndex(uint256 _goodsIndex) public view returns(uint256, uint256, uint256, bool) { FBankdatasets.Goods memory _goods = goodsList[_goodsIndex]; uint256 _sId = sId; uint256 _amount; uint256 _targetExpectedAmount; uint256 _targetAmount; if(_goods.stepSize == 0){ if(round[_goods.rId].ended == true){ if(round[_goods.rId].endSid > _goods.endSid){ _targetExpectedAmount = getStageTargetAmount(_goods.startSid); _targetAmount = stage[_goods.rId][_goods.startSid].dividendAmount <= _targetExpectedAmount ? _targetExpectedAmount : stage[_goods.rId][_goods.startSid].dividendAmount; _targetAmount = _targetAmount.mul(100) / 88; _amount = computeEarningsAmount( _goods.startSid, _goods.amount, _targetAmount, _goods.endSid, 100 - _goods.protectRatio ); }else _amount = _goods.amount.mul(_goods.protectRatio.mul(88)) / 10000; if(round[_goods.rId].endSid == _goods.startSid) _amount = _amount.add( _goods.amount.mul( getRoundJackpot(_goods.rId) ).div(stage[_goods.rId][_goods.startSid].amount) ); return (_amount, 0, 0, true); }else{ if(_sId > _goods.endSid){ _targetExpectedAmount = getStageTargetAmount(_goods.startSid); _targetAmount = stage[_goods.rId][_goods.startSid].dividendAmount <= _targetExpectedAmount ? _targetExpectedAmount : stage[_goods.rId][_goods.startSid].dividendAmount; _targetAmount = _targetAmount.mul(100) / 88; _amount = computeEarningsAmount( _goods.startSid, _goods.amount, _targetAmount, _goods.endSid, 100 - _goods.protectRatio ); }else return (0, 0, 0, false); } return (_amount, 0, 0, true); }else{ uint256 _startSid = _goods.withdrawSid == 0 ? _goods.startSid : _goods.withdrawSid; uint256 _ratio = 100 - _goods.protectRatio; uint256 _reachAmount = _goods.reachAmount; if(round[_goods.rId].ended == true){ while(true){ if(_startSid - (_goods.withdrawSid == 0 ? _goods.startSid : _goods.withdrawSid) > 100){ return (_amount, _startSid, _reachAmount, false); } if(round[_goods.rId].endSid > _startSid.add(_goods.stepSize)){ _targetExpectedAmount = getStageTargetAmount(_startSid); _targetAmount = stage[_goods.rId][_startSid].dividendAmount <= _targetExpectedAmount ? _targetExpectedAmount : stage[_goods.rId][_startSid].dividendAmount; _targetAmount = _targetAmount.mul(100) / 88; if(_startSid == _goods.endSid){ _amount = _amount.add( computeEarningsAmount( _startSid, _goods.endAmount, _targetAmount, _startSid.add(_goods.stepSize), _ratio ) ); return (_amount, _goods.endSid, 0, true); } _amount = _amount.add( computeEarningsAmount( _startSid, _startSid == _goods.startSid ? _goods.startAmount : _targetAmount, _targetAmount, _startSid.add(_goods.stepSize), _ratio ) ); _reachAmount = _reachAmount.add( _startSid == _goods.startSid ? _goods.startAmount : _targetAmount ); }else{ _amount = _amount.add( (_goods.amount.sub(_reachAmount)) .mul(_goods.protectRatio.mul(88)) / 10000 ); if(round[_goods.rId].endSid == _goods.endSid) _amount = _amount.add( _goods.endAmount.mul(getRoundJackpot(_goods.rId)) .div(stage[_goods.rId][_goods.endSid].amount) ); return (_amount, _goods.endSid, 0, true); } _startSid++; } }else{ while(true){ if(_startSid - (_goods.withdrawSid == 0 ? _goods.startSid : _goods.withdrawSid) > 100){ return (_amount, _startSid, _reachAmount, false); } if(_sId > _startSid.add(_goods.stepSize)){ _targetExpectedAmount = getStageTargetAmount(_startSid); _targetAmount = stage[_goods.rId][_startSid].dividendAmount <= _targetExpectedAmount ? _targetExpectedAmount : stage[_goods.rId][_startSid].dividendAmount; _targetAmount = _targetAmount.mul(100) / 88; if(_startSid == _goods.endSid){ _amount = _amount.add( computeEarningsAmount( _startSid, _goods.endAmount, _targetAmount, _startSid.add(_goods.stepSize), _ratio ) ); return (_amount, _goods.endSid, 0, true); } _amount = _amount.add( computeEarningsAmount( _startSid, _startSid == _goods.startSid ? _goods.startAmount : _targetAmount, _targetAmount, _startSid.add(_goods.stepSize), _ratio ) ); _reachAmount = _reachAmount.add( _startSid == _goods.startSid ? _goods.startAmount : _targetAmount ); }else return (_amount, _startSid, _reachAmount, false); _startSid++; } } } } function getRoundJackpot(uint256 _rId) public view returns(uint256) { return ( ( round[_rId].jackpotAmount .add(round[_rId].amount.mul(88) / 100)) .sub(round[_rId].protectAmount) .sub(round[_rId].dividendAmount) ).mul(80).div(100); } function getHeadInfo() public view returns(uint256, uint256, uint256, uint256, uint256, uint256, uint256) { uint256 _targetExpectedAmount = getStageTargetAmount(sId); return ( rId, sId, startTime, stage[rId][sId].start.add(stageDuration), stage[rId][sId].amount, ( stage[rId][sId].dividendAmount <= _targetExpectedAmount ? _targetExpectedAmount : stage[rId][sId].dividendAmount ).mul(100) / 88, round[rId].jackpotAmount.add(round[rId].amount.mul(88) / 100) .sub(round[rId].protectAmount) .sub(round[rId].dividendAmount) ); } function getPlayerGoodList(address _player) public view returns(uint256[]) { return playerGoodsList[_player]; } function totalSupply() public view returns (uint256 total) { return cardList.length; } function balanceOf(address _owner) public view returns (uint256 balance) { uint256 _length = cardList.length; uint256 _count; for(uint256 i = 0; i < _length; i++){ if(cardList[i].playerAddress == _owner) _count++; } return _count; } function ownerOf(uint256 _tokenId) public view returns (address owner) { require(cardList.length > _tokenId, "tokenId error"); owner = cardList[_tokenId].playerAddress; require(owner != address(0), "No owner"); } function approve(address _to, uint256 _tokenId) senderVerify() public { require (player[_to], "Not a registered user"); require (msg.sender == cardList[_tokenId].playerAddress, "The card does not belong to you"); require (cardList.length > _tokenId, "tokenId error"); require (cardIndexToApproved[_tokenId] == address(0), "Approved"); cardIndexToApproved[_tokenId] = _to; emit Approval(msg.sender, _to, _tokenId); } function takeOwnership(uint256 _tokenId) senderVerify() public { address _newOwner = msg.sender; address _oldOwner = cardList[_tokenId].playerAddress; require(_newOwner != address(0), "Address error"); require(_newOwner == cardIndexToApproved[_tokenId], "Without permission"); cardList[_tokenId].playerAddress = _newOwner; delete cardIndexToApproved[_tokenId]; emit Transfer(_oldOwner, _newOwner, _tokenId); } function transfer(address _to, uint256 _tokenId) senderVerify() public { require (msg.sender == cardList[_tokenId].playerAddress, "The card does not belong to you"); require(_to != address(0), "Address error"); require(_to == cardIndexToApproved[_tokenId], "Without permission"); cardList[_tokenId].playerAddress = _to; if(cardIndexToApproved[_tokenId] != address(0)) delete cardIndexToApproved[_tokenId]; emit Transfer(msg.sender, _to, _tokenId); } function transferFrom(address _from, address _to, uint256 _tokenId) senderVerify() public { require (_from == cardList[_tokenId].playerAddress, "Owner error"); require(_to != address(0), "Address error"); require(_to == cardIndexToApproved[_tokenId], "Without permission"); cardList[_tokenId].playerAddress = _to; delete cardIndexToApproved[_tokenId]; emit Transfer(_from, _to, _tokenId); } } library FBankdatasets { struct Round { uint256 start; uint256 end; bool ended; uint256 endSid; uint256 amount; uint256 protectAmount; uint256 dividendAmount; uint256 jackpotAmount; } struct Stage { uint256 start; uint256 amount; uint256 protectAmount; uint256 dividendAmount; } struct Goods { uint256 rId; uint256 startSid; uint256 endSid; uint256 withdrawSid; uint256 amount; uint256 startAmount; uint256 endAmount; uint256 reachAmount; uint256 stepSize; uint256 protectRatio; } struct Card { address playerAddress; uint256 amount; } } /** * Anti clone protection. * Do not clone this contract without permission even if you manage to break the conceal. * The concealed code contains core calculations necessary for this contract to function. * This contract can be licensed for a fee, contact us instead of cloning! */ interface FairBankCompute { function getStageTargetAmount(uint256 _sId) external view returns(uint256); function computeEarningsAmount(uint256 _sId, uint256 _amount, uint256 _currentTargetAmount, uint256 _expectEndSid, uint256 _ratio) external view returns(uint256); } /** * @title SafeMath v0.1.9 * @dev Math operations with safety checks that throw on error */ library SafeMath { /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); 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) { assert(b <= a); return a - b; } /** * @dev Multiplies two numbers, throws on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; assert(c / a == b); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @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
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_player","type":"address"}],"name":"getPlayerGoodList","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"total","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"playerWithdrawList","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"goodsList","outputs":[{"name":"rId","type":"uint256"},{"name":"startSid","type":"uint256"},{"name":"endSid","type":"uint256"},{"name":"withdrawSid","type":"uint256"},{"name":"amount","type":"uint256"},{"name":"startAmount","type":"uint256"},{"name":"endAmount","type":"uint256"},{"name":"reachAmount","type":"uint256"},{"name":"stepSize","type":"uint256"},{"name":"protectRatio","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"closeModifyCountdown","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"developerAddr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"stage","outputs":[{"name":"start","type":"uint256"},{"name":"amount","type":"uint256"},{"name":"protectAmount","type":"uint256"},{"name":"dividendAmount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"round","outputs":[{"name":"start","type":"uint256"},{"name":"end","type":"uint256"},{"name":"ended","type":"bool"},{"name":"endSid","type":"uint256"},{"name":"amount","type":"uint256"},{"name":"protectAmount","type":"uint256"},{"name":"dividendAmount","type":"uint256"},{"name":"jackpotAmount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"cardIndexToApproved","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"player","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"standardProtectRatio","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"resetTime","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_goodsIndex","type":"uint256"}],"name":"getEarningsAmountByGoodsIndex","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_sId","type":"uint256"},{"name":"_amount","type":"uint256"},{"name":"_currentTargetAmount","type":"uint256"},{"name":"_expectEndSid","type":"uint256"},{"name":"_ratio","type":"uint256"}],"name":"computeEarningsAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fairProfitContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_rId","type":"uint256"}],"name":"getRoundJackpot","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_cId","type":"uint256"}],"name":"purchaseCard","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stageDuration","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"takeOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_gId","type":"uint256"}],"name":"withdrawByGid","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"modifyCountdown","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"playerGoodsList","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cardTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getHeadInfo","outputs":[{"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":false,"inputs":[{"name":"_stepSize","type":"uint256"},{"name":"_protectRatio","type":"uint256"}],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_sId","type":"uint256"}],"name":"getStageTargetAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"cardList","outputs":[{"name":"playerAddress","type":"address"},{"name":"amount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"openModifyCountdown","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"reduceTime","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"approved","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"}]
Contract Creation Code
60008054600160a060020a031990811673bc817a495f0114755da5305c5aa84fc5ca7ebabd17909155600180549091167353a39eef083c4a91e36145176cc9f52be29b728817905560c0604052602060808190527f4661697244415050202d2042616e6b2053696d756c61746f72202d20466f6d6f60a0908152620000889160029190620001bf565b506040805180820190915260098082527f4642616e6b466f6d6f00000000000000000000000000000000000000000000006020909201918252620000cf91600391620001bf565b50610e1060045560396005556006805460ff19169055635bca7e10600755635bca700060085560016009819055600a553480156200010c57600080fd5b50600754600980546000908152600b6020908152604080832085905592548252600c8152828220600a5483529052908120919091555b6006811015620001b857600154600160a060020a0316601182600681106200016657fe5b600202018054600160a060020a031916600160a060020a0392909216919091179055670de0b6b3a7640000601182600681106200019f57fe5b6002020160010181905550808060010191505062000142565b5062000264565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200020257805160ff191683800117855562000232565b8280016001018555821562000232579182015b828111156200023257825182559160200191906001019062000215565b506200024092915062000244565b5090565b6200026191905b808211156200024057600081556001016200024b565b90565b6147f180620002746000396000f3006080604052600436106101ed5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461035e578063095ea7b3146103e8578063180392301461040c57806318160ddd1461047d57806323b872dd146104a457806323df93c1146104ce57806328d27f09146104f25780632d6ddfda1461055a57806333b6baf51461056f57806334aed7a0146105a057806334d5f37b146105e1578063394baa0b1461063a5780633ccfd60b146106525780634c54e1b514610667578063501976461461069c57806358761920146106b15780636352211e146106c657806365a114f1146106de578063678bbf24146106e657806370a082311461072657806378c9f9cf1461074757806378e979251461076b5780637c8edcfc1461078057806395d89b411461079557806398f04128146107aa578063a54447aa146107c2578063a9059cbb146107cd578063aafb088e146107f1578063b2e6ceeb14610806578063b604ed1b1461081e578063bed47ed814610836578063c5d3ce1e1461084b578063ce2b785414610860578063d1a392eb14610884578063d571dbac14610899578063d6febde8146108e6578063d9daa497146108f4578063d9f035aa1461090c578063ef8c2c5814610947578063f60436cd1461095c575b6007544210156101fc57600080fd5b333214610241576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff16151561027557336000908152600d60205260409020805460ff191660011790555b66038d7ea4c680003410156102b35760008054604051600160a060020a03909116913480156108fc02929091818181858888f193505050505061035c565b66038d7ea4c68000341015610312576040805160e560020a62461bcd02815260206004820152601d60248201527f6d696e696d756d20616d6f756e7420697320302e303031206574686572000000604482015290519081900360640190fd5b6019600a54101561032f576405d21dba003a111561032f57600080fd5b6019600a54101561034f57678ac7230489e8000034111561034f57600080fd5b61035c6064600554610964565b005b34801561036a57600080fd5b50610373610c9d565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103ad578181015183820152602001610395565b50505050905090810190601f1680156103da5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103f457600080fd5b5061035c600160a060020a0360043516602435610d28565b34801561041857600080fd5b5061042d600160a060020a0360043516610fb7565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610469578181015183820152602001610451565b505050509050019250505060405180910390f35b34801561048957600080fd5b50610492611024565b60408051918252519081900360200190f35b3480156104b057600080fd5b5061035c600160a060020a036004358116906024351660443561102a565b3480156104da57600080fd5b50610492600160a060020a0360043516602435611278565b3480156104fe57600080fd5b5061050a6004356112a8565b604080519a8b5260208b0199909952898901979097526060890195909552608088019390935260a087019190915260c086015260e085015261010084015261012083015251908190036101400190f35b34801561056657600080fd5b5061035c61130a565b34801561057b57600080fd5b50610584611450565b60408051600160a060020a039092168252519081900360200190f35b3480156105ac57600080fd5b506105bb60043560243561145f565b604080519485526020850193909352838301919091526060830152519081900360800190f35b3480156105ed57600080fd5b506105f9600435611491565b604080519889526020890197909752941515878701526060870193909352608086019190915260a085015260c084015260e083015251908190036101000190f35b34801561064657600080fd5b506105846004356114d8565b34801561065e57600080fd5b5061035c6114f3565b34801561067357600080fd5b50610688600160a060020a036004351661186f565b604080519115158252519081900360200190f35b3480156106a857600080fd5b50610492611884565b3480156106bd57600080fd5b5061049261188a565b3480156106d257600080fd5b50610584600435611890565b61035c61195e565b3480156106f257600080fd5b506106fe600435611cfa565b6040805194855260208501939093528383019190915215156060830152519081900360800190f35b34801561073257600080fd5b50610492600160a060020a0360043516612480565b34801561075357600080fd5b506104926004356024356044356064356084356124d1565b34801561077757600080fd5b50610492612593565b34801561078c57600080fd5b50610584612599565b3480156107a157600080fd5b506103736125a8565b3480156107b657600080fd5b50610492600435612603565b61035c600435612654565b3480156107d957600080fd5b5061035c600160a060020a036004351660243561298e565b3480156107fd57600080fd5b50610492612bf3565b34801561081257600080fd5b5061035c600435612bf9565b34801561082a57600080fd5b5061035c600435612df0565b34801561084257600080fd5b5061049261316a565b34801561085757600080fd5b50610688613170565b34801561086c57600080fd5b50610492600160a060020a0360043516602435613179565b34801561089057600080fd5b50610492613194565b3480156108a557600080fd5b506108ae61319a565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b61035c6004356024356132ee565b34801561090057600080fd5b50610492600435613505565b34801561091857600080fd5b506109246004356135af565b60408051600160a060020a03909316835260208301919091528051918290030190f35b34801561095357600080fd5b5061035c6135d8565b61035c61371d565b600954600a546000808061097784613505565b6000868152600c602090815260408083208884529091529020600301549093508310156109c0576000858152600c602090815260408083208784529091529020600301546109c2565b825b915060586109d783606463ffffffff613a2f16565b8115156109e057fe5b6000878152600c6020908152604080832089845290915281206001015492909104935010610a0e5781610a3c565b6000858152600c60209081526040808320878452909152902060010154610a3c90839063ffffffff613a6516565b6004546000878152600c60209081526040808320898452909152902054919250610a6c919063ffffffff613a7716565b42118015610a9557506000858152600c6020908152604080832087845290915290206001015482115b15610b9c57610aa48585613a86565b600954600a546000828152600c6020908152604080832084845290915290204290559095509350610ad484613505565b6000868152600c60209081526040808320888452909152902060030154909350831015610b1d576000858152600c60209081526040808320878452909152902060030154610b1f565b825b91506058610b3483606463ffffffff613a2f16565b811515610b3d57fe5b6000878152600c6020908152604080832089845290915281206001015492909104935010610b6b5781610b99565b6000858152600c60209081526040808320878452909152902060010154610b9990839063ffffffff613a6516565b90505b34811115610bb757610bb2858584348b8b613bd4565b610bc4565b610bc43488888585613f2e565b6000858152600b6020526040812060068101546005820154600490920154610c3592610c29918290606490610c0090605863ffffffff613a2f16565b811515610c0957fe5b60008d8152600b602052604090206007015491900463ffffffff613a7716565b9063ffffffff613a6516565b11610c8a576040805160e560020a62461bcd02815260206004820152600a60248201527f64617461206572726f7200000000000000000000000000000000000000000000604482015290519081900360640190fd5b610c9434876141c2565b50505050505050565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015610d205780601f10610cf557610100808354040283529160200191610d20565b820191906000526020600020905b815481529060010190602001808311610d0357829003601f168201915b505050505081565b333214610d6d576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff161515610da157336000908152600d60205260409020805460ff191660011790555b600160a060020a0382166000908152600d602052604090205460ff161515610e13576040805160e560020a62461bcd02815260206004820152601560248201527f4e6f742061207265676973746572656420757365720000000000000000000000604482015290519081900360640190fd5b60118160068110610e2057fe5b6002020154600160a060020a03163314610e84576040805160e560020a62461bcd02815260206004820152601f60248201527f546865206361726420646f6573206e6f742062656c6f6e6720746f20796f7500604482015290519081900360640190fd5b60068110610edc576040805160e560020a62461bcd02815260206004820152600d60248201527f746f6b656e4964206572726f7200000000000000000000000000000000000000604482015290519081900360640190fd5b6000818152601d6020526040902054600160a060020a031615610f49576040805160e560020a62461bcd02815260206004820152600860248201527f417070726f766564000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000818152601d60209081526040918290208054600160a060020a038616600160a060020a0319909116811790915582513381529182015280820183905290517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259181900360600190a15050565b600160a060020a0381166000908152600e602090815260409182902080548351818402810184019094528084526060939283018282801561101757602002820191906000526020600020905b815481526020019060010190808311611003575b505050505090505b919050565b60065b90565b33321461106f576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff1615156110a357336000908152600d60205260409020805460ff191660011790555b601181600681106110b057fe5b6002020154600160a060020a03848116911614611117576040805160e560020a62461bcd02815260206004820152600b60248201527f4f776e6572206572726f72000000000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0382161515611177576040805160e560020a62461bcd02815260206004820152600d60248201527f41646472657373206572726f7200000000000000000000000000000000000000604482015290519081900360640190fd5b6000818152601d6020526040902054600160a060020a038381169116146111e8576040805160e560020a62461bcd02815260206004820152601260248201527f576974686f7574207065726d697373696f6e0000000000000000000000000000604482015290519081900360640190fd5b81601182600681106111f657fe5b600202018054600160a060020a03928316600160a060020a0319918216179091556000838152601d602090815260409182902080549093169092558051868416815292851691830191909152818101839052517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360600190a1505050565b600f6020528160005260406000208181548110151561129357fe5b90600052602060002001600091509150505481565b60108054829081106112b657fe5b90600052602060002090600a0201600091509050806000015490806001015490806002015490806003015490806004015490806005015490806006015490806007015490806008015490806009015490508a565b33321461134f576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff16151561138357336000908152600d60205260409020805460ff191660011790555b600054600160a060020a031633146113e5576040805160e560020a62461bcd02815260206004820152601160248201527f5065726d697373696f6e2064656e696564000000000000000000000000000000604482015290519081900360640190fd5b60065460ff161515600114611444576040805160e560020a62461bcd02815260206004820152601c60248201527f54696d65207365727669636520697320616c7265616479206f70656e00000000604482015290519081900360640190fd5b6006805460ff19169055565b600054600160a060020a031681565b600c60209081526000928352604080842090915290825290208054600182015460028301546003909301549192909184565b600b60205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007909701549596949560ff9094169492939192909188565b601d60205260009081526040902054600160a060020a031681565b600060606000806000806000806000600754421015151561151357600080fd5b333214611558576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff16151561158c57336000908152600d60205260409020805460ff191660011790555b336000908152600e60205260408120541161163d576040805160e560020a62461bcd02815260206004820152604260248201527f7573657220686173206e6f7420707572636861736564207468652070726f647560448201527f6374206f722068617320636f6d706c657465642074686520776974686472617760648201527f616c000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b336000818152600e60209081526040918290208054835181840281018401909452808452939c5091929083018282801561169657602002820191906000526020600020905b815481526020019060010190808311611682575b50508351600160a060020a038e166000908152600e60205260408120959d50909b506116c794935091506146f29050565b8681101561182d576116ef88828151811015156116e057fe5b90602001906020020151611cfa565b929750909550935091506001821515141561174d57600160a060020a0389166000908152600f60205260409020885189908390811061172a57fe5b602090810290910181015182546001810184556000938452919092200155611813565b836010898381518110151561175e57fe5b602090810290910101518154811061177257fe5b90600052602060002090600a020160030181905550826010898381518110151561179857fe5b60209081029091010151815481106117ac57fe5b90600052602060002090600a020160070181905550600e60008a600160a060020a0316600160a060020a0316815260200190815260200160002088828151811015156117f457fe5b6020908102909101810151825460018101845560009384529190922001555b611823868663ffffffff613a7716565b95506001016116c7565b604051600160a060020a038a169087156108fc029088906000818181858888f19350505050158015611863573d6000803e3d6000fd5b50505050505050505050565b600d6020526000908152604090205460ff1681565b60095481565b60055481565b6000600682106118ea576040805160e560020a62461bcd02815260206004820152600d60248201527f746f6b656e4964206572726f7200000000000000000000000000000000000000604482015290519081900360640190fd5b601182600681106118f757fe5b6002020154600160a060020a0316905080151561101f576040805160e560020a62461bcd02815260206004820152600860248201527f4e6f206f776e6572000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6006546000908190819081908190819060ff1615156001146119f0576040805160e560020a62461bcd02815260206004820152603460248201527f746869732066656174757265206973206e6f74207475726e6564206f6e206f7260448201527f20686173206265656e207475726e6564206f6666000000000000000000000000606482015290519081900360840190fd5b6009546000908152600c60209081526040808320600a548452909152902054421015611ab3576040805160e560020a62461bcd028152602060048201526044602482018190527f43616e206f6e6c7920757365207468652061646474696d652f72656475636520908201527f74696d652066756e6374696f6e73207768656e2067616d65206861732073746160648201527f7274656400000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b333214611af8576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff161515611b2c57336000908152600d60205260409020805460ff191660011790555b6009549550600a549450349350611b4285613505565b6000878152600c60209081526040808320898452909152902060030154909350831015611b8b576000868152600c60209081526040808320888452909152902060030154611b8d565b825b91506058611ba283606463ffffffff613a2f16565b811515611bab57fe5b0491506064611bc183601463ffffffff613a2f16565b811515611bca57fe5b0490506729a2241af62c0000811115611be857506729a2241af62c00005b80841015611c40576040805160e560020a62461bcd02815260206004820152601060248201527f4e6f7420656e6f75676820707269636500000000000000000000000000000000604482015290519081900360640190fd5b6000868152600c602090815260408083208884529091529020429055601160055b60029081029190910154604051600160a060020a0390911691830480156108fc02916000818181858888f1505060008054604051600160a060020a0390911694506002860480156108fc029450925090818181858888f193505050505080841115611cf257336108fc611cda868463ffffffff613a6516565b6040518115909202916000818181858888f150505050505b505050505050565b600080600080611d08614713565b600080600080600080600060108d815481101515611d2257fe5b90600052602060002090600a020161014060405190810160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152602001600882015481526020016009820154815250509750600a549650876101000151600014156120445787516000908152600b602052604090206002015460ff16151560011415611f7b5760408089015189516000908152600b60205291909120600301541115611ea257611e048860200151613505565b88516000908152600c60209081526040808320828d01518452909152902060030154909550851015611e575787516000908152600c60209081526040808320828c01518452909152902060030154611e59565b845b93506058611e6e85606463ffffffff613a2f16565b811515611e7757fe5b049350611e9b88602001518960800151868b604001518c61012001516064036124d1565b9550611edf565b612710611ed2611ec160588b6101200151613a2f90919063ffffffff16565b60808b01519063ffffffff613a2f16565b811515611edb57fe5b0495505b60208089015189516000908152600b9092526040909120600301541415611f665787516000908152600c60209081526040808320828c015184529091529020600101548851611f6391611f5691611f4a90611f3990612603565b60808d01519063ffffffff613a2f16565b9063ffffffff61431216565b879063ffffffff613a7716565b95505b949a5060009950899850600197508a94612471565b876040015187111561203257611f948860200151613505565b88516000908152600c60209081526040808320828d01518452909152902060030154909550851015611fe75787516000908152600c60209081526040808320828c01518452909152902060030154611fe9565b845b93506058611ffe85606463ffffffff613a2f16565b81151561200757fe5b04935061202b88602001518960800151868b604001518c61012001516064036124d1565b9550611f66565b60009b508b9a508a9950899850612471565b60608801511561205857876060015161205e565b87602001515b61012089015160e08a01518a516000908152600b60205260409020600201549295506064919091039350915060ff1615156001141561231f575b606488606001516000146120b05788606001516120b6565b88602001515b840311156120d05785838260009b509b509b509b50612471565b6101008801516120e790849063ffffffff613a7716565b88516000908152600b602052604090206003015411156122325761210a83613505565b88516000908152600c602090815260408083208784529091529020600301549095508510156121575787516000908152600c60209081526040808320868452909152902060030154612159565b845b9350605861216e85606463ffffffff613a2f16565b81151561217757fe5b04935087604001518314156121cb576121b1611f56848a60c00151876121ab8d610100015189613a7790919063ffffffff16565b876124d1565b6040890151909c509a5060009950600198508b9550612471565b612202611f56848a6020015186146121e357866121e9565b8a60a001515b876121ab8d610100015189613a7790919063ffffffff16565b955061222b88602001518414612218578461221e565b8860a001515b829063ffffffff613a7716565b9050612314565b61228d61271061227561225460588c6101200151613a2f90919063ffffffff16565b60808c0151612269908663ffffffff613a6516565b9063ffffffff613a2f16565b81151561227e57fe5b8891900463ffffffff613a7716565b6040808a01518a516000908152600b602052919091206003015491975014156122fa5787516000908152600c60209081526040808320818c0151845290915290206001015488516121b191611f5691611f4a906122e990612603565b60c08d01519063ffffffff613a2f16565b858860400151600060018191509b509b509b509b50612471565b600190920191612098565b6064886060015160001461233757886060015161233d565b88602001515b840311156123575785838260009b509b509b509b50612471565b61010088015161236e90849063ffffffff613a7716565b8711156124545761237e83613505565b88516000908152600c602090815260408083208784529091529020600301549095508510156123cb5787516000908152600c602090815260408083208684529091529020600301546123cd565b845b935060586123e285606463ffffffff613a2f16565b8115156123eb57fe5b049350876040015183141561241f576121b1611f56848a60c00151876121ab8d610100015189613a7790919063ffffffff16565b612437611f56848a6020015186146121e357866121e9565b955061244d88602001518414612218578461221e565b9050612466565b85838260009b509b509b509b50612471565b60019092019161231f565b50505050505050509193509193565b6000600681805b828110156124c957600160a060020a038516601182600681106124a657fe5b6002020154600160a060020a031614156124c1576001909101905b600101612487565b509392505050565b604080517f78c9f9cf0000000000000000000000000000000000000000000000000000000081526004810187905260248101869052604481018590526064810184905260848101839052905160009173dd033ff7e98792694f6b358daeb065d4ff01bd5a916378c9f9cf9160a48082019260209290919082900301818787803b15801561255d57600080fd5b505af1158015612571573d6000803e3d6000fd5b505050506040513d602081101561258757600080fd5b50519695505050505050565b60075481565b600154600160a060020a031681565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d205780601f10610cf557610100808354040283529160200191610d20565b6000818152600b602052604081206006810154600582015460049092015461264e92606492611f4a926050926122699291610c29919082908890610c0090605863ffffffff613a2f16565b92915050565b6000806000600854421015151561266a57600080fd5b3332146126af576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff1615156126e357336000908152600d60205260409020805460ff191660011790555b3392503491506064612713606e601187600681106126fd57fe5b6002020160010154613a2f90919063ffffffff16565b81151561271c57fe5b04905060006011856006811061272e57fe5b6002020154600160a060020a03161480159061276d5750600160a060020a0383166011856006811061275c57fe5b6002020154600160a060020a031614155b80156127795750808210155b15156127cf576040805160e560020a62461bcd02815260206004820152600f60248201527f4661696c65642070757263686173650000000000000000000000000000000000604482015290519081900360640190fd5b6000848152601d6020526040902054600160a060020a031615612861576000848152601d6020526040902054600160a060020a03166108fc606461281b6069601189600681106126fd57fe5b81151561282457fe5b049081150290604051600060405180830381858888f15050506000868152601d602052604090208054600160a060020a0319169055506128b89050565b6011846006811061286e57fe5b6002020154600160a060020a03166108fc60646128936069601189600681106126fd57fe5b81151561289c57fe5b049081150290604051600060405180830381858888f150505050505b600154600160a060020a03166108fc60646128db6005601189600681106126fd57fe5b8115156128e457fe5b049081150290604051600060405180830381858888f19350505050508082111561293d57600160a060020a0383166108fc612925848463ffffffff613a6516565b6040518115909202916000818181858888f150505050505b806011856006811061294b57fe5b60020201600101819055508260118560068110151561296657fe5b600202018054600160a060020a031916600160a060020a039290921691909117905550505050565b3332146129d3576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff161515612a0757336000908152600d60205260409020805460ff191660011790555b60118160068110612a1457fe5b6002020154600160a060020a03163314612a78576040805160e560020a62461bcd02815260206004820152601f60248201527f546865206361726420646f6573206e6f742062656c6f6e6720746f20796f7500604482015290519081900360640190fd5b600160a060020a0382161515612ad8576040805160e560020a62461bcd02815260206004820152600d60248201527f41646472657373206572726f7200000000000000000000000000000000000000604482015290519081900360640190fd5b6000818152601d6020526040902054600160a060020a03838116911614612b49576040805160e560020a62461bcd02815260206004820152601260248201527f576974686f7574207065726d697373696f6e0000000000000000000000000000604482015290519081900360640190fd5b8160118260068110612b5757fe5b600202018054600160a060020a031916600160a060020a039283161790556000828152601d60205260409020541615612ba7576000818152601d602052604090208054600160a060020a03191690555b60408051338152600160a060020a038416602082015280820183905290517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360600190a15050565b60045481565b600080333214612c41576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff161515612c7557336000908152600d60205260409020805460ff191660011790555b33915060118360068110612c8557fe5b6002020154600160a060020a03908116915082161515612cef576040805160e560020a62461bcd02815260206004820152600d60248201527f41646472657373206572726f7200000000000000000000000000000000000000604482015290519081900360640190fd5b6000838152601d6020526040902054600160a060020a03838116911614612d60576040805160e560020a62461bcd02815260206004820152601260248201527f576974686f7574207065726d697373696f6e0000000000000000000000000000604482015290519081900360640190fd5b8160118460068110612d6e57fe5b600202018054600160a060020a03928316600160a060020a0319918216179091556000858152601d602090815260409182902080549093169092558051848416815292851691830191909152818101859052517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360600190a1505050565b6000806000806000806007544210151515612e0a57600080fd5b333214612e4f576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff161515612e8357336000908152600d60205260409020805460ff191660011790555b336000908152600e602052604081205411612f34576040805160e560020a62461bcd02815260206004820152604260248201527f7573657220686173206e6f7420707572636861736564207468652070726f647560448201527f6374206f722068617320636f6d706c657465642074686520776974686472617760648201527f616c000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b339550612f4087611cfa565b92975090955093509150600182151514156130df575060005b600160a060020a0386166000908152600e6020526040902054811015612fbe57600160a060020a0386166000908152600e60205260409020805488919083908110612fa057fe5b90600052602060002001541415612fb657612fbe565b600101612f59565b600160a060020a0386166000908152600e6020526040902054811061302d576040805160e560020a62461bcd02815260206004820152600c60248201527f6769642069732077726f6e670000000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0386166000818152600f602090815260408083208054600181018255908452828420018b9055928252600e9052208054600019810190811061307257fe5b6000918252602080832090910154600160a060020a0389168352600e90915260409091208054839081106130a257fe5b6000918252602080832090910192909255600160a060020a0388168152600e909152604090208054906130d9906000198301614767565b5061312a565b836010888154811015156130ef57fe5b90600052602060002090600a0201600301819055508260108881548110151561311457fe5b90600052602060002090600a0201600701819055505b604051600160a060020a0387169086156108fc029087906000818181858888f19350505050158015613160573d6000803e3d6000fd5b5050505050505050565b600a5481565b60065460ff1681565b600e6020528160005260406000208181548110151561129357fe5b60085481565b6000806000806000806000806131b1600a54613505565b600954600a546007546004546000848152600c602090815260408083208684529091529020549495509293919290916131ef9163ffffffff613a7716565b6009546000908152600c60209081526040808320600a5484529091529020600181015460039091015460589061325d90606490891015613250576009546000908152600c60209081526040808320600a548452909152902060030154612269565b889063ffffffff613a2f16565b81151561326657fe5b6009546000908152600b602052604090206006810154600582015460049092015493909204926132d79291610c299182906064906132ab90605863ffffffff613a2f16565b8115156132b457fe5b6009546000908152600b602052604090206007015491900463ffffffff613a7716565b959e949d50929b5090995097509550909350915050565b6007544210156132fd57600080fd5b333214613342576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff16151561337657336000908152600d60205260409020805460ff191660011790555b66038d7ea4c680003410156133b45760008054604051600160a060020a03909116913480156108fc02929091818181858888f1935050505050613501565b66038d7ea4c68000341015613413576040805160e560020a62461bcd02815260206004820152601d60248201527f6d696e696d756d20616d6f756e7420697320302e303031206574686572000000604482015290519081900360640190fd5b6019600a541015613430576405d21dba003a111561343057600080fd5b6019600a54101561345057678ac7230489e8000034111561345057600080fd5b81620f42408111156134d2576040805160e560020a62461bcd02815260206004820152602160248201527f737465702073697a65206d757374206e6f74206578636565642031303030303060448201527f3000000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6134ff60008411156134e457836134e7565b60645b60648411156134f8576005546134fa565b835b610964565b505b5050565b600073dd033ff7e98792694f6b358daeb065d4ff01bd5a600160a060020a031663d9daa497836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561357d57600080fd5b505af1158015613591573d6000803e3d6000fd5b505050506040513d60208110156135a757600080fd5b505192915050565b601181600681106135bc57fe5b600202018054600190910154600160a060020a03909116915082565b33321461361d576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff16151561365157336000908152600d60205260409020805460ff191660011790555b600054600160a060020a031633146136b3576040805160e560020a62461bcd02815260206004820152601160248201527f5065726d697373696f6e2064656e696564000000000000000000000000000000604482015290519081900360640190fd5b60065460ff161561370e576040805160e560020a62461bcd02815260206004820152601c60248201527f54696d65207365727669636520697320616c7265616479206f70656e00000000604482015290519081900360640190fd5b6006805460ff19166001179055565b6006546000908190819081908190819060ff1615156001146137af576040805160e560020a62461bcd02815260206004820152603460248201527f746869732066656174757265206973206e6f74207475726e6564206f6e206f7260448201527f20686173206265656e207475726e6564206f6666000000000000000000000000606482015290519081900360840190fd5b6009546000908152600c60209081526040808320600a548452909152902054421015613872576040805160e560020a62461bcd028152602060048201526044602482018190527f43616e206f6e6c7920757365207468652061646474696d652f72656475636520908201527f74696d652066756e6374696f6e73207768656e2067616d65206861732073746160648201527f7274656400000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b3332146138b7576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff1615156138eb57336000908152600d60205260409020805460ff191660011790555b6009549550600a54945034935061390185613505565b6000878152600c6020908152604080832089845290915290206003015490935083101561394a576000868152600c6020908152604080832088845290915290206003015461394c565b825b9150605861396183606463ffffffff613a2f16565b81151561396a57fe5b049150606461398083601e63ffffffff613a2f16565b81151561398957fe5b0490506729a2241af62c00008111156139a757506729a2241af62c00005b808410156139ff576040805160e560020a62461bcd02815260206004820152601060248201527f4e6f7420656e6f75676820707269636500000000000000000000000000000000604482015290519081900360640190fd5b6004546000878152600c602090815260408083208984529091529020429190910361038401905560116005611c61565b600080831515613a425760009150613a5e565b50828202828482811515613a5257fe5b0414613a5a57fe5b8091505b5092915050565b600082821115613a7157fe5b50900390565b600082820183811015613a5a57fe5b6000828152600b602090815260408083204260018083019190915560028201805460ff1916821790556003909101859055600c8352818420858552909252822001541115613b34576000828152600b6020526040902060068101546005820154600490920154613b1992606492611f4a926014926122699291610c29919082908890610c0090605863ffffffff613a2f16565b600183016000908152600b6020526040902060070155613bb0565b6000828152600b6020526040902060068101546005820154600490920154613b9992610c29918290606490613b7090605863ffffffff613a2f16565b811515613b7957fe5b6000898152600b602052604090206007015491900463ffffffff613a7716565b600183016000908152600b60205260409020600701555b5060019081016000908152600b602052604090204290556009805482019055600a55565b600080613bdf614713565b613bef888663ffffffff613a7716565b9250612710613c0861325086605863ffffffff613a2f16565b811515613c1157fe5b60008b8152600b60205260409020600401549190049250613c38908763ffffffff613a7716565b60008a8152600b60205260409020600481019190915560050154613c62908363ffffffff613a7716565b60008a8152600b6020908152604080832060050193909355600c81528282208b835290522060010154613c9b908763ffffffff613a7716565b60008a8152600c602090815260408083208c8452909152808220600101929092558481522060020154613cce9083613a77565b60008a8152600c60209081526040808320878452909152902060020155613d28613cff89888a8760648a90036124d1565b60008b8152600c602090815260408083208884529091529020600301549063ffffffff613a7716565b60008a8152600c602090815260408083208784528252808320600301939093559a8352828b01998a52608083019788528282019485526101208301958652338152600e8b5290812060108054600181810183559184528451600a82027f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6728101919091559b517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6738d015595517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6748c015560608401517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6758c015597517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6768b015560a08301517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6778b015560c08301517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6788b015560e08301517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6798b0155610100909201517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67a8a015593517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67b9098019790975550855493840186559481529490942001919091555050565b600954600a5460016000805b8260011415613fe957613f5285858c898d8d89614346565b6000858152600b6020526040902060040154613f74908b63ffffffff613a7716565b6000868152600b6020526040902060040155613fd6612710613fad613fa08b605863ffffffff613a2f16565b8d9063ffffffff613a2f16565b811515613fb657fe5b6000888152600b602052604090206005015491900463ffffffff613a7716565b6000868152600b60205260409020600501555b61400685858989614000838f63ffffffff613a7716565b8d6145be565b6000858152600c6020908152604080832087845290915290206003015461403490829063ffffffff613a7716565b6000868152600c6020908152604080832088845290915290206002015490915061406590839063ffffffff613a7716565b600190940193915061407d8a8763ffffffff613a6516565b995061408884613505565b6000868152600c6020908152604080832088845290915290206003015411156140cd576000858152600c602090815260408083208784529091529020600301546140d6565b6140d684613505565b965060586140eb88606463ffffffff613a2f16565b8115156140f457fe5b0496508695506001909201918986106141bd5761411e8585898d614000838f63ffffffff613a7716565b61412e858560008d8d8d89614346565b8987141561413d576001909301925b6000858152600c602090815260408083208784528252808320429055600a879055878352600b90915290206005015461417c908363ffffffff613a6516565b6000868152600b602052604090206005810191909155600601546141a6908263ffffffff613a7716565b6000868152600b6020526040902060060155611863565b613f3a565b60006141fe6141dd6064611f4a86600963ffffffff613a2f16565b6009546000908152600b60205260409020600701549063ffffffff613a7716565b6009546000908152600b6020526040902060070155506064820481151561425557601160005b6002020154604051600160a060020a039091169082156108fc029083906000818181858888f19350505050506142d6565b6000821180156142655750603982105b156142735760116001614224565b81603914156142855760116002614224565b6039821180156142955750606482105b156142a35760116003614224565b81606414156142d657601954604051600160a060020a03909116906108fc8315029083906000818181858888f150505050505b600154600160a060020a03166108fc6142f685603263ffffffff61431216565b6040518115909202916000818181858888f15050505050505050565b60008080831161431e57fe5b828481151561432957fe5b049050828481151561433757fe5b068184020184141515613a5a57fe5b61434e614713565b60006001831161456157888252602082018890526080820187905261010082018590526101208201849052600183141561438a5760a082018690525b336000908152600e6020908152604080832060108054600181810183559186528751600a82027f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672810191909155888601517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae673820155938801517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67485015560608801517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67585015560808801517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67685015560a08801517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67785015560c08801517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67885015560e08801517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6798501556101008801517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67a8501556101208801517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67b90940193909355815490810182559084529190922001556145b3565b506010805460001981019187918390811061457857fe5b90600052602060002090600a0201600601819055508760108281548110151561459d57fe5b90600052602060002090600a0201600201819055505b505050505050505050565b60006127106145e46145d784605863ffffffff613a2f16565b869063ffffffff613a2f16565b8115156145ed57fe5b049050848414614642576000878152600c60209081526040808320898452909152902060010154614624908563ffffffff613a7716565b6000888152600c602090815260408083208a84529091529020600101555b6000878152600c6020908152604080832086845290915290206002015461466f908263ffffffff613a7716565b6000888152600c602090815260408083208784529091529020600201556146c96146a08786888760648890036124d1565b6000898152600c602090815260408083208884529091529020600301549063ffffffff613a7716565b6000978852600c60209081526040808a20958a5294905292909620600301919091555050505050565b50805460008255906000526020600020908101906147109190614787565b50565b61014060405190810160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8154818355818111156134ff576000838152602090206134ff9181019083015b61102791905b808211156147a1576000815560010161478d565b5090560073656e64657220646f6573206e6f74206d656574207468652072756c65730000a165627a7a723058201ae128c157b14d781cd591015f61c45135599a7723710655ba9b2b850558cf4f0029
Deployed Bytecode
0x6080604052600436106101ed5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde03811461035e578063095ea7b3146103e8578063180392301461040c57806318160ddd1461047d57806323b872dd146104a457806323df93c1146104ce57806328d27f09146104f25780632d6ddfda1461055a57806333b6baf51461056f57806334aed7a0146105a057806334d5f37b146105e1578063394baa0b1461063a5780633ccfd60b146106525780634c54e1b514610667578063501976461461069c57806358761920146106b15780636352211e146106c657806365a114f1146106de578063678bbf24146106e657806370a082311461072657806378c9f9cf1461074757806378e979251461076b5780637c8edcfc1461078057806395d89b411461079557806398f04128146107aa578063a54447aa146107c2578063a9059cbb146107cd578063aafb088e146107f1578063b2e6ceeb14610806578063b604ed1b1461081e578063bed47ed814610836578063c5d3ce1e1461084b578063ce2b785414610860578063d1a392eb14610884578063d571dbac14610899578063d6febde8146108e6578063d9daa497146108f4578063d9f035aa1461090c578063ef8c2c5814610947578063f60436cd1461095c575b6007544210156101fc57600080fd5b333214610241576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff16151561027557336000908152600d60205260409020805460ff191660011790555b66038d7ea4c680003410156102b35760008054604051600160a060020a03909116913480156108fc02929091818181858888f193505050505061035c565b66038d7ea4c68000341015610312576040805160e560020a62461bcd02815260206004820152601d60248201527f6d696e696d756d20616d6f756e7420697320302e303031206574686572000000604482015290519081900360640190fd5b6019600a54101561032f576405d21dba003a111561032f57600080fd5b6019600a54101561034f57678ac7230489e8000034111561034f57600080fd5b61035c6064600554610964565b005b34801561036a57600080fd5b50610373610c9d565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103ad578181015183820152602001610395565b50505050905090810190601f1680156103da5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103f457600080fd5b5061035c600160a060020a0360043516602435610d28565b34801561041857600080fd5b5061042d600160a060020a0360043516610fb7565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610469578181015183820152602001610451565b505050509050019250505060405180910390f35b34801561048957600080fd5b50610492611024565b60408051918252519081900360200190f35b3480156104b057600080fd5b5061035c600160a060020a036004358116906024351660443561102a565b3480156104da57600080fd5b50610492600160a060020a0360043516602435611278565b3480156104fe57600080fd5b5061050a6004356112a8565b604080519a8b5260208b0199909952898901979097526060890195909552608088019390935260a087019190915260c086015260e085015261010084015261012083015251908190036101400190f35b34801561056657600080fd5b5061035c61130a565b34801561057b57600080fd5b50610584611450565b60408051600160a060020a039092168252519081900360200190f35b3480156105ac57600080fd5b506105bb60043560243561145f565b604080519485526020850193909352838301919091526060830152519081900360800190f35b3480156105ed57600080fd5b506105f9600435611491565b604080519889526020890197909752941515878701526060870193909352608086019190915260a085015260c084015260e083015251908190036101000190f35b34801561064657600080fd5b506105846004356114d8565b34801561065e57600080fd5b5061035c6114f3565b34801561067357600080fd5b50610688600160a060020a036004351661186f565b604080519115158252519081900360200190f35b3480156106a857600080fd5b50610492611884565b3480156106bd57600080fd5b5061049261188a565b3480156106d257600080fd5b50610584600435611890565b61035c61195e565b3480156106f257600080fd5b506106fe600435611cfa565b6040805194855260208501939093528383019190915215156060830152519081900360800190f35b34801561073257600080fd5b50610492600160a060020a0360043516612480565b34801561075357600080fd5b506104926004356024356044356064356084356124d1565b34801561077757600080fd5b50610492612593565b34801561078c57600080fd5b50610584612599565b3480156107a157600080fd5b506103736125a8565b3480156107b657600080fd5b50610492600435612603565b61035c600435612654565b3480156107d957600080fd5b5061035c600160a060020a036004351660243561298e565b3480156107fd57600080fd5b50610492612bf3565b34801561081257600080fd5b5061035c600435612bf9565b34801561082a57600080fd5b5061035c600435612df0565b34801561084257600080fd5b5061049261316a565b34801561085757600080fd5b50610688613170565b34801561086c57600080fd5b50610492600160a060020a0360043516602435613179565b34801561089057600080fd5b50610492613194565b3480156108a557600080fd5b506108ae61319a565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b61035c6004356024356132ee565b34801561090057600080fd5b50610492600435613505565b34801561091857600080fd5b506109246004356135af565b60408051600160a060020a03909316835260208301919091528051918290030190f35b34801561095357600080fd5b5061035c6135d8565b61035c61371d565b600954600a546000808061097784613505565b6000868152600c602090815260408083208884529091529020600301549093508310156109c0576000858152600c602090815260408083208784529091529020600301546109c2565b825b915060586109d783606463ffffffff613a2f16565b8115156109e057fe5b6000878152600c6020908152604080832089845290915281206001015492909104935010610a0e5781610a3c565b6000858152600c60209081526040808320878452909152902060010154610a3c90839063ffffffff613a6516565b6004546000878152600c60209081526040808320898452909152902054919250610a6c919063ffffffff613a7716565b42118015610a9557506000858152600c6020908152604080832087845290915290206001015482115b15610b9c57610aa48585613a86565b600954600a546000828152600c6020908152604080832084845290915290204290559095509350610ad484613505565b6000868152600c60209081526040808320888452909152902060030154909350831015610b1d576000858152600c60209081526040808320878452909152902060030154610b1f565b825b91506058610b3483606463ffffffff613a2f16565b811515610b3d57fe5b6000878152600c6020908152604080832089845290915281206001015492909104935010610b6b5781610b99565b6000858152600c60209081526040808320878452909152902060010154610b9990839063ffffffff613a6516565b90505b34811115610bb757610bb2858584348b8b613bd4565b610bc4565b610bc43488888585613f2e565b6000858152600b6020526040812060068101546005820154600490920154610c3592610c29918290606490610c0090605863ffffffff613a2f16565b811515610c0957fe5b60008d8152600b602052604090206007015491900463ffffffff613a7716565b9063ffffffff613a6516565b11610c8a576040805160e560020a62461bcd02815260206004820152600a60248201527f64617461206572726f7200000000000000000000000000000000000000000000604482015290519081900360640190fd5b610c9434876141c2565b50505050505050565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015610d205780601f10610cf557610100808354040283529160200191610d20565b820191906000526020600020905b815481529060010190602001808311610d0357829003601f168201915b505050505081565b333214610d6d576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff161515610da157336000908152600d60205260409020805460ff191660011790555b600160a060020a0382166000908152600d602052604090205460ff161515610e13576040805160e560020a62461bcd02815260206004820152601560248201527f4e6f742061207265676973746572656420757365720000000000000000000000604482015290519081900360640190fd5b60118160068110610e2057fe5b6002020154600160a060020a03163314610e84576040805160e560020a62461bcd02815260206004820152601f60248201527f546865206361726420646f6573206e6f742062656c6f6e6720746f20796f7500604482015290519081900360640190fd5b60068110610edc576040805160e560020a62461bcd02815260206004820152600d60248201527f746f6b656e4964206572726f7200000000000000000000000000000000000000604482015290519081900360640190fd5b6000818152601d6020526040902054600160a060020a031615610f49576040805160e560020a62461bcd02815260206004820152600860248201527f417070726f766564000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000818152601d60209081526040918290208054600160a060020a038616600160a060020a0319909116811790915582513381529182015280820183905290517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259181900360600190a15050565b600160a060020a0381166000908152600e602090815260409182902080548351818402810184019094528084526060939283018282801561101757602002820191906000526020600020905b815481526020019060010190808311611003575b505050505090505b919050565b60065b90565b33321461106f576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff1615156110a357336000908152600d60205260409020805460ff191660011790555b601181600681106110b057fe5b6002020154600160a060020a03848116911614611117576040805160e560020a62461bcd02815260206004820152600b60248201527f4f776e6572206572726f72000000000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0382161515611177576040805160e560020a62461bcd02815260206004820152600d60248201527f41646472657373206572726f7200000000000000000000000000000000000000604482015290519081900360640190fd5b6000818152601d6020526040902054600160a060020a038381169116146111e8576040805160e560020a62461bcd02815260206004820152601260248201527f576974686f7574207065726d697373696f6e0000000000000000000000000000604482015290519081900360640190fd5b81601182600681106111f657fe5b600202018054600160a060020a03928316600160a060020a0319918216179091556000838152601d602090815260409182902080549093169092558051868416815292851691830191909152818101839052517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360600190a1505050565b600f6020528160005260406000208181548110151561129357fe5b90600052602060002001600091509150505481565b60108054829081106112b657fe5b90600052602060002090600a0201600091509050806000015490806001015490806002015490806003015490806004015490806005015490806006015490806007015490806008015490806009015490508a565b33321461134f576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff16151561138357336000908152600d60205260409020805460ff191660011790555b600054600160a060020a031633146113e5576040805160e560020a62461bcd02815260206004820152601160248201527f5065726d697373696f6e2064656e696564000000000000000000000000000000604482015290519081900360640190fd5b60065460ff161515600114611444576040805160e560020a62461bcd02815260206004820152601c60248201527f54696d65207365727669636520697320616c7265616479206f70656e00000000604482015290519081900360640190fd5b6006805460ff19169055565b600054600160a060020a031681565b600c60209081526000928352604080842090915290825290208054600182015460028301546003909301549192909184565b600b60205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007909701549596949560ff9094169492939192909188565b601d60205260009081526040902054600160a060020a031681565b600060606000806000806000806000600754421015151561151357600080fd5b333214611558576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff16151561158c57336000908152600d60205260409020805460ff191660011790555b336000908152600e60205260408120541161163d576040805160e560020a62461bcd02815260206004820152604260248201527f7573657220686173206e6f7420707572636861736564207468652070726f647560448201527f6374206f722068617320636f6d706c657465642074686520776974686472617760648201527f616c000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b336000818152600e60209081526040918290208054835181840281018401909452808452939c5091929083018282801561169657602002820191906000526020600020905b815481526020019060010190808311611682575b50508351600160a060020a038e166000908152600e60205260408120959d50909b506116c794935091506146f29050565b8681101561182d576116ef88828151811015156116e057fe5b90602001906020020151611cfa565b929750909550935091506001821515141561174d57600160a060020a0389166000908152600f60205260409020885189908390811061172a57fe5b602090810290910181015182546001810184556000938452919092200155611813565b836010898381518110151561175e57fe5b602090810290910101518154811061177257fe5b90600052602060002090600a020160030181905550826010898381518110151561179857fe5b60209081029091010151815481106117ac57fe5b90600052602060002090600a020160070181905550600e60008a600160a060020a0316600160a060020a0316815260200190815260200160002088828151811015156117f457fe5b6020908102909101810151825460018101845560009384529190922001555b611823868663ffffffff613a7716565b95506001016116c7565b604051600160a060020a038a169087156108fc029088906000818181858888f19350505050158015611863573d6000803e3d6000fd5b50505050505050505050565b600d6020526000908152604090205460ff1681565b60095481565b60055481565b6000600682106118ea576040805160e560020a62461bcd02815260206004820152600d60248201527f746f6b656e4964206572726f7200000000000000000000000000000000000000604482015290519081900360640190fd5b601182600681106118f757fe5b6002020154600160a060020a0316905080151561101f576040805160e560020a62461bcd02815260206004820152600860248201527f4e6f206f776e6572000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6006546000908190819081908190819060ff1615156001146119f0576040805160e560020a62461bcd02815260206004820152603460248201527f746869732066656174757265206973206e6f74207475726e6564206f6e206f7260448201527f20686173206265656e207475726e6564206f6666000000000000000000000000606482015290519081900360840190fd5b6009546000908152600c60209081526040808320600a548452909152902054421015611ab3576040805160e560020a62461bcd028152602060048201526044602482018190527f43616e206f6e6c7920757365207468652061646474696d652f72656475636520908201527f74696d652066756e6374696f6e73207768656e2067616d65206861732073746160648201527f7274656400000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b333214611af8576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff161515611b2c57336000908152600d60205260409020805460ff191660011790555b6009549550600a549450349350611b4285613505565b6000878152600c60209081526040808320898452909152902060030154909350831015611b8b576000868152600c60209081526040808320888452909152902060030154611b8d565b825b91506058611ba283606463ffffffff613a2f16565b811515611bab57fe5b0491506064611bc183601463ffffffff613a2f16565b811515611bca57fe5b0490506729a2241af62c0000811115611be857506729a2241af62c00005b80841015611c40576040805160e560020a62461bcd02815260206004820152601060248201527f4e6f7420656e6f75676820707269636500000000000000000000000000000000604482015290519081900360640190fd5b6000868152600c602090815260408083208884529091529020429055601160055b60029081029190910154604051600160a060020a0390911691830480156108fc02916000818181858888f1505060008054604051600160a060020a0390911694506002860480156108fc029450925090818181858888f193505050505080841115611cf257336108fc611cda868463ffffffff613a6516565b6040518115909202916000818181858888f150505050505b505050505050565b600080600080611d08614713565b600080600080600080600060108d815481101515611d2257fe5b90600052602060002090600a020161014060405190810160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152602001600882015481526020016009820154815250509750600a549650876101000151600014156120445787516000908152600b602052604090206002015460ff16151560011415611f7b5760408089015189516000908152600b60205291909120600301541115611ea257611e048860200151613505565b88516000908152600c60209081526040808320828d01518452909152902060030154909550851015611e575787516000908152600c60209081526040808320828c01518452909152902060030154611e59565b845b93506058611e6e85606463ffffffff613a2f16565b811515611e7757fe5b049350611e9b88602001518960800151868b604001518c61012001516064036124d1565b9550611edf565b612710611ed2611ec160588b6101200151613a2f90919063ffffffff16565b60808b01519063ffffffff613a2f16565b811515611edb57fe5b0495505b60208089015189516000908152600b9092526040909120600301541415611f665787516000908152600c60209081526040808320828c015184529091529020600101548851611f6391611f5691611f4a90611f3990612603565b60808d01519063ffffffff613a2f16565b9063ffffffff61431216565b879063ffffffff613a7716565b95505b949a5060009950899850600197508a94612471565b876040015187111561203257611f948860200151613505565b88516000908152600c60209081526040808320828d01518452909152902060030154909550851015611fe75787516000908152600c60209081526040808320828c01518452909152902060030154611fe9565b845b93506058611ffe85606463ffffffff613a2f16565b81151561200757fe5b04935061202b88602001518960800151868b604001518c61012001516064036124d1565b9550611f66565b60009b508b9a508a9950899850612471565b60608801511561205857876060015161205e565b87602001515b61012089015160e08a01518a516000908152600b60205260409020600201549295506064919091039350915060ff1615156001141561231f575b606488606001516000146120b05788606001516120b6565b88602001515b840311156120d05785838260009b509b509b509b50612471565b6101008801516120e790849063ffffffff613a7716565b88516000908152600b602052604090206003015411156122325761210a83613505565b88516000908152600c602090815260408083208784529091529020600301549095508510156121575787516000908152600c60209081526040808320868452909152902060030154612159565b845b9350605861216e85606463ffffffff613a2f16565b81151561217757fe5b04935087604001518314156121cb576121b1611f56848a60c00151876121ab8d610100015189613a7790919063ffffffff16565b876124d1565b6040890151909c509a5060009950600198508b9550612471565b612202611f56848a6020015186146121e357866121e9565b8a60a001515b876121ab8d610100015189613a7790919063ffffffff16565b955061222b88602001518414612218578461221e565b8860a001515b829063ffffffff613a7716565b9050612314565b61228d61271061227561225460588c6101200151613a2f90919063ffffffff16565b60808c0151612269908663ffffffff613a6516565b9063ffffffff613a2f16565b81151561227e57fe5b8891900463ffffffff613a7716565b6040808a01518a516000908152600b602052919091206003015491975014156122fa5787516000908152600c60209081526040808320818c0151845290915290206001015488516121b191611f5691611f4a906122e990612603565b60c08d01519063ffffffff613a2f16565b858860400151600060018191509b509b509b509b50612471565b600190920191612098565b6064886060015160001461233757886060015161233d565b88602001515b840311156123575785838260009b509b509b509b50612471565b61010088015161236e90849063ffffffff613a7716565b8711156124545761237e83613505565b88516000908152600c602090815260408083208784529091529020600301549095508510156123cb5787516000908152600c602090815260408083208684529091529020600301546123cd565b845b935060586123e285606463ffffffff613a2f16565b8115156123eb57fe5b049350876040015183141561241f576121b1611f56848a60c00151876121ab8d610100015189613a7790919063ffffffff16565b612437611f56848a6020015186146121e357866121e9565b955061244d88602001518414612218578461221e565b9050612466565b85838260009b509b509b509b50612471565b60019092019161231f565b50505050505050509193509193565b6000600681805b828110156124c957600160a060020a038516601182600681106124a657fe5b6002020154600160a060020a031614156124c1576001909101905b600101612487565b509392505050565b604080517f78c9f9cf0000000000000000000000000000000000000000000000000000000081526004810187905260248101869052604481018590526064810184905260848101839052905160009173dd033ff7e98792694f6b358daeb065d4ff01bd5a916378c9f9cf9160a48082019260209290919082900301818787803b15801561255d57600080fd5b505af1158015612571573d6000803e3d6000fd5b505050506040513d602081101561258757600080fd5b50519695505050505050565b60075481565b600154600160a060020a031681565b6003805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610d205780601f10610cf557610100808354040283529160200191610d20565b6000818152600b602052604081206006810154600582015460049092015461264e92606492611f4a926050926122699291610c29919082908890610c0090605863ffffffff613a2f16565b92915050565b6000806000600854421015151561266a57600080fd5b3332146126af576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff1615156126e357336000908152600d60205260409020805460ff191660011790555b3392503491506064612713606e601187600681106126fd57fe5b6002020160010154613a2f90919063ffffffff16565b81151561271c57fe5b04905060006011856006811061272e57fe5b6002020154600160a060020a03161480159061276d5750600160a060020a0383166011856006811061275c57fe5b6002020154600160a060020a031614155b80156127795750808210155b15156127cf576040805160e560020a62461bcd02815260206004820152600f60248201527f4661696c65642070757263686173650000000000000000000000000000000000604482015290519081900360640190fd5b6000848152601d6020526040902054600160a060020a031615612861576000848152601d6020526040902054600160a060020a03166108fc606461281b6069601189600681106126fd57fe5b81151561282457fe5b049081150290604051600060405180830381858888f15050506000868152601d602052604090208054600160a060020a0319169055506128b89050565b6011846006811061286e57fe5b6002020154600160a060020a03166108fc60646128936069601189600681106126fd57fe5b81151561289c57fe5b049081150290604051600060405180830381858888f150505050505b600154600160a060020a03166108fc60646128db6005601189600681106126fd57fe5b8115156128e457fe5b049081150290604051600060405180830381858888f19350505050508082111561293d57600160a060020a0383166108fc612925848463ffffffff613a6516565b6040518115909202916000818181858888f150505050505b806011856006811061294b57fe5b60020201600101819055508260118560068110151561296657fe5b600202018054600160a060020a031916600160a060020a039290921691909117905550505050565b3332146129d3576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff161515612a0757336000908152600d60205260409020805460ff191660011790555b60118160068110612a1457fe5b6002020154600160a060020a03163314612a78576040805160e560020a62461bcd02815260206004820152601f60248201527f546865206361726420646f6573206e6f742062656c6f6e6720746f20796f7500604482015290519081900360640190fd5b600160a060020a0382161515612ad8576040805160e560020a62461bcd02815260206004820152600d60248201527f41646472657373206572726f7200000000000000000000000000000000000000604482015290519081900360640190fd5b6000818152601d6020526040902054600160a060020a03838116911614612b49576040805160e560020a62461bcd02815260206004820152601260248201527f576974686f7574207065726d697373696f6e0000000000000000000000000000604482015290519081900360640190fd5b8160118260068110612b5757fe5b600202018054600160a060020a031916600160a060020a039283161790556000828152601d60205260409020541615612ba7576000818152601d602052604090208054600160a060020a03191690555b60408051338152600160a060020a038416602082015280820183905290517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360600190a15050565b60045481565b600080333214612c41576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff161515612c7557336000908152600d60205260409020805460ff191660011790555b33915060118360068110612c8557fe5b6002020154600160a060020a03908116915082161515612cef576040805160e560020a62461bcd02815260206004820152600d60248201527f41646472657373206572726f7200000000000000000000000000000000000000604482015290519081900360640190fd5b6000838152601d6020526040902054600160a060020a03838116911614612d60576040805160e560020a62461bcd02815260206004820152601260248201527f576974686f7574207065726d697373696f6e0000000000000000000000000000604482015290519081900360640190fd5b8160118460068110612d6e57fe5b600202018054600160a060020a03928316600160a060020a0319918216179091556000858152601d602090815260409182902080549093169092558051848416815292851691830191909152818101859052517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360600190a1505050565b6000806000806000806007544210151515612e0a57600080fd5b333214612e4f576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff161515612e8357336000908152600d60205260409020805460ff191660011790555b336000908152600e602052604081205411612f34576040805160e560020a62461bcd02815260206004820152604260248201527f7573657220686173206e6f7420707572636861736564207468652070726f647560448201527f6374206f722068617320636f6d706c657465642074686520776974686472617760648201527f616c000000000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b339550612f4087611cfa565b92975090955093509150600182151514156130df575060005b600160a060020a0386166000908152600e6020526040902054811015612fbe57600160a060020a0386166000908152600e60205260409020805488919083908110612fa057fe5b90600052602060002001541415612fb657612fbe565b600101612f59565b600160a060020a0386166000908152600e6020526040902054811061302d576040805160e560020a62461bcd02815260206004820152600c60248201527f6769642069732077726f6e670000000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0386166000818152600f602090815260408083208054600181018255908452828420018b9055928252600e9052208054600019810190811061307257fe5b6000918252602080832090910154600160a060020a0389168352600e90915260409091208054839081106130a257fe5b6000918252602080832090910192909255600160a060020a0388168152600e909152604090208054906130d9906000198301614767565b5061312a565b836010888154811015156130ef57fe5b90600052602060002090600a0201600301819055508260108881548110151561311457fe5b90600052602060002090600a0201600701819055505b604051600160a060020a0387169086156108fc029087906000818181858888f19350505050158015613160573d6000803e3d6000fd5b5050505050505050565b600a5481565b60065460ff1681565b600e6020528160005260406000208181548110151561129357fe5b60085481565b6000806000806000806000806131b1600a54613505565b600954600a546007546004546000848152600c602090815260408083208684529091529020549495509293919290916131ef9163ffffffff613a7716565b6009546000908152600c60209081526040808320600a5484529091529020600181015460039091015460589061325d90606490891015613250576009546000908152600c60209081526040808320600a548452909152902060030154612269565b889063ffffffff613a2f16565b81151561326657fe5b6009546000908152600b602052604090206006810154600582015460049092015493909204926132d79291610c299182906064906132ab90605863ffffffff613a2f16565b8115156132b457fe5b6009546000908152600b602052604090206007015491900463ffffffff613a7716565b959e949d50929b5090995097509550909350915050565b6007544210156132fd57600080fd5b333214613342576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff16151561337657336000908152600d60205260409020805460ff191660011790555b66038d7ea4c680003410156133b45760008054604051600160a060020a03909116913480156108fc02929091818181858888f1935050505050613501565b66038d7ea4c68000341015613413576040805160e560020a62461bcd02815260206004820152601d60248201527f6d696e696d756d20616d6f756e7420697320302e303031206574686572000000604482015290519081900360640190fd5b6019600a541015613430576405d21dba003a111561343057600080fd5b6019600a54101561345057678ac7230489e8000034111561345057600080fd5b81620f42408111156134d2576040805160e560020a62461bcd02815260206004820152602160248201527f737465702073697a65206d757374206e6f74206578636565642031303030303060448201527f3000000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6134ff60008411156134e457836134e7565b60645b60648411156134f8576005546134fa565b835b610964565b505b5050565b600073dd033ff7e98792694f6b358daeb065d4ff01bd5a600160a060020a031663d9daa497836040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050602060405180830381600087803b15801561357d57600080fd5b505af1158015613591573d6000803e3d6000fd5b505050506040513d60208110156135a757600080fd5b505192915050565b601181600681106135bc57fe5b600202018054600190910154600160a060020a03909116915082565b33321461361d576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff16151561365157336000908152600d60205260409020805460ff191660011790555b600054600160a060020a031633146136b3576040805160e560020a62461bcd02815260206004820152601160248201527f5065726d697373696f6e2064656e696564000000000000000000000000000000604482015290519081900360640190fd5b60065460ff161561370e576040805160e560020a62461bcd02815260206004820152601c60248201527f54696d65207365727669636520697320616c7265616479206f70656e00000000604482015290519081900360640190fd5b6006805460ff19166001179055565b6006546000908190819081908190819060ff1615156001146137af576040805160e560020a62461bcd02815260206004820152603460248201527f746869732066656174757265206973206e6f74207475726e6564206f6e206f7260448201527f20686173206265656e207475726e6564206f6666000000000000000000000000606482015290519081900360840190fd5b6009546000908152600c60209081526040808320600a548452909152902054421015613872576040805160e560020a62461bcd028152602060048201526044602482018190527f43616e206f6e6c7920757365207468652061646474696d652f72656475636520908201527f74696d652066756e6374696f6e73207768656e2067616d65206861732073746160648201527f7274656400000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b3332146138b7576040805160e560020a62461bcd02815260206004820152601e60248201526000805160206147a6833981519152604482015290519081900360640190fd5b336000908152600d602052604090205460ff1615156138eb57336000908152600d60205260409020805460ff191660011790555b6009549550600a54945034935061390185613505565b6000878152600c6020908152604080832089845290915290206003015490935083101561394a576000868152600c6020908152604080832088845290915290206003015461394c565b825b9150605861396183606463ffffffff613a2f16565b81151561396a57fe5b049150606461398083601e63ffffffff613a2f16565b81151561398957fe5b0490506729a2241af62c00008111156139a757506729a2241af62c00005b808410156139ff576040805160e560020a62461bcd02815260206004820152601060248201527f4e6f7420656e6f75676820707269636500000000000000000000000000000000604482015290519081900360640190fd5b6004546000878152600c602090815260408083208984529091529020429190910361038401905560116005611c61565b600080831515613a425760009150613a5e565b50828202828482811515613a5257fe5b0414613a5a57fe5b8091505b5092915050565b600082821115613a7157fe5b50900390565b600082820183811015613a5a57fe5b6000828152600b602090815260408083204260018083019190915560028201805460ff1916821790556003909101859055600c8352818420858552909252822001541115613b34576000828152600b6020526040902060068101546005820154600490920154613b1992606492611f4a926014926122699291610c29919082908890610c0090605863ffffffff613a2f16565b600183016000908152600b6020526040902060070155613bb0565b6000828152600b6020526040902060068101546005820154600490920154613b9992610c29918290606490613b7090605863ffffffff613a2f16565b811515613b7957fe5b6000898152600b602052604090206007015491900463ffffffff613a7716565b600183016000908152600b60205260409020600701555b5060019081016000908152600b602052604090204290556009805482019055600a55565b600080613bdf614713565b613bef888663ffffffff613a7716565b9250612710613c0861325086605863ffffffff613a2f16565b811515613c1157fe5b60008b8152600b60205260409020600401549190049250613c38908763ffffffff613a7716565b60008a8152600b60205260409020600481019190915560050154613c62908363ffffffff613a7716565b60008a8152600b6020908152604080832060050193909355600c81528282208b835290522060010154613c9b908763ffffffff613a7716565b60008a8152600c602090815260408083208c8452909152808220600101929092558481522060020154613cce9083613a77565b60008a8152600c60209081526040808320878452909152902060020155613d28613cff89888a8760648a90036124d1565b60008b8152600c602090815260408083208884529091529020600301549063ffffffff613a7716565b60008a8152600c602090815260408083208784528252808320600301939093559a8352828b01998a52608083019788528282019485526101208301958652338152600e8b5290812060108054600181810183559184528451600a82027f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6728101919091559b517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6738d015595517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6748c015560608401517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6758c015597517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6768b015560a08301517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6778b015560c08301517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6788b015560e08301517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6798b0155610100909201517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67a8a015593517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67b9098019790975550855493840186559481529490942001919091555050565b600954600a5460016000805b8260011415613fe957613f5285858c898d8d89614346565b6000858152600b6020526040902060040154613f74908b63ffffffff613a7716565b6000868152600b6020526040902060040155613fd6612710613fad613fa08b605863ffffffff613a2f16565b8d9063ffffffff613a2f16565b811515613fb657fe5b6000888152600b602052604090206005015491900463ffffffff613a7716565b6000868152600b60205260409020600501555b61400685858989614000838f63ffffffff613a7716565b8d6145be565b6000858152600c6020908152604080832087845290915290206003015461403490829063ffffffff613a7716565b6000868152600c6020908152604080832088845290915290206002015490915061406590839063ffffffff613a7716565b600190940193915061407d8a8763ffffffff613a6516565b995061408884613505565b6000868152600c6020908152604080832088845290915290206003015411156140cd576000858152600c602090815260408083208784529091529020600301546140d6565b6140d684613505565b965060586140eb88606463ffffffff613a2f16565b8115156140f457fe5b0496508695506001909201918986106141bd5761411e8585898d614000838f63ffffffff613a7716565b61412e858560008d8d8d89614346565b8987141561413d576001909301925b6000858152600c602090815260408083208784528252808320429055600a879055878352600b90915290206005015461417c908363ffffffff613a6516565b6000868152600b602052604090206005810191909155600601546141a6908263ffffffff613a7716565b6000868152600b6020526040902060060155611863565b613f3a565b60006141fe6141dd6064611f4a86600963ffffffff613a2f16565b6009546000908152600b60205260409020600701549063ffffffff613a7716565b6009546000908152600b6020526040902060070155506064820481151561425557601160005b6002020154604051600160a060020a039091169082156108fc029083906000818181858888f19350505050506142d6565b6000821180156142655750603982105b156142735760116001614224565b81603914156142855760116002614224565b6039821180156142955750606482105b156142a35760116003614224565b81606414156142d657601954604051600160a060020a03909116906108fc8315029083906000818181858888f150505050505b600154600160a060020a03166108fc6142f685603263ffffffff61431216565b6040518115909202916000818181858888f15050505050505050565b60008080831161431e57fe5b828481151561432957fe5b049050828481151561433757fe5b068184020184141515613a5a57fe5b61434e614713565b60006001831161456157888252602082018890526080820187905261010082018590526101208201849052600183141561438a5760a082018690525b336000908152600e6020908152604080832060108054600181810183559186528751600a82027f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672810191909155888601517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae673820155938801517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67485015560608801517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67585015560808801517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67685015560a08801517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67785015560c08801517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67885015560e08801517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae6798501556101008801517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67a8501556101208801517f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae67b90940193909355815490810182559084529190922001556145b3565b506010805460001981019187918390811061457857fe5b90600052602060002090600a0201600601819055508760108281548110151561459d57fe5b90600052602060002090600a0201600201819055505b505050505050505050565b60006127106145e46145d784605863ffffffff613a2f16565b869063ffffffff613a2f16565b8115156145ed57fe5b049050848414614642576000878152600c60209081526040808320898452909152902060010154614624908563ffffffff613a7716565b6000888152600c602090815260408083208a84529091529020600101555b6000878152600c6020908152604080832086845290915290206002015461466f908263ffffffff613a7716565b6000888152600c602090815260408083208784529091529020600201556146c96146a08786888760648890036124d1565b6000898152600c602090815260408083208884529091529020600301549063ffffffff613a7716565b6000978852600c60209081526040808a20958a5294905292909620600301919091555050505050565b50805460008255906000526020600020908101906147109190614787565b50565b61014060405190810160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8154818355818111156134ff576000838152602090206134ff9181019083015b61102791905b808211156147a1576000815560010161478d565b5090560073656e64657220646f6573206e6f74206d656574207468652072756c65730000a165627a7a723058201ae128c157b14d781cd591015f61c45135599a7723710655ba9b2b850558cf4f0029
Swarm Source
bzzr://1ae128c157b14d781cd591015f61c45135599a7723710655ba9b2b850558cf4f
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,710.28 | 0.9207 | $3,416.07 |
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.