More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 36,438 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Claim Enable... | 21115099 | 18 days ago | IN | 0 ETH | 0.00020373 | ||||
Claim | 21056993 | 26 days ago | IN | 0 ETH | 0.00090319 | ||||
Change Lock Info | 21056986 | 26 days ago | IN | 0 ETH | 0.00023217 | ||||
Set Claim Enable... | 21056976 | 26 days ago | IN | 0 ETH | 0.00015939 | ||||
Change Lock Info | 21056973 | 26 days ago | IN | 0 ETH | 0.00020778 | ||||
Change Lock Info | 21056963 | 26 days ago | IN | 0 ETH | 0.00017932 | ||||
Set Claim Enable... | 21055897 | 26 days ago | IN | 0 ETH | 0.00015354 | ||||
Claim | 21055885 | 26 days ago | IN | 0 ETH | 0.00058821 | ||||
Claim | 21055829 | 26 days ago | IN | 0 ETH | 0.00069979 | ||||
Set Claim Enable... | 21055824 | 26 days ago | IN | 0 ETH | 0.00013202 | ||||
Change Lock Info | 21054185 | 26 days ago | IN | 0 ETH | 0.00015047 | ||||
Change Investmen... | 21054169 | 26 days ago | IN | 0 ETH | 0.00014951 | ||||
Set Invest Enabl... | 21054099 | 26 days ago | IN | 0 ETH | 0.00011257 | ||||
Invest | 21054089 | 26 days ago | IN | 0 ETH | 0.00124289 | ||||
Set Invest Enabl... | 21054063 | 26 days ago | IN | 0 ETH | 0.00011834 | ||||
Set Invitee | 21044900 | 28 days ago | IN | 0 ETH | 0.00047209 | ||||
Set Invest Enabl... | 21043584 | 28 days ago | IN | 0 ETH | 0.00046625 | ||||
Set Claim Enable... | 21043580 | 28 days ago | IN | 0 ETH | 0.00047183 | ||||
Invest | 21042431 | 28 days ago | IN | 0 ETH | 0.00170639 | ||||
Invest | 21042406 | 28 days ago | IN | 0 ETH | 0.00160639 | ||||
Claim | 21042388 | 28 days ago | IN | 0 ETH | 0.00080777 | ||||
Invest | 21042168 | 28 days ago | IN | 0 ETH | 0.00168141 | ||||
Claim | 21042165 | 28 days ago | IN | 0 ETH | 0.00117068 | ||||
Claim | 21042158 | 28 days ago | IN | 0 ETH | 0.0009225 | ||||
Set Invitee | 21042157 | 28 days ago | IN | 0 ETH | 0.00042968 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
EsgSHIPV3
Compiler Version
v0.5.16+commit.9c3226ce
Optimization Enabled:
Yes with 300 runs
Other Settings:
istanbul EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity >=0.5.16; pragma experimental ABIEncoderV2; import "./EIP20Interface.sol"; import "./SafeMath.sol"; contract EsgSHIPV3{ using SafeMath for uint256; /// @notice ESG token EIP20Interface public esg; /// @notice Emitted when referral set invitee event SetInvitee(address inviteeAddress); /// @notice Emitted when owner set invitee event SetInviteeByOwner(address referrerAddress, address inviteeAddress); /// @notice Emitted when ESG is invest event EsgInvest(address account, uint amount, uint price); /// @notice Emitted when ESG is invest by owner event EsgInvestByOwner(address account, uint amount, uint price); /// @notice Emitted when ESG is claimed event EsgClaimed(address account, uint amount, uint price); /// @notice Emitted when change Lock info event EsgChangeLockInfo(address _user, uint256 _rate, uint256 i); /// @notice Emitted when change Investment info event EsgChangeInvestmentInfo(address _user, uint256 _userTotalValue, uint256 _withdraw, uint256 _lastCollectionTime); /// @notice Emitted when change Referrer info event EsgChangeReferrerInfo(address _user, uint256 _totalInvestment, uint256 _referrerRewardLimit, uint256 _totalReferrerRaward, uint256 _teamRewardTime, uint256 _teamRewardRate, uint256 _noExtract); struct Lock { uint256 amount; uint256 esgPrice; uint256 value; uint256 start; uint256 end; uint256 investDays; uint256 releaseRate; } mapping(address => Lock[]) public locks; struct Investment { uint256 userTotalValue; uint256 withdraw; uint256 lastCollectionTime; } mapping(address => Investment) public investments; modifier onlyOwner() { require(msg.sender == owner, "Only owner can call this function."); _; } struct Referrer { address[] referrals; uint256 totalInvestment; uint256 referrerRewardLimit; uint256 totalReferrerRaward; uint256 teamRewardTime; uint256 teamRewardRate; uint256 noExtract; } mapping(address => Referrer) public referrers;//1:n struct User { address referrer_addr; } mapping (address => User) public referrerlist;//1:1 address private feeWallet; uint256 public fee = 5; uint256 public invest_days1 = 350; uint256 public invest_days2 = 350; uint256 public invest_days3 = 350; uint256 public invest_days4 = 350; uint256 public invest_days5 = 300; uint256 public referralThreshold = 1000 * 1e24; uint256 public total_deposited; uint256 public total_user; uint256 public total_amount; uint256 public total_extracted; uint256 public total_claim_amount; uint256 public lockRates = 100; uint256 public staticRewardRate = 10; uint256 public dynamicRewardRate = 10; uint256 public teamRewardThreshold = 30000 * 1e24; uint256 public teamRewardThresholdRate = 30 * 1e24; uint256 public teamRewardThresholdStep = 10000 * 1e24; uint256 public teamRewardThresholdStepRate = 10 * 1e24; uint256 public price; bool public investEnabled; bool public claimEnabled; address public owner; constructor(address esgAddress, address feeWalletAddress) public { owner = msg.sender; investEnabled = true; claimEnabled = true; esg = EIP20Interface(esgAddress); feeWallet = feeWalletAddress; } function setPrice(uint256 _price) onlyOwner public { require(_price > 0, "Price must be positive"); price = _price; } function setFee(uint256 _fee) onlyOwner public { require(_fee > 0, "Fee must be positive"); fee = _fee; } function setInvestEnabled(bool _investEnabled) onlyOwner public { investEnabled = _investEnabled; } function setClaimEnabled(bool _claimEnabled) onlyOwner public { claimEnabled = _claimEnabled; } function setInvestDays(uint256 days1, uint256 days2, uint256 days3, uint256 days4, uint256 days5) onlyOwner public { require(days1 > 0, "days1 should be greater than 0"); require(days2 > 0, "days2 should be greater than 0"); require(days3 > 0, "days3 should be greater than 0"); require(days4 > 0, "days4 should be greater than 0"); require(days5 > 0, "days5 should be greater than 0"); invest_days1 = days1; invest_days2 = days2; invest_days3 = days3; invest_days4 = days4; invest_days5 = days5; } function setLockRates(uint256 _lockRates) onlyOwner public { lockRates = _lockRates; } function setReferralThreshold(uint256 _referralThreshold) onlyOwner public { referralThreshold = _referralThreshold; } function setStaticRewardRate(uint256 _staticRewardRate) onlyOwner public { staticRewardRate = _staticRewardRate; } function setDynamicRewardRate(uint256 _dynamicRewardRate) onlyOwner public { dynamicRewardRate = _dynamicRewardRate; } function setTeamRewardThreshold(uint256 _teamRewardThreshold) onlyOwner public { teamRewardThreshold = _teamRewardThreshold; } function setTeamRewardThresholdRate(uint256 _teamRewardThresholdRate) onlyOwner public { teamRewardThresholdRate = _teamRewardThresholdRate; } function setTeamRewardThresholdStep(uint256 _teamRewardThresholdStep) onlyOwner public { teamRewardThresholdStep = _teamRewardThresholdStep; } function setTeamRewardThresholdStepRate(uint256 _teamRewardThresholdStepRate) onlyOwner public { teamRewardThresholdStepRate = _teamRewardThresholdStepRate; } function setInvitee(address inviteeAddress) public returns (bool) { require(inviteeAddress != address(0), "inviteeAddress cannot be 0x0."); User storage user = referrerlist[inviteeAddress]; require(user.referrer_addr == address(0), "This account had been invited!"); Investment storage investment = investments[msg.sender]; require(investment.userTotalValue.mul(lockRates).div(100).add(investment.userTotalValue).sub(investment.withdraw) >= referralThreshold, "Referrer has no referral qualification."); Lock[] storage inviteeLocks = locks[inviteeAddress]; require(inviteeLocks.length == 0, "This account had staked!"); Referrer storage referrer = referrers[msg.sender]; referrer.referrals.push(inviteeAddress); if(referrer.referrerRewardLimit == 0){ referrer.referrerRewardLimit = investment.userTotalValue.mul(lockRates).div(100).add(investment.userTotalValue); } User storage _user = referrerlist[inviteeAddress]; _user.referrer_addr = msg.sender; emit SetInvitee(inviteeAddress); return true; } function setInviteeByOwner(address referrerAddress, address inviteeAddress) public onlyOwner returns (bool) { require(referrerAddress != address(0), "referrerAddress cannot be 0x0."); require(inviteeAddress != address(0), "inviteeAddress cannot be 0x0."); User storage user = referrerlist[inviteeAddress]; require(user.referrer_addr == address(0), "This account had been invited!"); Investment storage investment = investments[referrerAddress]; require(investment.userTotalValue.mul(lockRates).div(100).add(investment.userTotalValue).sub(investment.withdraw) >= referralThreshold, "Referrer has no referral qualification."); Lock[] storage inviteeLocks = locks[inviteeAddress]; require(inviteeLocks.length == 0, "This account had staked!"); Referrer storage referrer = referrers[referrerAddress]; referrer.referrals.push(inviteeAddress); if(referrer.referrerRewardLimit == 0){ referrer.referrerRewardLimit = investment.userTotalValue.mul(lockRates).div(100).add(investment.userTotalValue); } User storage _user = referrerlist[inviteeAddress]; _user.referrer_addr = referrerAddress; emit SetInviteeByOwner(referrerAddress, inviteeAddress); return true; } function getInviteelist(address referrerAddress) public view returns (address[] memory) { require(referrerAddress != address(0), "referrerAddress cannot be 0x0."); Referrer storage referrer = referrers[referrerAddress]; return referrer.referrals; } function getReferrer(address inviteeAddress) public view returns (address) { require(inviteeAddress != address(0), "inviteeAddress cannot be 0x0."); User storage user = referrerlist[inviteeAddress]; return user.referrer_addr; } function invest(uint256 _amount) public returns (bool) { require(investEnabled == true, "No invest allowed!"); require(_amount > 0, "Invalid amount."); esg.transferFrom(msg.sender, address(this), _amount); uint256 nowTime = block.timestamp; Lock[] storage user_locks = locks[msg.sender]; if(user_locks.length > 0){ Investment storage user_investment = investments[msg.sender]; uint256 userDeposit = user_investment.userTotalValue.mul(lockRates).div(100).add(user_investment.userTotalValue); uint256 userWithdraw = user_investment.withdraw; if(userDeposit == userWithdraw){ user_investment.lastCollectionTime = nowTime; } } uint256 invest_days = 0; uint256 deposit = _amount.mul(price); if(deposit < 500 * 1e24){ invest_days = invest_days1; }else if(deposit >= 500 * 1e24 && deposit < 2000 * 1e24){ invest_days = invest_days2; }else if(deposit >= 2000 * 1e24 && deposit < 5000 * 1e24){ invest_days = invest_days3; }else if(deposit >= 5000 * 1e24 && deposit < 10000 * 1e24){ invest_days = invest_days4; }else if(deposit >= 10000 * 1e24){ invest_days = invest_days5; } locks[msg.sender].push( Lock( _amount, price, deposit, nowTime, nowTime + (invest_days * 86400), invest_days, (deposit.mul(lockRates).div(100).add(deposit)).div(invest_days).div(86400) ) ); Investment storage investment = investments[msg.sender]; if(investment.userTotalValue == 0){ investment.lastCollectionTime = nowTime; total_user = total_user + 1; } investment.userTotalValue += deposit; total_deposited = total_deposited + deposit; total_amount = total_amount + _amount; Referrer storage userReferrer = referrers[msg.sender]; if(userReferrer.referrals.length > 0){ userReferrer.referrerRewardLimit = investment.userTotalValue.mul(lockRates).div(100).add(investment.userTotalValue); if(userReferrer.totalInvestment >= teamRewardThreshold){ uint256 statistics = 0; if(userReferrer.teamRewardTime == 0){ userReferrer.teamRewardTime = block.timestamp; statistics = (userReferrer.totalInvestment.sub(teamRewardThreshold)).div(teamRewardThresholdStep); userReferrer.teamRewardRate = teamRewardThresholdStepRate.mul(statistics).div(86400); userReferrer.teamRewardRate += teamRewardThresholdRate.div(86400); } } } User storage user = referrerlist[msg.sender]; if(user.referrer_addr != address(0)){ referrers[user.referrer_addr].totalInvestment += deposit; uint256 staticReward = deposit.mul(staticRewardRate).div(100); Referrer storage referrer = referrers[user.referrer_addr]; Lock[] storage userLocks = locks[user.referrer_addr]; if(referrer.totalReferrerRaward < referrer.referrerRewardLimit){ if(referrer.totalReferrerRaward + staticReward < referrer.referrerRewardLimit){ referrer.noExtract += staticReward; if(referrer.noExtract >= referrer.referrerRewardLimit){ for (uint256 i = 0; i < userLocks.length; i++) { Lock storage lock = userLocks[i]; lock.releaseRate = 0; } } }else{ referrer.noExtract = referrer.referrerRewardLimit - referrer.totalReferrerRaward; for (uint256 i = 0; i < userLocks.length; i++) { Lock storage lock = userLocks[i]; lock.releaseRate = 0; } } } if(referrer.totalInvestment >= teamRewardThreshold){ uint256 statistics = 0; if(referrer.teamRewardTime == 0){ referrer.teamRewardTime = block.timestamp; statistics = (referrer.totalInvestment.sub(teamRewardThreshold)).div(teamRewardThresholdStep); referrer.teamRewardRate = teamRewardThresholdStepRate.mul(statistics).div(86400); referrer.teamRewardRate += teamRewardThresholdRate.div(86400); }else{ uint256 team_reward = (block.timestamp.sub(referrer.teamRewardTime)).mul(referrer.teamRewardRate); if(referrer.totalReferrerRaward < referrer.referrerRewardLimit){ if(referrer.totalReferrerRaward + team_reward < referrer.referrerRewardLimit){ referrer.noExtract += team_reward; if(referrer.noExtract >= referrer.referrerRewardLimit){ for (uint256 i = 0; i < userLocks.length; i++) { Lock storage lock = userLocks[i]; lock.releaseRate = 0; } } }else{ referrer.noExtract = referrer.referrerRewardLimit - referrer.totalReferrerRaward; for (uint256 i = 0; i < userLocks.length; i++) { Lock storage lock = userLocks[i]; lock.releaseRate = 0; } } referrer.teamRewardTime = block.timestamp; statistics = (referrer.totalInvestment.sub(teamRewardThreshold)).div(teamRewardThresholdStep); referrer.teamRewardRate = teamRewardThresholdStepRate.mul(statistics).div(86400); referrer.teamRewardRate += teamRewardThresholdRate.div(86400); } } } } emit EsgInvest(msg.sender, _amount, price); return true; } function investByOwner(address investAddress, uint256 _amount) public onlyOwner returns (bool) { require(investEnabled == true, "No invest allowed!"); require(_amount > 0, "Invalid amount."); uint256 invest_days = 0; uint256 deposit = _amount.mul(price); if(deposit < 500 * 1e24){ invest_days = invest_days1; }else if(deposit >= 500 * 1e24 && deposit < 2000 * 1e24){ invest_days = invest_days2; }else if(deposit >= 2000 * 1e24 && deposit < 5000 * 1e24){ invest_days = invest_days3; }else if(deposit >= 5000 * 1e24 && deposit < 10000 * 1e24){ invest_days = invest_days4; }else if(deposit >= 10000 * 1e24){ invest_days = invest_days5; } uint256 nowTime = block.timestamp; Lock[] storage user_locks = locks[msg.sender]; if(user_locks.length > 0){ Investment storage user_investment = investments[msg.sender]; uint256 userDeposit = user_investment.userTotalValue.mul(lockRates).div(100).add(user_investment.userTotalValue); uint256 userWithdraw = user_investment.withdraw; if(userDeposit == userWithdraw){ user_investment.lastCollectionTime = nowTime; } } locks[investAddress].push( Lock( _amount, price, deposit, nowTime, nowTime + (invest_days * 86400), invest_days, (deposit.mul(lockRates).div(100).add(deposit)).div(invest_days).div(86400) ) ); Investment storage investment = investments[investAddress]; if(investment.userTotalValue == 0){ investment.lastCollectionTime = nowTime; total_user = total_user + 1; } investment.userTotalValue += deposit; total_deposited = total_deposited + deposit; total_amount = total_amount + _amount; Referrer storage userReferrer = referrers[msg.sender]; if(userReferrer.referrals.length > 0){ userReferrer.referrerRewardLimit = investment.userTotalValue.mul(lockRates).div(100).add(investment.userTotalValue); if(userReferrer.totalInvestment >= teamRewardThreshold){ uint256 statistics = 0; if(userReferrer.teamRewardTime == 0){ userReferrer.teamRewardTime = block.timestamp; statistics = (userReferrer.totalInvestment.sub(teamRewardThreshold)).div(teamRewardThresholdStep); userReferrer.teamRewardRate = teamRewardThresholdStepRate.mul(statistics).div(86400); userReferrer.teamRewardRate += teamRewardThresholdRate.div(86400); } } } User storage user = referrerlist[investAddress]; if(user.referrer_addr != address(0)){ referrers[user.referrer_addr].totalInvestment += deposit; uint256 staticReward = deposit.mul(staticRewardRate).div(100); Referrer storage referrer = referrers[user.referrer_addr]; Lock[] storage userLocks = locks[user.referrer_addr]; if(referrer.totalReferrerRaward < referrer.referrerRewardLimit){ if(referrer.totalReferrerRaward + staticReward < referrer.referrerRewardLimit){ referrer.noExtract += staticReward; if(referrer.noExtract >= referrer.referrerRewardLimit){ for (uint256 i = 0; i < userLocks.length; i++) { Lock storage lock = userLocks[i]; lock.releaseRate = 0; } } }else{ referrer.noExtract = referrer.referrerRewardLimit - referrer.totalReferrerRaward; for (uint256 i = 0; i < userLocks.length; i++) { Lock storage lock = userLocks[i]; lock.releaseRate = 0; } } } if(referrer.totalInvestment >= teamRewardThreshold){ uint256 statistics = 0; if(referrer.teamRewardTime == 0){ referrer.teamRewardTime = block.timestamp; statistics = (referrer.totalInvestment.sub(teamRewardThreshold)).div(teamRewardThresholdStep); referrer.teamRewardRate = teamRewardThresholdStepRate.mul(statistics).div(86400); referrer.teamRewardRate += teamRewardThresholdRate.div(86400); }else{ uint256 team_reward = (block.timestamp.sub(referrer.teamRewardTime)).mul(referrer.teamRewardRate); if(referrer.totalReferrerRaward < referrer.referrerRewardLimit){ if(referrer.totalReferrerRaward + team_reward < referrer.referrerRewardLimit){ referrer.noExtract += team_reward; if(referrer.noExtract >= referrer.referrerRewardLimit){ for (uint256 i = 0; i < userLocks.length; i++) { Lock storage lock = userLocks[i]; lock.releaseRate = 0; } } }else{ referrer.noExtract = referrer.referrerRewardLimit - referrer.totalReferrerRaward; for (uint256 i = 0; i < userLocks.length; i++) { Lock storage lock = userLocks[i]; lock.releaseRate = 0; } } referrer.teamRewardTime = block.timestamp; statistics = (referrer.totalInvestment.sub(teamRewardThreshold)).div(teamRewardThresholdStep); referrer.teamRewardRate = teamRewardThresholdStepRate.mul(statistics).div(86400); referrer.teamRewardRate += teamRewardThresholdRate.div(86400); } } } } emit EsgInvestByOwner(investAddress, _amount, price); return true; } function claim() public returns (bool) { require(claimEnabled == true, "No claim allowed!"); Lock[] storage userLocks = locks[msg.sender]; require(userLocks.length > 0, "No locked amount."); uint256 totalInterest = 0; Investment storage investment = investments[msg.sender]; uint256 userDeposit = investment.userTotalValue.mul(lockRates).div(100).add(investment.userTotalValue); uint256 userWithdraw = investment.withdraw; require(userDeposit > userWithdraw, "All investments have been fully withdrawn"); for (uint256 i = 0; i < userLocks.length; i++) { Lock storage lock = userLocks[i]; uint256 interest = (block.timestamp.sub(investment.lastCollectionTime)).mul(lock.releaseRate); if (interest > 0) { totalInterest += interest; } } Referrer storage referrer_user = referrers[msg.sender]; if(userDeposit - userWithdraw >= referralThreshold){ if(referrer_user.totalInvestment > 0){ if(referrer_user.totalReferrerRaward + referrer_user.noExtract <= referrer_user.referrerRewardLimit){ totalInterest += referrer_user.noExtract; referrer_user.totalReferrerRaward += referrer_user.noExtract; if(referrer_user.totalReferrerRaward > referrer_user.referrerRewardLimit){ referrer_user.totalReferrerRaward = referrer_user.referrerRewardLimit; } referrer_user.noExtract = 0; }else{ if(referrer_user.referrerRewardLimit > referrer_user.totalReferrerRaward){ totalInterest += referrer_user.referrerRewardLimit - referrer_user.totalReferrerRaward; } referrer_user.totalReferrerRaward = referrer_user.referrerRewardLimit; referrer_user.noExtract = 0; } uint256 team_reward = (block.timestamp.sub(referrer_user.teamRewardTime)).mul(referrer_user.teamRewardRate); if(referrer_user.teamRewardTime > 0 && referrer_user.teamRewardRate > 0){ if(referrer_user.totalReferrerRaward + team_reward <= referrer_user.referrerRewardLimit){ totalInterest += team_reward; referrer_user.totalReferrerRaward += team_reward; if(referrer_user.totalReferrerRaward > referrer_user.referrerRewardLimit){ referrer_user.totalReferrerRaward = referrer_user.referrerRewardLimit; } referrer_user.teamRewardTime = block.timestamp; }else{ if(referrer_user.referrerRewardLimit > referrer_user.totalReferrerRaward){ totalInterest += referrer_user.referrerRewardLimit - referrer_user.totalReferrerRaward; } referrer_user.totalReferrerRaward = referrer_user.referrerRewardLimit; referrer_user.teamRewardTime = block.timestamp; } } } } require(totalInterest > 0, "No interest to claim."); investment.lastCollectionTime = block.timestamp; uint256 transfer_amount = 0; uint256 feeAmount = 0; uint256 total_withdraw = investment.withdraw + totalInterest; if(total_withdraw >= userDeposit){ transfer_amount = (userDeposit.sub(userWithdraw)).div(price); investment.withdraw = userDeposit; feeAmount = transfer_amount.mul(fee).div(100); esg.transfer(feeWallet, feeAmount); esg.transfer(msg.sender, transfer_amount.sub(feeAmount)); for (uint256 i = 0; i < userLocks.length; i++) { Lock storage user_lock = userLocks[i]; user_lock.releaseRate = 0; } if(referrer_user.totalInvestment > 0){ referrer_user.teamRewardTime = 0; referrer_user.teamRewardRate = 0; } }else{ transfer_amount = totalInterest.div(price); investment.withdraw += totalInterest; feeAmount = transfer_amount.mul(fee).div(100); esg.transfer(feeWallet, feeAmount); esg.transfer(msg.sender, transfer_amount.sub(feeAmount)); } total_claim_amount += transfer_amount; total_extracted += transfer_amount.mul(price); User storage user = referrerlist[msg.sender]; if (user.referrer_addr != address(0)) { Referrer storage referrer = referrers[user.referrer_addr]; uint256 dynamic_reward = totalInterest.mul(dynamicRewardRate).div(100); Lock[] storage referrerLocks = locks[user.referrer_addr]; if(referrer.totalReferrerRaward < referrer.referrerRewardLimit){ if(referrer.totalReferrerRaward + dynamic_reward < referrer.referrerRewardLimit){ referrer.noExtract += dynamic_reward; if(referrer.noExtract >= referrer.referrerRewardLimit){ for (uint256 i = 0; i < userLocks.length; i++) { Lock storage lock = userLocks[i]; lock.releaseRate = 0; } } }else{ referrer.noExtract = referrer.referrerRewardLimit - referrer.totalReferrerRaward; for (uint256 i = 0; i < referrerLocks.length; i++) { Lock storage referrer_lock = referrerLocks[i]; referrer_lock.releaseRate = 0; } } } } emit EsgClaimed (msg.sender, transfer_amount, price); return true; } function getClaimAmount(address _user) public view returns (uint256) { require(_user != address(0), "_user cannot be 0x0."); Lock[] storage userLocks = locks[_user]; uint256 totalInterest = 0; Investment storage investment = investments[_user]; uint256 userDeposit = investment.userTotalValue.mul(lockRates).div(100).add(investment.userTotalValue); uint256 userWithdraw = investment.withdraw; if(userWithdraw >= userDeposit){ return 0; } for (uint256 i = 0; i < userLocks.length; i++) { Lock storage lock = userLocks[i]; uint256 interest = (block.timestamp.sub(investment.lastCollectionTime)).mul(lock.releaseRate); if (interest > 0) { totalInterest += interest; } } Referrer storage referrer_user = referrers[_user]; uint256 total_reward = referrer_user.totalReferrerRaward; if(userDeposit.sub(userWithdraw) >= referralThreshold){ if(referrer_user.totalInvestment > 0){ if(total_reward + referrer_user.noExtract <= referrer_user.referrerRewardLimit){ totalInterest += referrer_user.noExtract; total_reward += referrer_user.noExtract; }else{ if(referrer_user.referrerRewardLimit > referrer_user.totalReferrerRaward){ totalInterest += referrer_user.referrerRewardLimit - referrer_user.totalReferrerRaward; total_reward = referrer_user.referrerRewardLimit; } } uint256 team_reward = (block.timestamp.sub(referrer_user.teamRewardTime)).mul(referrer_user.teamRewardRate); if(referrer_user.teamRewardTime > 0 && referrer_user.teamRewardRate > 0){ if(total_reward + team_reward <= referrer_user.referrerRewardLimit){ totalInterest += team_reward; }else{ if(referrer_user.referrerRewardLimit > referrer_user.totalReferrerRaward){ totalInterest += referrer_user.referrerRewardLimit - referrer_user.totalReferrerRaward; } } } } } uint256 total_withdraw = investment.withdraw + totalInterest; uint256 transfer_amount = 0; if(total_withdraw >= userDeposit){ transfer_amount = userDeposit.sub(userWithdraw); }else{ transfer_amount = totalInterest; } return transfer_amount; } function getNoExtract(address _user) public view returns (uint256) { require(_user != address(0), "_user cannot be 0x0."); uint256 totalInterest = 0; Investment storage investment = investments[_user]; uint256 userDeposit = investment.userTotalValue.mul(lockRates).div(100).add(investment.userTotalValue); uint256 userWithdraw = investment.withdraw; if(userWithdraw >= userDeposit){ return 0; } Referrer storage referrer_user = referrers[_user]; uint256 total_reward = referrer_user.totalReferrerRaward; if(userDeposit.sub(userWithdraw) >= referralThreshold){ if(referrer_user.totalInvestment > 0){ if(total_reward + referrer_user.noExtract <= referrer_user.referrerRewardLimit){ totalInterest += referrer_user.noExtract; total_reward += referrer_user.noExtract; }else{ if(referrer_user.referrerRewardLimit > referrer_user.totalReferrerRaward){ totalInterest += referrer_user.referrerRewardLimit - referrer_user.totalReferrerRaward; total_reward = referrer_user.referrerRewardLimit; } } uint256 team_reward = (block.timestamp.sub(referrer_user.teamRewardTime)).mul(referrer_user.teamRewardRate); if(referrer_user.teamRewardTime > 0 && referrer_user.teamRewardRate > 0){ if(total_reward + team_reward <= referrer_user.referrerRewardLimit){ totalInterest += team_reward; }else{ if(referrer_user.referrerRewardLimit > referrer_user.totalReferrerRaward){ totalInterest += referrer_user.referrerRewardLimit - referrer_user.totalReferrerRaward; } } } } } uint256 total_withdraw = investment.withdraw + totalInterest; uint256 transfer_amount = 0; if(total_withdraw >= userDeposit){ transfer_amount = userDeposit.sub(userWithdraw); }else{ transfer_amount = totalInterest; } return transfer_amount; } function changeLockInfo(address _user, uint256 _rate, uint256 i) public onlyOwner returns (bool) { require(_user != address(0), "_user cannot be 0x0."); Lock storage userLocks = locks[_user][i]; userLocks.releaseRate = _rate; emit EsgChangeLockInfo(_user, _rate, i); return true; } function changeInvestmentInfo(address _user, uint256 _userTotalValue, uint256 _withdraw, uint256 _lastCollectionTime) public onlyOwner returns (bool) { require(_user != address(0), "_user cannot be 0x0."); Investment storage investment = investments[_user]; investment.userTotalValue = _userTotalValue; investment.withdraw = _withdraw; investment.lastCollectionTime = _lastCollectionTime; emit EsgChangeInvestmentInfo(_user, _userTotalValue, _withdraw, _lastCollectionTime); return true; } function changeReferrerInfo(address _user, uint256 _totalInvestment, uint256 _referrerRewardLimit, uint256 _totalReferrerRaward, uint256 _teamRewardTime, uint256 _teamRewardRate, uint256 _noExtract) public onlyOwner returns (bool) { require(_user != address(0), "_user cannot be 0x0."); Referrer storage referrer = referrers[_user]; referrer.totalInvestment = _totalInvestment; referrer.referrerRewardLimit = _referrerRewardLimit; referrer.totalReferrerRaward = _totalReferrerRaward; referrer.teamRewardTime = _teamRewardTime; referrer.teamRewardRate = _teamRewardRate; referrer.noExtract = _noExtract; emit EsgChangeReferrerInfo(_user, _totalInvestment, _referrerRewardLimit, _totalReferrerRaward, _teamRewardTime, _teamRewardRate, _noExtract); return true; } function getLockInfo(address _user) public view returns ( uint256[] memory, uint256[] memory, uint256[] memory, uint256[] memory, uint256[] memory, uint256[] memory, uint256[] memory ) { Lock[] storage userLocks = locks[_user]; uint256 length = userLocks.length; uint256[] memory amounts = new uint256[](length); uint256[] memory esgprices = new uint256[](length); uint256[] memory values = new uint256[](length); uint256[] memory starts = new uint256[](length); uint256[] memory ends = new uint256[](length); uint256[] memory investdays = new uint256[](length); uint256[] memory rates = new uint256[](length); for (uint256 i = 0; i < length; i++) { Lock storage lock = userLocks[i]; amounts[i] = lock.amount; esgprices[i] = lock.esgPrice; values[i] = lock.value; starts[i] = lock.start; ends[i] = lock.end; investdays[i] = lock.investDays; rates[i] = lock.releaseRate; } return (amounts, esgprices, values, starts, ends, investdays, rates); } function transferOwnership(address newOwner) onlyOwner public { if (newOwner != address(0)) { owner = newOwner; } } }
pragma solidity ^0.5.16; // From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/Math.sol // Subject to the MIT license. /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the addition of two unsigned integers, reverting with custom message on overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, errorMessage); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on underflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot underflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction underflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on underflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot underflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, errorMessage); return c; } /** * @dev Returns the integer division of two unsigned integers. * Reverts on division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. * Reverts with custom message on division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } /** * @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); } } }
pragma solidity ^0.5.16; /** * @title ERC 20 Token Standard Interface * https://eips.ethereum.org/EIPS/eip-20 */ interface EIP20Interface { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); /** * @notice Get the total number of tokens in circulation * @return The supply of tokens */ function totalSupply() external view returns (uint256); /** * @notice Gets the balance of the specified address * @param owner The address from which the balance will be retrieved * @return The balance */ function balanceOf(address owner) external view returns (uint256 balance); /** * @notice Transfer `amount` tokens from `msg.sender` to `dst` * @param dst The address of the destination account * @param amount The number of tokens to transfer * @return Whether or not the transfer succeeded */ function transfer(address dst, uint256 amount) external returns (bool success); /** * @notice Transfer `amount` tokens from `src` to `dst` * @param src The address of the source account * @param dst The address of the destination account * @param amount The number of tokens to transfer * @return Whether or not the transfer succeeded */ function transferFrom(address src, address dst, uint256 amount) external returns (bool success); /** * @notice Approve `spender` to transfer up to `amount` from `src` * @dev This will overwrite the approval amount for `spender` * and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve) * @param spender The address of the account which may transfer tokens * @param amount The number of tokens that are approved (-1 means infinite) * @return Whether or not the approval succeeded */ function approve(address spender, uint256 amount) external returns (bool success); /** * @notice Get the current allowance from `owner` for `spender` * @param owner The address of the account which owns the tokens to be spent * @param spender The address of the account which may transfer tokens * @return The number of tokens allowed to be spent (-1 means infinite) */ function allowance(address owner, address spender) external view returns (uint256 remaining); event Transfer(address indexed from, address indexed to, uint256 amount); event Approval(address indexed owner, address indexed spender, uint256 amount); }
{ "remappings": [], "optimizer": { "enabled": true, "runs": 300 }, "evmVersion": "istanbul", "libraries": {}, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"esgAddress","type":"address"},{"internalType":"address","name":"feeWalletAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_user","type":"address"},{"indexed":false,"internalType":"uint256","name":"_userTotalValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_withdraw","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_lastCollectionTime","type":"uint256"}],"name":"EsgChangeInvestmentInfo","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_user","type":"address"},{"indexed":false,"internalType":"uint256","name":"_rate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"i","type":"uint256"}],"name":"EsgChangeLockInfo","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_user","type":"address"},{"indexed":false,"internalType":"uint256","name":"_totalInvestment","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_referrerRewardLimit","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_totalReferrerRaward","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_teamRewardTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_teamRewardRate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_noExtract","type":"uint256"}],"name":"EsgChangeReferrerInfo","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"EsgClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"EsgInvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"EsgInvestByOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"inviteeAddress","type":"address"}],"name":"SetInvitee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"referrerAddress","type":"address"},{"indexed":false,"internalType":"address","name":"inviteeAddress","type":"address"}],"name":"SetInviteeByOwner","type":"event"},{"constant":false,"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_userTotalValue","type":"uint256"},{"internalType":"uint256","name":"_withdraw","type":"uint256"},{"internalType":"uint256","name":"_lastCollectionTime","type":"uint256"}],"name":"changeInvestmentInfo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_rate","type":"uint256"},{"internalType":"uint256","name":"i","type":"uint256"}],"name":"changeLockInfo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_totalInvestment","type":"uint256"},{"internalType":"uint256","name":"_referrerRewardLimit","type":"uint256"},{"internalType":"uint256","name":"_totalReferrerRaward","type":"uint256"},{"internalType":"uint256","name":"_teamRewardTime","type":"uint256"},{"internalType":"uint256","name":"_teamRewardRate","type":"uint256"},{"internalType":"uint256","name":"_noExtract","type":"uint256"}],"name":"changeReferrerInfo","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claim","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"claimEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"dynamicRewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"esg","outputs":[{"internalType":"contract EIP20Interface","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getClaimAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"referrerAddress","type":"address"}],"name":"getInviteelist","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getLockInfo","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getNoExtract","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"inviteeAddress","type":"address"}],"name":"getReferrer","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"invest","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"investAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"investByOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"investEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"invest_days1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"invest_days2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"invest_days3","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"invest_days4","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"invest_days5","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"investments","outputs":[{"internalType":"uint256","name":"userTotalValue","type":"uint256"},{"internalType":"uint256","name":"withdraw","type":"uint256"},{"internalType":"uint256","name":"lastCollectionTime","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lockRates","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"locks","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"esgPrice","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"},{"internalType":"uint256","name":"investDays","type":"uint256"},{"internalType":"uint256","name":"releaseRate","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"referralThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"referrerlist","outputs":[{"internalType":"address","name":"referrer_addr","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"referrers","outputs":[{"internalType":"uint256","name":"totalInvestment","type":"uint256"},{"internalType":"uint256","name":"referrerRewardLimit","type":"uint256"},{"internalType":"uint256","name":"totalReferrerRaward","type":"uint256"},{"internalType":"uint256","name":"teamRewardTime","type":"uint256"},{"internalType":"uint256","name":"teamRewardRate","type":"uint256"},{"internalType":"uint256","name":"noExtract","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bool","name":"_claimEnabled","type":"bool"}],"name":"setClaimEnabled","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_dynamicRewardRate","type":"uint256"}],"name":"setDynamicRewardRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"days1","type":"uint256"},{"internalType":"uint256","name":"days2","type":"uint256"},{"internalType":"uint256","name":"days3","type":"uint256"},{"internalType":"uint256","name":"days4","type":"uint256"},{"internalType":"uint256","name":"days5","type":"uint256"}],"name":"setInvestDays","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bool","name":"_investEnabled","type":"bool"}],"name":"setInvestEnabled","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"inviteeAddress","type":"address"}],"name":"setInvitee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"referrerAddress","type":"address"},{"internalType":"address","name":"inviteeAddress","type":"address"}],"name":"setInviteeByOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_lockRates","type":"uint256"}],"name":"setLockRates","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"setPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_referralThreshold","type":"uint256"}],"name":"setReferralThreshold","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_staticRewardRate","type":"uint256"}],"name":"setStaticRewardRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_teamRewardThreshold","type":"uint256"}],"name":"setTeamRewardThreshold","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_teamRewardThresholdRate","type":"uint256"}],"name":"setTeamRewardThresholdRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_teamRewardThresholdStep","type":"uint256"}],"name":"setTeamRewardThresholdStep","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_teamRewardThresholdStepRate","type":"uint256"}],"name":"setTeamRewardThresholdStepRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"staticRewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"teamRewardThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"teamRewardThresholdRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"teamRewardThresholdStep","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"teamRewardThresholdStepRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"total_amount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"total_claim_amount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"total_deposited","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"total_extracted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"total_user","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052600560065561015e60075561015e60085561015e60095561015e600a5561012c600b556b033b2e3c9fd0803ce8000000600c556064601255600a601355600a6014556b60ef6b1aba6f0723300000006015556a18d0bf423c03d8de0000006016556b204fce5e3e250261100000006017556a084595161401484a0000006018553480156200009157600080fd5b50604051620041b6380380620041b6833981016040819052620000b49162000128565b601a8054610100600162010000600160b01b03199092163362010000021760ff19169190911761ff001916179055600080546001600160a01b03199081166001600160a01b0394851617909155600580549091169190921617905562000193565b8051620001228162000179565b92915050565b600080604083850312156200013c57600080fd5b60006200014a858562000115565b92505060206200015d8582860162000115565b9150509250929050565b60006001600160a01b03821662000122565b620001848162000167565b81146200019057600080fd5b50565b61401380620001a36000396000f3fe608060405234801561001057600080fd5b506004361061036d5760003560e01c80637c42d2b5116101d3578063b553207e11610104578063d88e71e0116100a2578063de560cca1161007c578063de560cca146106d1578063e085c952146106d9578063e9920181146106e1578063f2fde38b146106f45761036d565b8063d88e71e0146106ae578063ddca3f43146106b6578063dde070e8146106be5761036d565b8063c84ba291116100de578063c84ba29114610681578063cac0652214610689578063d5ef14231461069e578063d660e6ab146106a65761036d565b8063b553207e14610653578063b6812eaf1461065b578063b6d4efd01461066e5761036d565b806396b9886211610171578063a035b1fe1161014b578063a035b1fe1461060a578063a0cbadb314610612578063ad82c2541461061a578063b425f8021461062d5761036d565b806396b98862146105c25780639cbdc6c1146105e45780639fd1b2fc146105f75761036d565b80638da5cb5b116101ad5780638da5cb5b146105815780638fc1ea1e1461058957806391b7f5ed1461059c57806392929a09146105af5761036d565b80637c42d2b5146105535780637cb04a211461055b5780638016f8241461056e5761036d565b80635a6da1e9116102ad57806369fe0e2d1161024b57806376ec6e8c1161022557806376ec6e8c14610512578063788af7861461052557806379a53592146105385780637bfc52111461054b5761036d565b806369fe0e2d146104d157806371f4f3fb146104e45780637238ccdb146104ec5761036d565b80635fc43dd0116102875780635fc43dd01461049b57806364e731aa146104ae57806365ab4477146104c1578063673cd98e146104c95761036d565b80635a6da1e9146104835780635ab09c1e1461048b5780635ebd5872146104935761036d565b8063384c9aef1161031a5780634a9fefc7116102f45780634a9fefc7146104405780634e71d92d146104605780634fa77a4814610468578063513eb0221461047b5761036d565b8063384c9aef146103fe57806340912990146104135780634a3b68cc1461041b5761036d565b80632e5e83341161034b5780632e5e8334146103b6578063357b97dd146103cb57806336d8a893146103de5761036d565b806323361b79146103725780632866ed211461039b5780632afcf480146103a3575b600080fd5b610385610380366004613359565b610707565b6040516103929190613d26565b60405180910390f35b6103856107e0565b6103856103b1366004613492565b6107ee565b6103be610f90565b6040516103929190613eb3565b6103856103d936600461330c565b610f96565b6103f16103ec366004613284565b611074565b6040516103929190613c8c565b61041161040c366004613492565b611115565b005b6103be61114a565b61042e610429366004613284565b611150565b60405161039296959493929190613ecf565b61045361044e366004613284565b61118c565b6040516103929190613b43565b6103856111d3565b610385610476366004613284565b61192d565b6103be611b07565b6103be611b0d565b6103be611b13565b6103be611b19565b6103856104a93660046132a2565b611b1f565b6103856104bc3660046132dc565b611d5e565b6103be612491565b6103be612497565b6104116104df366004613492565b61249d565b6103856124f2565b6104ff6104fa366004613284565b6124fb565b6040516103929796959493929190613c9d565b610411610520366004613492565b61279c565b6104116105333660046134b0565b6127d1565b610411610546366004613492565b6128b8565b6103be6128ed565b6103be6128f3565b610411610569366004613492565b6128f9565b6103be61057c366004613284565b61292e565b610453612ae1565b610411610597366004613456565b612af6565b6104116105aa366004613492565b612b39565b6104116105bd366004613456565b612b8e565b6105d56105d0366004613284565b612bd8565b60405161039293929190613ec1565b6103856105f23660046133ba565b612bf8565b610411610605366004613492565b612cea565b6103be612d1f565b6103be612d25565b610411610628366004613492565b612d2b565b61064061063b3660046132dc565b612d60565b6040516103929796959493929190613f1e565b6103be612db7565b610411610669366004613492565b612dbd565b61041161067c366004613492565b612df2565b6103be612e27565b610691612e2d565b6040516103929190613d34565b6103be612e3c565b6103be612e42565b6103be612e48565b6103be612e4e565b6103be6106cc366004613284565b612e54565b6103be613079565b6103be61307f565b6104536106ef366004613284565b613085565b610411610702366004613284565b6130a0565b601a546000906201000090046001600160a01b031633146107435760405162461bcd60e51b815260040161073a90613d73565b60405180910390fd5b6001600160a01b0385166107695760405162461bcd60e51b815260040161073a90613e73565b6001600160a01b0385166000908152600260208190526040918290208681556001810186905590810184905590517f54840d35ba54ac621adbc02d6b559075470a1a77f6f5b5394f7a2e994dd8230b906107ca908890889088908890613be6565b60405180910390a160019150505b949350505050565b601a54610100900460ff1681565b601a5460009060ff1615156001146108185760405162461bcd60e51b815260040161073a90613de3565b600082116108385760405162461bcd60e51b815260040161073a90613d53565b6000546040516323b872dd60e01b81526001600160a01b03909116906323b872dd9061086c90339030908790600401613b51565b602060405180830381600087803b15801561088657600080fd5b505af115801561089a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108be9190810190613474565b5033600090815260016020526040902080544291901561094057336000908152600260205260408120805460125491929161092491906109189060649061090c90849063ffffffff61311216565b9063ffffffff61314c16565b9063ffffffff61318e16565b60018301549091508082141561093c57600283018590555b5050505b601954600090819061095990879063ffffffff61311216565b90506b019d971e4fe8401e74000000811015610979576007549150610a34565b6b019d971e4fe8401e7400000081101580156109a057506b06765c793fa10079d000000081105b156109af576008549150610a34565b6b06765c793fa10079d000000081101580156109d657506b1027e72f1f1281308800000081105b156109e5576009549150610a34565b6b1027e72f1f128130880000008110158015610a0c57506b204fce5e3e2502611000000081105b15610a1b57600a549150610a34565b6b204fce5e3e250261100000008110610a3457600b5491505b60016000336001600160a01b03166001600160a01b031681526020019081526020016000206040518060e00160405280888152602001601954815260200183815260200186815260200184620151800287018152602001848152602001610aba6201518061090c8761090c88610918606461090c6012548d61311290919063ffffffff16565b90528154600181810184556000938452602080852084516007909402019283558084015191830191909155604080840151600280850191909155606085015160038501556080850151600485015560a0850151600585015560c0909401516006909301929092553384529190915290208054610b415760028101859055600e805460010190555b805482018155600d805483019055600f805488019055336000908152600360205260409020805415610c1a578154601254610b8f91906109189060649061090c90849063ffffffff61311216565b6002820155601554600182015410610c1a576004810154600090610c18574260048301556017546015546001840154610bd3929161090c919063ffffffff6131b316565b9050610bf16201518061090c8360185461311290919063ffffffff16565b6005830155601654610c0c906201518063ffffffff61314c16565b60058301805490910190555b505b33600090815260046020526040902080546001600160a01b031615610f425780546001600160a01b03166000908152600360205260408120600101805486019055601354610c769060649061090c90889063ffffffff61311216565b82546001600160a01b03166000908152600360208181526040808420600190925290922060028301549183015493945091921015610d5b578160020154838360030154011015610d1357600682018054840190819055600283015411610d0e5760005b8154811015610d0c576000828281548110610cf057fe5b6000918252602082206006600790920201015550600101610cd9565b505b610d5b565b6003820154600283015403600683015560005b8154811015610d59576000828281548110610d3d57fe5b6000918252602082206006600790920201015550600101610d26565b505b601554826001015410610f3e576004820154600090610de3574260048401556017546015546001850154610d9a929161090c919063ffffffff6131b316565b9050610db86201518061090c8360185461311290919063ffffffff16565b6005840155601654610dd3906201518063ffffffff61314c16565b6005840180549091019055610f3c565b6000610e108460050154610e048660040154426131b390919063ffffffff16565b9063ffffffff61311216565b9050836002015484600301541015610f3a578360020154818560030154011015610e8757600684018054820190819055600285015411610e825760005b8354811015610e80576000848281548110610e6457fe5b6000918252602082206006600790920201015550600101610e4d565b505b610ecf565b6003840154600285015403600685015560005b8354811015610ecd576000848281548110610eb157fe5b6000918252602082206006600790920201015550600101610e9a565b505b4260048501556017546015546001860154610ef5929161090c919063ffffffff6131b316565b9150610f136201518061090c8460185461311290919063ffffffff16565b6005850155601654610f2e906201518063ffffffff61314c16565b60058501805490910190555b505b505b5050505b7f3eb0f553d9ec38e0ff3a72db450f9d6f5e372e70e824a3195a09ead1c01fb876338a601954604051610f7793929190613b94565b60405180910390a160019750505050505050505b919050565b60085481565b601a546000906201000090046001600160a01b03163314610fc95760405162461bcd60e51b815260040161073a90613d73565b6001600160a01b038416610fef5760405162461bcd60e51b815260040161073a90613e73565b6001600160a01b038416600090815260016020526040812080548490811061101357fe5b906000526020600020906007020190508381600601819055507f47f6b9e3974adf5c2be82125be9f7a02fb53010c65a3bfd9f4751cdf547538cf85858560405161105f93929190613bd8565b60405180910390a160019150505b9392505050565b60606001600160a01b03821661109c5760405162461bcd60e51b815260040161073a90613dd3565b6001600160a01b038216600090815260036020908152604091829020805483518184028101840190945280845290929183919083018282801561110857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116110ea575b5050505050915050919050565b601a546201000090046001600160a01b031633146111455760405162461bcd60e51b815260040161073a90613d73565b601255565b600e5481565b60036020528060005260406000206000915090508060010154908060020154908060030154908060040154908060050154908060060154905086565b60006001600160a01b0382166111b45760405162461bcd60e51b815260040161073a90613e33565b506001600160a01b039081166000908152600460205260409020541690565b601a5460009060ff6101009091041615156001146112035760405162461bcd60e51b815260040161073a90613e93565b33600090815260016020526040902080546112305760405162461bcd60e51b815260040161073a90613e23565b33600090815260026020526040812080546012548391611262916109189060649061090c90849063ffffffff61311216565b60018301549091508082116112895760405162461bcd60e51b815260040161073a90613e63565b60005b85548110156112eb5760008682815481106112a357fe5b9060005260206000209060070201905060006112d48260060154610e048860020154426131b390919063ffffffff16565b905080156112e157958601955b505060010161128c565b50336000908152600360205260409020600c54828403106114445760018101541561144457806002015481600601548260030154011161135d57600681015460038201805482019081905560028301549690910195101561135157600281015460038201555b6000600682015561138f565b80600301548160020154111561137d578060030154816002015403850194505b60028101546003820155600060068201555b60006113b08260050154610e048460040154426131b390919063ffffffff16565b9050600082600401541180156113ca575060008260050154115b15611442578160020154818360030154011161141157600382018054820190819055600283015496820196101561140657600282015460038301555b426004830155611442565b816003015482600201541115611431578160030154826002015403860195505b600282015460038301554260048301555b505b600085116114645760405162461bcd60e51b815260040161073a90613dc3565b42600285015560018401546000908190870185811061162b576019546114949061090c888863ffffffff6131b316565b92508587600101819055506114b9606461090c6006548661311290919063ffffffff16565b60005460055460405163a9059cbb60e01b81529294506001600160a01b039182169263a9059cbb926114f19216908690600401613bca565b602060405180830381600087803b15801561150b57600080fd5b505af115801561151f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115439190810190613474565b506000546001600160a01b031663a9059cbb33611566868663ffffffff6131b316565b6040518363ffffffff1660e01b8152600401611583929190613b79565b602060405180830381600087803b15801561159d57600080fd5b505af11580156115b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115d59190810190613474565b5060005b895481101561160c5760008a82815481106115f057fe5b60009182526020822060066007909202010155506001016115d9565b506001840154156116265760006004850181905560058501555b611785565b60195461163f90899063ffffffff61314c16565b6001880180548a0190556006549093506116679060649061090c90869063ffffffff61311216565b60005460055460405163a9059cbb60e01b81529294506001600160a01b039182169263a9059cbb9261169f9216908690600401613bca565b602060405180830381600087803b1580156116b957600080fd5b505af11580156116cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116f19190810190613474565b506000546001600160a01b031663a9059cbb33611714868663ffffffff6131b316565b6040518363ffffffff1660e01b8152600401611731929190613b79565b602060405180830381600087803b15801561174b57600080fd5b505af115801561175f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117839190810190613474565b505b60118054840190556019546117a190849063ffffffff61311216565b60108054909101905533600090815260046020526040902080546001600160a01b0316156118df5780546001600160a01b031660009081526003602052604081206014549091906118009060649061090c908e9063ffffffff61311216565b83546001600160a01b0316600090815260016020526040902060028401546003850154929350909110156118db5782600201548284600301540110156118935760068301805483019081905560028401541161188e5760005b8d5481101561188c5760008e828154811061187057fe5b6000918252602082206006600790920201015550600101611859565b505b6118db565b6003830154600284015403600684015560005b81548110156118d95760008282815481106118bd57fe5b60009182526020822060066007909202010155506001016118a6565b505b5050505b7f4343fc0436cb075772fdb7e28d5380cc610e5334add5537e2d2b2946b8e2836f338560195460405161191493929190613b94565b60405180910390a160019a505050505050505050505090565b60006001600160a01b0382166119555760405162461bcd60e51b815260040161073a90613e33565b6001600160a01b0380831660009081526004602052604090208054909116156119905760405162461bcd60e51b815260040161073a90613e83565b336000908152600260205260409020600c54600182015482546012546119d992916119cd916109189060649061090c90849063ffffffff61311216565b9063ffffffff6131b316565b10156119f75760405162461bcd60e51b815260040161073a90613d63565b6001600160a01b0384166000908152600160205260409020805415611a2e5760405162461bcd60e51b815260040161073a90613db3565b33600090815260036020908152604082208054600181018255818452919092200180546001600160a01b0319166001600160a01b0388161790556002810154611a99578254601254611a9391906109189060649061090c90849063ffffffff61311216565b60028201555b6001600160a01b0386166000908152600460205260409081902080546001600160a01b0319163317815590517f5460efa9aaef49adcbdec085b22993bea41d8d5abd3124de8faeea893ce9593a90611af2908990613b43565b60405180910390a15060019695505050505050565b60165481565b60125481565b60095481565b600b5481565b601a546000906201000090046001600160a01b03163314611b525760405162461bcd60e51b815260040161073a90613d73565b6001600160a01b038316611b785760405162461bcd60e51b815260040161073a90613dd3565b6001600160a01b038216611b9e5760405162461bcd60e51b815260040161073a90613e33565b6001600160a01b038083166000908152600460205260409020805490911615611bd95760405162461bcd60e51b815260040161073a90613e83565b6001600160a01b0384166000908152600260205260409020600c5460018201548254601254611c1f92916119cd916109189060649061090c90849063ffffffff61311216565b1015611c3d5760405162461bcd60e51b815260040161073a90613d63565b6001600160a01b0384166000908152600160205260409020805415611c745760405162461bcd60e51b815260040161073a90613db3565b6001600160a01b03868116600090815260036020908152604082208054600181018255818452919092200180546001600160a01b031916928816929092179091556002810154611ce6578254601254611ce091906109189060649061090c90849063ffffffff61311216565b60028201555b6001600160a01b038681166000908152600460205260409081902080546001600160a01b031916928a16929092178255517f0d984a86460fe7e0cd7646fc932b7cb5185793e3053c6d6eb5f73fb94b9a969490611d46908a908a90613baf565b60405180910390a16001955050505050505b92915050565b601a546000906201000090046001600160a01b03163314611d915760405162461bcd60e51b815260040161073a90613d73565b601a5460ff161515600114611db85760405162461bcd60e51b815260040161073a90613de3565b60008211611dd85760405162461bcd60e51b815260040161073a90613d53565b6019546000908190611df190859063ffffffff61311216565b90506b019d971e4fe8401e74000000811015611e11576007549150611ecc565b6b019d971e4fe8401e740000008110158015611e3857506b06765c793fa10079d000000081105b15611e47576008549150611ecc565b6b06765c793fa10079d00000008110158015611e6e57506b1027e72f1f1281308800000081105b15611e7d576009549150611ecc565b6b1027e72f1f128130880000008110158015611ea457506b204fce5e3e2502611000000081105b15611eb357600a549150611ecc565b6b204fce5e3e250261100000008110611ecc57600b5491505b336000908152600160205260409020805442919015611f35573360009081526002602052604081208054601254919291611f1991906109189060649061090c90849063ffffffff61311216565b600183015490915080821415611f3157600283018590555b5050505b60016000886001600160a01b03166001600160a01b031681526020019081526020016000206040518060e00160405280888152602001601954815260200185815260200184815260200186620151800285018152602001868152602001611fbb6201518061090c8961090c8a610918606461090c6012548f61311290919063ffffffff16565b90528154600181810184556000938452602080852084516007909402019283558084015191830191909155604080840151600280850191909155606085015160038501556080850151600485015560a0850151600585015560c0909401516006909301929092556001600160a01b038b168452919091529020805461204b5760028101839055600e805460010190555b805484018155600d805485019055600f80548801905533600090815260036020526040902080541561212457815460125461209991906109189060649061090c90849063ffffffff61311216565b60028201556015546001820154106121245760048101546000906121225742600483015560175460155460018401546120dd929161090c919063ffffffff6131b316565b90506120fb6201518061090c8360185461311290919063ffffffff16565b6005830155601654612116906201518063ffffffff61314c16565b60058301805490910190555b505b6001600160a01b03808a1660009081526004602052604090208054909116156124445780546001600160a01b031660009081526003602052604081206001018054880190556013546121849060649061090c908a9063ffffffff61311216565b82546001600160a01b031660009081526003602081815260408084206001909252909220600283015491830154939450919210156122695781600201548383600301540110156122215760068201805484019081905560028301541161221c5760005b815481101561221a5760008282815481106121fe57fe5b60009182526020822060066007909202010155506001016121e7565b505b612269565b6003820154600283015403600683015560005b815481101561226757600082828154811061224b57fe5b6000918252602082206006600790920201015550600101612234565b505b6015548260010154106124405760048201546000906122f15742600484015560175460155460018501546122a8929161090c919063ffffffff6131b316565b90506122c66201518061090c8360185461311290919063ffffffff16565b60058401556016546122e1906201518063ffffffff61314c16565b600584018054909101905561243e565b60006123128460050154610e048660040154426131b390919063ffffffff16565b905083600201548460030154101561243c578360020154818560030154011015612389576006840180548201908190556002850154116123845760005b835481101561238257600084828154811061236657fe5b600091825260208220600660079092020101555060010161234f565b505b6123d1565b6003840154600285015403600685015560005b83548110156123cf5760008482815481106123b357fe5b600091825260208220600660079092020101555060010161239c565b505b42600485015560175460155460018601546123f7929161090c919063ffffffff6131b316565b91506124156201518061090c8460185461311290919063ffffffff16565b6005850155601654612430906201518063ffffffff61314c16565b60058501805490910190555b505b505b5050505b7f9a9654e283717250eb1f515593102e2024a5f6b264ed5659bdc199ae3cf9e3158a8a60195460405161247993929190613bd8565b60405180910390a15060019998505050505050505050565b600c5481565b600f5481565b601a546201000090046001600160a01b031633146124cd5760405162461bcd60e51b815260040161073a90613d73565b600081116124ed5760405162461bcd60e51b815260040161073a90613d93565b600655565b601a5460ff1681565b60608060608060608060606000600160008a6001600160a01b03166001600160a01b031681526020019081526020016000209050600081805490509050606081604051908082528060200260200182016040528015612564578160200160208202803883390190505b509050606082604051908082528060200260200182016040528015612593578160200160208202803883390190505b5090506060836040519080825280602002602001820160405280156125c2578160200160208202803883390190505b5090506060846040519080825280602002602001820160405280156125f1578160200160208202803883390190505b509050606085604051908082528060200260200182016040528015612620578160200160208202803883390190505b50905060608660405190808252806020026020018201604052801561264f578160200160208202803883390190505b50905060608760405190808252806020026020018201604052801561267e578160200160208202803883390190505b50905060005b8881101561277d5760008a828154811061269a57fe5b9060005260206000209060070201905080600001548983815181106126bb57fe5b60200260200101818152505080600101548883815181106126d857fe5b60200260200101818152505080600201548783815181106126f557fe5b602002602001018181525050806003015486838151811061271257fe5b602002602001018181525050806004015485838151811061272f57fe5b602002602001018181525050806005015484838151811061274c57fe5b602002602001018181525050806006015483838151811061276957fe5b602090810291909101015250600101612684565b50959e50939c50919a5098509650945092505050919395979092949650565b601a546201000090046001600160a01b031633146127cc5760405162461bcd60e51b815260040161073a90613d73565b601755565b601a546201000090046001600160a01b031633146128015760405162461bcd60e51b815260040161073a90613d73565b600085116128215760405162461bcd60e51b815260040161073a90613da3565b600084116128415760405162461bcd60e51b815260040161073a90613e43565b600083116128615760405162461bcd60e51b815260040161073a90613e03565b600082116128815760405162461bcd60e51b815260040161073a90613df3565b600081116128a15760405162461bcd60e51b815260040161073a90613ea3565b600794909455600892909255600955600a55600b55565b601a546201000090046001600160a01b031633146128e85760405162461bcd60e51b815260040161073a90613d73565b601655565b60145481565b60155481565b601a546201000090046001600160a01b031633146129295760405162461bcd60e51b815260040161073a90613d73565b601355565b60006001600160a01b0382166129565760405162461bcd60e51b815260040161073a90613e73565b6001600160a01b038216600090815260026020526040812080546012548391612991916109189060649061090c90849063ffffffff61311216565b60018301549091508181106129ad576000945050505050610f8b565b6001600160a01b038616600090815260036020819052604090912090810154600c546129df858563ffffffff6131b316565b10612aaa57600182015415612aaa5781600201548260060154820111612a0e5760068201549586019501612a32565b816003015482600201541115612a3257506003810154600282015490810395909501945b6000612a538360050154610e048560040154426131b390919063ffffffff16565b905060008360040154118015612a6d575060008360050154115b15612aa857826002015481830111612a885795860195612aa8565b826003015483600201541115612aa8578260030154836002015403870196505b505b600185015486016000858210612ad157612aca868663ffffffff6131b316565b9050612ad4565b50865b9998505050505050505050565b601a546201000090046001600160a01b031681565b601a546201000090046001600160a01b03163314612b265760405162461bcd60e51b815260040161073a90613d73565b601a805460ff1916911515919091179055565b601a546201000090046001600160a01b03163314612b695760405162461bcd60e51b815260040161073a90613d73565b60008111612b895760405162461bcd60e51b815260040161073a90613e53565b601955565b601a546201000090046001600160a01b03163314612bbe5760405162461bcd60e51b815260040161073a90613d73565b601a80549115156101000261ff0019909216919091179055565b600260208190526000918252604090912080546001820154919092015483565b601a546000906201000090046001600160a01b03163314612c2b5760405162461bcd60e51b815260040161073a90613d73565b6001600160a01b038816612c515760405162461bcd60e51b815260040161073a90613e73565b6001600160a01b038816600090815260036020819052604091829020600181018a90556002810189905590810187905560048101869055600581018590556006810184905590517f0ebff4f4881dd1e533b0ea6168da45b5c184454dac4f1da5b56766c2c7ea738890612cd1908b908b908b908b908b908b908b90613c24565b60405180910390a160019150505b979650505050505050565b601a546201000090046001600160a01b03163314612d1a5760405162461bcd60e51b815260040161073a90613d73565b601855565b60195481565b60105481565b601a546201000090046001600160a01b03163314612d5b5760405162461bcd60e51b815260040161073a90613d73565b600c55565b60016020528160005260406000208181548110612d7957fe5b600091825260209091206007909102018054600182015460028301546003840154600485015460058601546006909601549497509295509093909287565b60075481565b601a546201000090046001600160a01b03163314612ded5760405162461bcd60e51b815260040161073a90613d73565b601555565b601a546201000090046001600160a01b03163314612e225760405162461bcd60e51b815260040161073a90613d73565b601455565b60175481565b6000546001600160a01b031681565b60185481565b600a5481565b60135481565b60065481565b60006001600160a01b038216612e7c5760405162461bcd60e51b815260040161073a90613e73565b6001600160a01b03821660009081526001602090815260408083206002909252822080546012549293928391612ec4916109189060649061090c90849063ffffffff61311216565b6001830154909150818110612ee157600095505050505050610f8b565b60005b8554811015612f43576000868281548110612efb57fe5b906000526020600020906007020190506000612f2c8260060154610e048860020154426131b390919063ffffffff16565b90508015612f3957958601955b5050600101612ee4565b506001600160a01b038716600090815260036020819052604090912090810154600c54612f76858563ffffffff6131b316565b10613041576001820154156130415781600201548260060154820111612fa55760068201549586019501612fc9565b816003015482600201541115612fc957506003810154600282015490810395909501945b6000612fea8360050154610e048560040154426131b390919063ffffffff16565b905060008360040154118015613004575060008360050154115b1561303f5782600201548183011161301f579586019561303f565b82600301548360020154111561303f578260030154836002015403870196505b505b60018501548601600085821061306857613061868663ffffffff6131b316565b905061306b565b50865b9a9950505050505050505050565b600d5481565b60115481565b6004602052600090815260409020546001600160a01b031681565b601a546201000090046001600160a01b031633146130d05760405162461bcd60e51b815260040161073a90613d73565b6001600160a01b0381161561310f57601a805475ffffffffffffffffffffffffffffffffffffffff00001916620100006001600160a01b038416021790555b50565b60008261312157506000611d58565b8282028284828161312e57fe5b041461106d5760405162461bcd60e51b815260040161073a90613e13565b600061106d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506131f5565b60008282018381101561106d5760405162461bcd60e51b815260040161073a90613d83565b600061106d83836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f770081525061322c565b600081836132165760405162461bcd60e51b815260040161073a9190613d42565b50600083858161322257fe5b0495945050505050565b600081848411156132505760405162461bcd60e51b815260040161073a9190613d42565b505050900390565b8035611d5881613faa565b8035611d5881613fbe565b8051611d5881613fbe565b8035611d5881613fc7565b60006020828403121561329657600080fd5b60006107d88484613258565b600080604083850312156132b557600080fd5b60006132c18585613258565b92505060206132d285828601613258565b9150509250929050565b600080604083850312156132ef57600080fd5b60006132fb8585613258565b92505060206132d285828601613279565b60008060006060848603121561332157600080fd5b600061332d8686613258565b935050602061333e86828701613279565b925050604061334f86828701613279565b9150509250925092565b6000806000806080858703121561336f57600080fd5b600061337b8787613258565b945050602061338c87828801613279565b935050604061339d87828801613279565b92505060606133ae87828801613279565b91505092959194509250565b600080600080600080600060e0888a0312156133d557600080fd5b60006133e18a8a613258565b97505060206133f28a828b01613279565b96505060406134038a828b01613279565b95505060606134148a828b01613279565b94505060806134258a828b01613279565b93505060a06134368a828b01613279565b92505060c06134478a828b01613279565b91505092959891949750929550565b60006020828403121561346857600080fd5b60006107d88484613263565b60006020828403121561348657600080fd5b60006107d8848461326e565b6000602082840312156134a457600080fd5b60006107d88484613279565b600080600080600060a086880312156134c857600080fd5b60006134d48888613279565b95505060206134e588828901613279565b94505060406134f688828901613279565b935050606061350788828901613279565b925050608061351888828901613279565b9150509295509295909350565b60006135318383613554565b505060200190565b60006135318383613b3a565b61354e81613f5e565b82525050565b61354e81613f3f565b600061356882613f32565b6135728185613f36565b935061357d83613f2c565b8060005b838110156135ab5781516135958882613525565b97506135a083613f2c565b925050600101613581565b509495945050505050565b60006135c182613f32565b6135cb8185613f36565b93506135d683613f2c565b8060005b838110156135ab5781516135ee8882613539565b97506135f983613f2c565b9250506001016135da565b61354e81613f4a565b61354e81613f65565b600061362182613f32565b61362b8185613f36565b935061363b818560208601613f70565b61364481613fa0565b9093019392505050565b600061365b600f83613f36565b6e24b73b30b634b21030b6b7bab73a1760891b815260200192915050565b6000613686602783613f36565b7f526566657272657220686173206e6f20726566657272616c207175616c69666981526631b0ba34b7b71760c91b602082015260400192915050565b60006136cf602283613f36565b7f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f815261371760f11b602082015260400192915050565b6000613713601b83613f36565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b600061374c601483613f36565b7f466565206d75737420626520706f736974697665000000000000000000000000815260200192915050565b6000613785601e83613f36565b7f64617973312073686f756c642062652067726561746572207468616e20300000815260200192915050565b60006137be601883613f36565b7f54686973206163636f756e7420686164207374616b6564210000000000000000815260200192915050565b60006137f7601583613f36565b7f4e6f20696e74657265737420746f20636c61696d2e0000000000000000000000815260200192915050565b6000613830601e83613f36565b7f7265666572726572416464726573732063616e6e6f74206265203078302e0000815260200192915050565b6000613869601283613f36565b714e6f20696e7665737420616c6c6f7765642160701b815260200192915050565b6000613897601e83613f36565b7f64617973342073686f756c642062652067726561746572207468616e20300000815260200192915050565b60006138d0601e83613f36565b7f64617973332073686f756c642062652067726561746572207468616e20300000815260200192915050565b6000613909602183613f36565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b600061394c601183613f36565b702737903637b1b5b2b21030b6b7bab73a1760791b815260200192915050565b6000613979601d83613f36565b7f696e7669746565416464726573732063616e6e6f74206265203078302e000000815260200192915050565b60006139b2601e83613f36565b7f64617973322073686f756c642062652067726561746572207468616e20300000815260200192915050565b60006139eb601683613f36565b7f5072696365206d75737420626520706f73697469766500000000000000000000815260200192915050565b6000613a24602983613f36565b7f416c6c20696e766573746d656e74732068617665206265656e2066756c6c79208152683bb4ba34323930bbb760b91b602082015260400192915050565b6000613a6f601483613f36565b7f5f757365722063616e6e6f74206265203078302e000000000000000000000000815260200192915050565b6000613aa8601e83613f36565b7f54686973206163636f756e7420686164206265656e20696e7669746564210000815260200192915050565b6000613ae1601183613f36565b704e6f20636c61696d20616c6c6f7765642160781b815260200192915050565b6000613b0e601e83613f36565b7f64617973352073686f756c642062652067726561746572207468616e20300000815260200192915050565b61354e81613f5b565b60208101611d588284613554565b60608101613b5f8286613545565b613b6c6020830185613554565b6107d86040830184613b3a565b60408101613b878285613545565b61106d6020830184613b3a565b60608101613ba28286613545565b613b6c6020830185613b3a565b60408101613bbd8285613554565b61106d6020830184613554565b60408101613b878285613554565b60608101613ba28286613554565b60808101613bf48287613554565b613c016020830186613b3a565b613c0e6040830185613b3a565b613c1b6060830184613b3a565b95945050505050565b60e08101613c32828a613554565b613c3f6020830189613b3a565b613c4c6040830188613b3a565b613c596060830187613b3a565b613c666080830186613b3a565b613c7360a0830185613b3a565b613c8060c0830184613b3a565b98975050505050505050565b6020808252810161106d818461355d565b60e08082528101613cae818a6135b6565b90508181036020830152613cc281896135b6565b90508181036040830152613cd681886135b6565b90508181036060830152613cea81876135b6565b90508181036080830152613cfe81866135b6565b905081810360a0830152613d1281856135b6565b905081810360c0830152612ad481846135b6565b60208101611d588284613604565b60208101611d58828461360d565b6020808252810161106d8184613616565b60208082528101611d588161364e565b60208082528101611d5881613679565b60208082528101611d58816136c2565b60208082528101611d5881613706565b60208082528101611d588161373f565b60208082528101611d5881613778565b60208082528101611d58816137b1565b60208082528101611d58816137ea565b60208082528101611d5881613823565b60208082528101611d588161385c565b60208082528101611d588161388a565b60208082528101611d58816138c3565b60208082528101611d58816138fc565b60208082528101611d588161393f565b60208082528101611d588161396c565b60208082528101611d58816139a5565b60208082528101611d58816139de565b60208082528101611d5881613a17565b60208082528101611d5881613a62565b60208082528101611d5881613a9b565b60208082528101611d5881613ad4565b60208082528101611d5881613b01565b60208101611d588284613b3a565b60608101613ba28286613b3a565b60c08101613edd8289613b3a565b613eea6020830188613b3a565b613ef76040830187613b3a565b613f046060830186613b3a565b613f116080830185613b3a565b612cdf60a0830184613b3a565b60e08101613c32828a613b3a565b60200190565b5190565b90815260200190565b6000611d5882613f4f565b151590565b6001600160a01b031690565b90565b6000611d58825b6000611d5882613f3f565b60005b83811015613f8b578181015183820152602001613f73565b83811115613f9a576000848401525b50505050565b601f01601f191690565b613fb381613f3f565b811461310f57600080fd5b613fb381613f4a565b613fb381613f5b56fea365627a7a72315820b5b158fa03229187075a00c4ffd04e63eb82315738e511b5d4be38470dafce616c6578706572696d656e74616cf564736f6c6343000510004000000000000000000000000020cd2e7ec8f5d8b337fe46a4f565ccef1561b9a9000000000000000000000000aac08d7cf5e7d9b0418e841d1e68cb5a2904a08c
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061036d5760003560e01c80637c42d2b5116101d3578063b553207e11610104578063d88e71e0116100a2578063de560cca1161007c578063de560cca146106d1578063e085c952146106d9578063e9920181146106e1578063f2fde38b146106f45761036d565b8063d88e71e0146106ae578063ddca3f43146106b6578063dde070e8146106be5761036d565b8063c84ba291116100de578063c84ba29114610681578063cac0652214610689578063d5ef14231461069e578063d660e6ab146106a65761036d565b8063b553207e14610653578063b6812eaf1461065b578063b6d4efd01461066e5761036d565b806396b9886211610171578063a035b1fe1161014b578063a035b1fe1461060a578063a0cbadb314610612578063ad82c2541461061a578063b425f8021461062d5761036d565b806396b98862146105c25780639cbdc6c1146105e45780639fd1b2fc146105f75761036d565b80638da5cb5b116101ad5780638da5cb5b146105815780638fc1ea1e1461058957806391b7f5ed1461059c57806392929a09146105af5761036d565b80637c42d2b5146105535780637cb04a211461055b5780638016f8241461056e5761036d565b80635a6da1e9116102ad57806369fe0e2d1161024b57806376ec6e8c1161022557806376ec6e8c14610512578063788af7861461052557806379a53592146105385780637bfc52111461054b5761036d565b806369fe0e2d146104d157806371f4f3fb146104e45780637238ccdb146104ec5761036d565b80635fc43dd0116102875780635fc43dd01461049b57806364e731aa146104ae57806365ab4477146104c1578063673cd98e146104c95761036d565b80635a6da1e9146104835780635ab09c1e1461048b5780635ebd5872146104935761036d565b8063384c9aef1161031a5780634a9fefc7116102f45780634a9fefc7146104405780634e71d92d146104605780634fa77a4814610468578063513eb0221461047b5761036d565b8063384c9aef146103fe57806340912990146104135780634a3b68cc1461041b5761036d565b80632e5e83341161034b5780632e5e8334146103b6578063357b97dd146103cb57806336d8a893146103de5761036d565b806323361b79146103725780632866ed211461039b5780632afcf480146103a3575b600080fd5b610385610380366004613359565b610707565b6040516103929190613d26565b60405180910390f35b6103856107e0565b6103856103b1366004613492565b6107ee565b6103be610f90565b6040516103929190613eb3565b6103856103d936600461330c565b610f96565b6103f16103ec366004613284565b611074565b6040516103929190613c8c565b61041161040c366004613492565b611115565b005b6103be61114a565b61042e610429366004613284565b611150565b60405161039296959493929190613ecf565b61045361044e366004613284565b61118c565b6040516103929190613b43565b6103856111d3565b610385610476366004613284565b61192d565b6103be611b07565b6103be611b0d565b6103be611b13565b6103be611b19565b6103856104a93660046132a2565b611b1f565b6103856104bc3660046132dc565b611d5e565b6103be612491565b6103be612497565b6104116104df366004613492565b61249d565b6103856124f2565b6104ff6104fa366004613284565b6124fb565b6040516103929796959493929190613c9d565b610411610520366004613492565b61279c565b6104116105333660046134b0565b6127d1565b610411610546366004613492565b6128b8565b6103be6128ed565b6103be6128f3565b610411610569366004613492565b6128f9565b6103be61057c366004613284565b61292e565b610453612ae1565b610411610597366004613456565b612af6565b6104116105aa366004613492565b612b39565b6104116105bd366004613456565b612b8e565b6105d56105d0366004613284565b612bd8565b60405161039293929190613ec1565b6103856105f23660046133ba565b612bf8565b610411610605366004613492565b612cea565b6103be612d1f565b6103be612d25565b610411610628366004613492565b612d2b565b61064061063b3660046132dc565b612d60565b6040516103929796959493929190613f1e565b6103be612db7565b610411610669366004613492565b612dbd565b61041161067c366004613492565b612df2565b6103be612e27565b610691612e2d565b6040516103929190613d34565b6103be612e3c565b6103be612e42565b6103be612e48565b6103be612e4e565b6103be6106cc366004613284565b612e54565b6103be613079565b6103be61307f565b6104536106ef366004613284565b613085565b610411610702366004613284565b6130a0565b601a546000906201000090046001600160a01b031633146107435760405162461bcd60e51b815260040161073a90613d73565b60405180910390fd5b6001600160a01b0385166107695760405162461bcd60e51b815260040161073a90613e73565b6001600160a01b0385166000908152600260208190526040918290208681556001810186905590810184905590517f54840d35ba54ac621adbc02d6b559075470a1a77f6f5b5394f7a2e994dd8230b906107ca908890889088908890613be6565b60405180910390a160019150505b949350505050565b601a54610100900460ff1681565b601a5460009060ff1615156001146108185760405162461bcd60e51b815260040161073a90613de3565b600082116108385760405162461bcd60e51b815260040161073a90613d53565b6000546040516323b872dd60e01b81526001600160a01b03909116906323b872dd9061086c90339030908790600401613b51565b602060405180830381600087803b15801561088657600080fd5b505af115801561089a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506108be9190810190613474565b5033600090815260016020526040902080544291901561094057336000908152600260205260408120805460125491929161092491906109189060649061090c90849063ffffffff61311216565b9063ffffffff61314c16565b9063ffffffff61318e16565b60018301549091508082141561093c57600283018590555b5050505b601954600090819061095990879063ffffffff61311216565b90506b019d971e4fe8401e74000000811015610979576007549150610a34565b6b019d971e4fe8401e7400000081101580156109a057506b06765c793fa10079d000000081105b156109af576008549150610a34565b6b06765c793fa10079d000000081101580156109d657506b1027e72f1f1281308800000081105b156109e5576009549150610a34565b6b1027e72f1f128130880000008110158015610a0c57506b204fce5e3e2502611000000081105b15610a1b57600a549150610a34565b6b204fce5e3e250261100000008110610a3457600b5491505b60016000336001600160a01b03166001600160a01b031681526020019081526020016000206040518060e00160405280888152602001601954815260200183815260200186815260200184620151800287018152602001848152602001610aba6201518061090c8761090c88610918606461090c6012548d61311290919063ffffffff16565b90528154600181810184556000938452602080852084516007909402019283558084015191830191909155604080840151600280850191909155606085015160038501556080850151600485015560a0850151600585015560c0909401516006909301929092553384529190915290208054610b415760028101859055600e805460010190555b805482018155600d805483019055600f805488019055336000908152600360205260409020805415610c1a578154601254610b8f91906109189060649061090c90849063ffffffff61311216565b6002820155601554600182015410610c1a576004810154600090610c18574260048301556017546015546001840154610bd3929161090c919063ffffffff6131b316565b9050610bf16201518061090c8360185461311290919063ffffffff16565b6005830155601654610c0c906201518063ffffffff61314c16565b60058301805490910190555b505b33600090815260046020526040902080546001600160a01b031615610f425780546001600160a01b03166000908152600360205260408120600101805486019055601354610c769060649061090c90889063ffffffff61311216565b82546001600160a01b03166000908152600360208181526040808420600190925290922060028301549183015493945091921015610d5b578160020154838360030154011015610d1357600682018054840190819055600283015411610d0e5760005b8154811015610d0c576000828281548110610cf057fe5b6000918252602082206006600790920201015550600101610cd9565b505b610d5b565b6003820154600283015403600683015560005b8154811015610d59576000828281548110610d3d57fe5b6000918252602082206006600790920201015550600101610d26565b505b601554826001015410610f3e576004820154600090610de3574260048401556017546015546001850154610d9a929161090c919063ffffffff6131b316565b9050610db86201518061090c8360185461311290919063ffffffff16565b6005840155601654610dd3906201518063ffffffff61314c16565b6005840180549091019055610f3c565b6000610e108460050154610e048660040154426131b390919063ffffffff16565b9063ffffffff61311216565b9050836002015484600301541015610f3a578360020154818560030154011015610e8757600684018054820190819055600285015411610e825760005b8354811015610e80576000848281548110610e6457fe5b6000918252602082206006600790920201015550600101610e4d565b505b610ecf565b6003840154600285015403600685015560005b8354811015610ecd576000848281548110610eb157fe5b6000918252602082206006600790920201015550600101610e9a565b505b4260048501556017546015546001860154610ef5929161090c919063ffffffff6131b316565b9150610f136201518061090c8460185461311290919063ffffffff16565b6005850155601654610f2e906201518063ffffffff61314c16565b60058501805490910190555b505b505b5050505b7f3eb0f553d9ec38e0ff3a72db450f9d6f5e372e70e824a3195a09ead1c01fb876338a601954604051610f7793929190613b94565b60405180910390a160019750505050505050505b919050565b60085481565b601a546000906201000090046001600160a01b03163314610fc95760405162461bcd60e51b815260040161073a90613d73565b6001600160a01b038416610fef5760405162461bcd60e51b815260040161073a90613e73565b6001600160a01b038416600090815260016020526040812080548490811061101357fe5b906000526020600020906007020190508381600601819055507f47f6b9e3974adf5c2be82125be9f7a02fb53010c65a3bfd9f4751cdf547538cf85858560405161105f93929190613bd8565b60405180910390a160019150505b9392505050565b60606001600160a01b03821661109c5760405162461bcd60e51b815260040161073a90613dd3565b6001600160a01b038216600090815260036020908152604091829020805483518184028101840190945280845290929183919083018282801561110857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116110ea575b5050505050915050919050565b601a546201000090046001600160a01b031633146111455760405162461bcd60e51b815260040161073a90613d73565b601255565b600e5481565b60036020528060005260406000206000915090508060010154908060020154908060030154908060040154908060050154908060060154905086565b60006001600160a01b0382166111b45760405162461bcd60e51b815260040161073a90613e33565b506001600160a01b039081166000908152600460205260409020541690565b601a5460009060ff6101009091041615156001146112035760405162461bcd60e51b815260040161073a90613e93565b33600090815260016020526040902080546112305760405162461bcd60e51b815260040161073a90613e23565b33600090815260026020526040812080546012548391611262916109189060649061090c90849063ffffffff61311216565b60018301549091508082116112895760405162461bcd60e51b815260040161073a90613e63565b60005b85548110156112eb5760008682815481106112a357fe5b9060005260206000209060070201905060006112d48260060154610e048860020154426131b390919063ffffffff16565b905080156112e157958601955b505060010161128c565b50336000908152600360205260409020600c54828403106114445760018101541561144457806002015481600601548260030154011161135d57600681015460038201805482019081905560028301549690910195101561135157600281015460038201555b6000600682015561138f565b80600301548160020154111561137d578060030154816002015403850194505b60028101546003820155600060068201555b60006113b08260050154610e048460040154426131b390919063ffffffff16565b9050600082600401541180156113ca575060008260050154115b15611442578160020154818360030154011161141157600382018054820190819055600283015496820196101561140657600282015460038301555b426004830155611442565b816003015482600201541115611431578160030154826002015403860195505b600282015460038301554260048301555b505b600085116114645760405162461bcd60e51b815260040161073a90613dc3565b42600285015560018401546000908190870185811061162b576019546114949061090c888863ffffffff6131b316565b92508587600101819055506114b9606461090c6006548661311290919063ffffffff16565b60005460055460405163a9059cbb60e01b81529294506001600160a01b039182169263a9059cbb926114f19216908690600401613bca565b602060405180830381600087803b15801561150b57600080fd5b505af115801561151f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115439190810190613474565b506000546001600160a01b031663a9059cbb33611566868663ffffffff6131b316565b6040518363ffffffff1660e01b8152600401611583929190613b79565b602060405180830381600087803b15801561159d57600080fd5b505af11580156115b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115d59190810190613474565b5060005b895481101561160c5760008a82815481106115f057fe5b60009182526020822060066007909202010155506001016115d9565b506001840154156116265760006004850181905560058501555b611785565b60195461163f90899063ffffffff61314c16565b6001880180548a0190556006549093506116679060649061090c90869063ffffffff61311216565b60005460055460405163a9059cbb60e01b81529294506001600160a01b039182169263a9059cbb9261169f9216908690600401613bca565b602060405180830381600087803b1580156116b957600080fd5b505af11580156116cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116f19190810190613474565b506000546001600160a01b031663a9059cbb33611714868663ffffffff6131b316565b6040518363ffffffff1660e01b8152600401611731929190613b79565b602060405180830381600087803b15801561174b57600080fd5b505af115801561175f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117839190810190613474565b505b60118054840190556019546117a190849063ffffffff61311216565b60108054909101905533600090815260046020526040902080546001600160a01b0316156118df5780546001600160a01b031660009081526003602052604081206014549091906118009060649061090c908e9063ffffffff61311216565b83546001600160a01b0316600090815260016020526040902060028401546003850154929350909110156118db5782600201548284600301540110156118935760068301805483019081905560028401541161188e5760005b8d5481101561188c5760008e828154811061187057fe5b6000918252602082206006600790920201015550600101611859565b505b6118db565b6003830154600284015403600684015560005b81548110156118d95760008282815481106118bd57fe5b60009182526020822060066007909202010155506001016118a6565b505b5050505b7f4343fc0436cb075772fdb7e28d5380cc610e5334add5537e2d2b2946b8e2836f338560195460405161191493929190613b94565b60405180910390a160019a505050505050505050505090565b60006001600160a01b0382166119555760405162461bcd60e51b815260040161073a90613e33565b6001600160a01b0380831660009081526004602052604090208054909116156119905760405162461bcd60e51b815260040161073a90613e83565b336000908152600260205260409020600c54600182015482546012546119d992916119cd916109189060649061090c90849063ffffffff61311216565b9063ffffffff6131b316565b10156119f75760405162461bcd60e51b815260040161073a90613d63565b6001600160a01b0384166000908152600160205260409020805415611a2e5760405162461bcd60e51b815260040161073a90613db3565b33600090815260036020908152604082208054600181018255818452919092200180546001600160a01b0319166001600160a01b0388161790556002810154611a99578254601254611a9391906109189060649061090c90849063ffffffff61311216565b60028201555b6001600160a01b0386166000908152600460205260409081902080546001600160a01b0319163317815590517f5460efa9aaef49adcbdec085b22993bea41d8d5abd3124de8faeea893ce9593a90611af2908990613b43565b60405180910390a15060019695505050505050565b60165481565b60125481565b60095481565b600b5481565b601a546000906201000090046001600160a01b03163314611b525760405162461bcd60e51b815260040161073a90613d73565b6001600160a01b038316611b785760405162461bcd60e51b815260040161073a90613dd3565b6001600160a01b038216611b9e5760405162461bcd60e51b815260040161073a90613e33565b6001600160a01b038083166000908152600460205260409020805490911615611bd95760405162461bcd60e51b815260040161073a90613e83565b6001600160a01b0384166000908152600260205260409020600c5460018201548254601254611c1f92916119cd916109189060649061090c90849063ffffffff61311216565b1015611c3d5760405162461bcd60e51b815260040161073a90613d63565b6001600160a01b0384166000908152600160205260409020805415611c745760405162461bcd60e51b815260040161073a90613db3565b6001600160a01b03868116600090815260036020908152604082208054600181018255818452919092200180546001600160a01b031916928816929092179091556002810154611ce6578254601254611ce091906109189060649061090c90849063ffffffff61311216565b60028201555b6001600160a01b038681166000908152600460205260409081902080546001600160a01b031916928a16929092178255517f0d984a86460fe7e0cd7646fc932b7cb5185793e3053c6d6eb5f73fb94b9a969490611d46908a908a90613baf565b60405180910390a16001955050505050505b92915050565b601a546000906201000090046001600160a01b03163314611d915760405162461bcd60e51b815260040161073a90613d73565b601a5460ff161515600114611db85760405162461bcd60e51b815260040161073a90613de3565b60008211611dd85760405162461bcd60e51b815260040161073a90613d53565b6019546000908190611df190859063ffffffff61311216565b90506b019d971e4fe8401e74000000811015611e11576007549150611ecc565b6b019d971e4fe8401e740000008110158015611e3857506b06765c793fa10079d000000081105b15611e47576008549150611ecc565b6b06765c793fa10079d00000008110158015611e6e57506b1027e72f1f1281308800000081105b15611e7d576009549150611ecc565b6b1027e72f1f128130880000008110158015611ea457506b204fce5e3e2502611000000081105b15611eb357600a549150611ecc565b6b204fce5e3e250261100000008110611ecc57600b5491505b336000908152600160205260409020805442919015611f35573360009081526002602052604081208054601254919291611f1991906109189060649061090c90849063ffffffff61311216565b600183015490915080821415611f3157600283018590555b5050505b60016000886001600160a01b03166001600160a01b031681526020019081526020016000206040518060e00160405280888152602001601954815260200185815260200184815260200186620151800285018152602001868152602001611fbb6201518061090c8961090c8a610918606461090c6012548f61311290919063ffffffff16565b90528154600181810184556000938452602080852084516007909402019283558084015191830191909155604080840151600280850191909155606085015160038501556080850151600485015560a0850151600585015560c0909401516006909301929092556001600160a01b038b168452919091529020805461204b5760028101839055600e805460010190555b805484018155600d805485019055600f80548801905533600090815260036020526040902080541561212457815460125461209991906109189060649061090c90849063ffffffff61311216565b60028201556015546001820154106121245760048101546000906121225742600483015560175460155460018401546120dd929161090c919063ffffffff6131b316565b90506120fb6201518061090c8360185461311290919063ffffffff16565b6005830155601654612116906201518063ffffffff61314c16565b60058301805490910190555b505b6001600160a01b03808a1660009081526004602052604090208054909116156124445780546001600160a01b031660009081526003602052604081206001018054880190556013546121849060649061090c908a9063ffffffff61311216565b82546001600160a01b031660009081526003602081815260408084206001909252909220600283015491830154939450919210156122695781600201548383600301540110156122215760068201805484019081905560028301541161221c5760005b815481101561221a5760008282815481106121fe57fe5b60009182526020822060066007909202010155506001016121e7565b505b612269565b6003820154600283015403600683015560005b815481101561226757600082828154811061224b57fe5b6000918252602082206006600790920201015550600101612234565b505b6015548260010154106124405760048201546000906122f15742600484015560175460155460018501546122a8929161090c919063ffffffff6131b316565b90506122c66201518061090c8360185461311290919063ffffffff16565b60058401556016546122e1906201518063ffffffff61314c16565b600584018054909101905561243e565b60006123128460050154610e048660040154426131b390919063ffffffff16565b905083600201548460030154101561243c578360020154818560030154011015612389576006840180548201908190556002850154116123845760005b835481101561238257600084828154811061236657fe5b600091825260208220600660079092020101555060010161234f565b505b6123d1565b6003840154600285015403600685015560005b83548110156123cf5760008482815481106123b357fe5b600091825260208220600660079092020101555060010161239c565b505b42600485015560175460155460018601546123f7929161090c919063ffffffff6131b316565b91506124156201518061090c8460185461311290919063ffffffff16565b6005850155601654612430906201518063ffffffff61314c16565b60058501805490910190555b505b505b5050505b7f9a9654e283717250eb1f515593102e2024a5f6b264ed5659bdc199ae3cf9e3158a8a60195460405161247993929190613bd8565b60405180910390a15060019998505050505050505050565b600c5481565b600f5481565b601a546201000090046001600160a01b031633146124cd5760405162461bcd60e51b815260040161073a90613d73565b600081116124ed5760405162461bcd60e51b815260040161073a90613d93565b600655565b601a5460ff1681565b60608060608060608060606000600160008a6001600160a01b03166001600160a01b031681526020019081526020016000209050600081805490509050606081604051908082528060200260200182016040528015612564578160200160208202803883390190505b509050606082604051908082528060200260200182016040528015612593578160200160208202803883390190505b5090506060836040519080825280602002602001820160405280156125c2578160200160208202803883390190505b5090506060846040519080825280602002602001820160405280156125f1578160200160208202803883390190505b509050606085604051908082528060200260200182016040528015612620578160200160208202803883390190505b50905060608660405190808252806020026020018201604052801561264f578160200160208202803883390190505b50905060608760405190808252806020026020018201604052801561267e578160200160208202803883390190505b50905060005b8881101561277d5760008a828154811061269a57fe5b9060005260206000209060070201905080600001548983815181106126bb57fe5b60200260200101818152505080600101548883815181106126d857fe5b60200260200101818152505080600201548783815181106126f557fe5b602002602001018181525050806003015486838151811061271257fe5b602002602001018181525050806004015485838151811061272f57fe5b602002602001018181525050806005015484838151811061274c57fe5b602002602001018181525050806006015483838151811061276957fe5b602090810291909101015250600101612684565b50959e50939c50919a5098509650945092505050919395979092949650565b601a546201000090046001600160a01b031633146127cc5760405162461bcd60e51b815260040161073a90613d73565b601755565b601a546201000090046001600160a01b031633146128015760405162461bcd60e51b815260040161073a90613d73565b600085116128215760405162461bcd60e51b815260040161073a90613da3565b600084116128415760405162461bcd60e51b815260040161073a90613e43565b600083116128615760405162461bcd60e51b815260040161073a90613e03565b600082116128815760405162461bcd60e51b815260040161073a90613df3565b600081116128a15760405162461bcd60e51b815260040161073a90613ea3565b600794909455600892909255600955600a55600b55565b601a546201000090046001600160a01b031633146128e85760405162461bcd60e51b815260040161073a90613d73565b601655565b60145481565b60155481565b601a546201000090046001600160a01b031633146129295760405162461bcd60e51b815260040161073a90613d73565b601355565b60006001600160a01b0382166129565760405162461bcd60e51b815260040161073a90613e73565b6001600160a01b038216600090815260026020526040812080546012548391612991916109189060649061090c90849063ffffffff61311216565b60018301549091508181106129ad576000945050505050610f8b565b6001600160a01b038616600090815260036020819052604090912090810154600c546129df858563ffffffff6131b316565b10612aaa57600182015415612aaa5781600201548260060154820111612a0e5760068201549586019501612a32565b816003015482600201541115612a3257506003810154600282015490810395909501945b6000612a538360050154610e048560040154426131b390919063ffffffff16565b905060008360040154118015612a6d575060008360050154115b15612aa857826002015481830111612a885795860195612aa8565b826003015483600201541115612aa8578260030154836002015403870196505b505b600185015486016000858210612ad157612aca868663ffffffff6131b316565b9050612ad4565b50865b9998505050505050505050565b601a546201000090046001600160a01b031681565b601a546201000090046001600160a01b03163314612b265760405162461bcd60e51b815260040161073a90613d73565b601a805460ff1916911515919091179055565b601a546201000090046001600160a01b03163314612b695760405162461bcd60e51b815260040161073a90613d73565b60008111612b895760405162461bcd60e51b815260040161073a90613e53565b601955565b601a546201000090046001600160a01b03163314612bbe5760405162461bcd60e51b815260040161073a90613d73565b601a80549115156101000261ff0019909216919091179055565b600260208190526000918252604090912080546001820154919092015483565b601a546000906201000090046001600160a01b03163314612c2b5760405162461bcd60e51b815260040161073a90613d73565b6001600160a01b038816612c515760405162461bcd60e51b815260040161073a90613e73565b6001600160a01b038816600090815260036020819052604091829020600181018a90556002810189905590810187905560048101869055600581018590556006810184905590517f0ebff4f4881dd1e533b0ea6168da45b5c184454dac4f1da5b56766c2c7ea738890612cd1908b908b908b908b908b908b908b90613c24565b60405180910390a160019150505b979650505050505050565b601a546201000090046001600160a01b03163314612d1a5760405162461bcd60e51b815260040161073a90613d73565b601855565b60195481565b60105481565b601a546201000090046001600160a01b03163314612d5b5760405162461bcd60e51b815260040161073a90613d73565b600c55565b60016020528160005260406000208181548110612d7957fe5b600091825260209091206007909102018054600182015460028301546003840154600485015460058601546006909601549497509295509093909287565b60075481565b601a546201000090046001600160a01b03163314612ded5760405162461bcd60e51b815260040161073a90613d73565b601555565b601a546201000090046001600160a01b03163314612e225760405162461bcd60e51b815260040161073a90613d73565b601455565b60175481565b6000546001600160a01b031681565b60185481565b600a5481565b60135481565b60065481565b60006001600160a01b038216612e7c5760405162461bcd60e51b815260040161073a90613e73565b6001600160a01b03821660009081526001602090815260408083206002909252822080546012549293928391612ec4916109189060649061090c90849063ffffffff61311216565b6001830154909150818110612ee157600095505050505050610f8b565b60005b8554811015612f43576000868281548110612efb57fe5b906000526020600020906007020190506000612f2c8260060154610e048860020154426131b390919063ffffffff16565b90508015612f3957958601955b5050600101612ee4565b506001600160a01b038716600090815260036020819052604090912090810154600c54612f76858563ffffffff6131b316565b10613041576001820154156130415781600201548260060154820111612fa55760068201549586019501612fc9565b816003015482600201541115612fc957506003810154600282015490810395909501945b6000612fea8360050154610e048560040154426131b390919063ffffffff16565b905060008360040154118015613004575060008360050154115b1561303f5782600201548183011161301f579586019561303f565b82600301548360020154111561303f578260030154836002015403870196505b505b60018501548601600085821061306857613061868663ffffffff6131b316565b905061306b565b50865b9a9950505050505050505050565b600d5481565b60115481565b6004602052600090815260409020546001600160a01b031681565b601a546201000090046001600160a01b031633146130d05760405162461bcd60e51b815260040161073a90613d73565b6001600160a01b0381161561310f57601a805475ffffffffffffffffffffffffffffffffffffffff00001916620100006001600160a01b038416021790555b50565b60008261312157506000611d58565b8282028284828161312e57fe5b041461106d5760405162461bcd60e51b815260040161073a90613e13565b600061106d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506131f5565b60008282018381101561106d5760405162461bcd60e51b815260040161073a90613d83565b600061106d83836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f770081525061322c565b600081836132165760405162461bcd60e51b815260040161073a9190613d42565b50600083858161322257fe5b0495945050505050565b600081848411156132505760405162461bcd60e51b815260040161073a9190613d42565b505050900390565b8035611d5881613faa565b8035611d5881613fbe565b8051611d5881613fbe565b8035611d5881613fc7565b60006020828403121561329657600080fd5b60006107d88484613258565b600080604083850312156132b557600080fd5b60006132c18585613258565b92505060206132d285828601613258565b9150509250929050565b600080604083850312156132ef57600080fd5b60006132fb8585613258565b92505060206132d285828601613279565b60008060006060848603121561332157600080fd5b600061332d8686613258565b935050602061333e86828701613279565b925050604061334f86828701613279565b9150509250925092565b6000806000806080858703121561336f57600080fd5b600061337b8787613258565b945050602061338c87828801613279565b935050604061339d87828801613279565b92505060606133ae87828801613279565b91505092959194509250565b600080600080600080600060e0888a0312156133d557600080fd5b60006133e18a8a613258565b97505060206133f28a828b01613279565b96505060406134038a828b01613279565b95505060606134148a828b01613279565b94505060806134258a828b01613279565b93505060a06134368a828b01613279565b92505060c06134478a828b01613279565b91505092959891949750929550565b60006020828403121561346857600080fd5b60006107d88484613263565b60006020828403121561348657600080fd5b60006107d8848461326e565b6000602082840312156134a457600080fd5b60006107d88484613279565b600080600080600060a086880312156134c857600080fd5b60006134d48888613279565b95505060206134e588828901613279565b94505060406134f688828901613279565b935050606061350788828901613279565b925050608061351888828901613279565b9150509295509295909350565b60006135318383613554565b505060200190565b60006135318383613b3a565b61354e81613f5e565b82525050565b61354e81613f3f565b600061356882613f32565b6135728185613f36565b935061357d83613f2c565b8060005b838110156135ab5781516135958882613525565b97506135a083613f2c565b925050600101613581565b509495945050505050565b60006135c182613f32565b6135cb8185613f36565b93506135d683613f2c565b8060005b838110156135ab5781516135ee8882613539565b97506135f983613f2c565b9250506001016135da565b61354e81613f4a565b61354e81613f65565b600061362182613f32565b61362b8185613f36565b935061363b818560208601613f70565b61364481613fa0565b9093019392505050565b600061365b600f83613f36565b6e24b73b30b634b21030b6b7bab73a1760891b815260200192915050565b6000613686602783613f36565b7f526566657272657220686173206e6f20726566657272616c207175616c69666981526631b0ba34b7b71760c91b602082015260400192915050565b60006136cf602283613f36565b7f4f6e6c79206f776e65722063616e2063616c6c20746869732066756e6374696f815261371760f11b602082015260400192915050565b6000613713601b83613f36565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b600061374c601483613f36565b7f466565206d75737420626520706f736974697665000000000000000000000000815260200192915050565b6000613785601e83613f36565b7f64617973312073686f756c642062652067726561746572207468616e20300000815260200192915050565b60006137be601883613f36565b7f54686973206163636f756e7420686164207374616b6564210000000000000000815260200192915050565b60006137f7601583613f36565b7f4e6f20696e74657265737420746f20636c61696d2e0000000000000000000000815260200192915050565b6000613830601e83613f36565b7f7265666572726572416464726573732063616e6e6f74206265203078302e0000815260200192915050565b6000613869601283613f36565b714e6f20696e7665737420616c6c6f7765642160701b815260200192915050565b6000613897601e83613f36565b7f64617973342073686f756c642062652067726561746572207468616e20300000815260200192915050565b60006138d0601e83613f36565b7f64617973332073686f756c642062652067726561746572207468616e20300000815260200192915050565b6000613909602183613f36565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b600061394c601183613f36565b702737903637b1b5b2b21030b6b7bab73a1760791b815260200192915050565b6000613979601d83613f36565b7f696e7669746565416464726573732063616e6e6f74206265203078302e000000815260200192915050565b60006139b2601e83613f36565b7f64617973322073686f756c642062652067726561746572207468616e20300000815260200192915050565b60006139eb601683613f36565b7f5072696365206d75737420626520706f73697469766500000000000000000000815260200192915050565b6000613a24602983613f36565b7f416c6c20696e766573746d656e74732068617665206265656e2066756c6c79208152683bb4ba34323930bbb760b91b602082015260400192915050565b6000613a6f601483613f36565b7f5f757365722063616e6e6f74206265203078302e000000000000000000000000815260200192915050565b6000613aa8601e83613f36565b7f54686973206163636f756e7420686164206265656e20696e7669746564210000815260200192915050565b6000613ae1601183613f36565b704e6f20636c61696d20616c6c6f7765642160781b815260200192915050565b6000613b0e601e83613f36565b7f64617973352073686f756c642062652067726561746572207468616e20300000815260200192915050565b61354e81613f5b565b60208101611d588284613554565b60608101613b5f8286613545565b613b6c6020830185613554565b6107d86040830184613b3a565b60408101613b878285613545565b61106d6020830184613b3a565b60608101613ba28286613545565b613b6c6020830185613b3a565b60408101613bbd8285613554565b61106d6020830184613554565b60408101613b878285613554565b60608101613ba28286613554565b60808101613bf48287613554565b613c016020830186613b3a565b613c0e6040830185613b3a565b613c1b6060830184613b3a565b95945050505050565b60e08101613c32828a613554565b613c3f6020830189613b3a565b613c4c6040830188613b3a565b613c596060830187613b3a565b613c666080830186613b3a565b613c7360a0830185613b3a565b613c8060c0830184613b3a565b98975050505050505050565b6020808252810161106d818461355d565b60e08082528101613cae818a6135b6565b90508181036020830152613cc281896135b6565b90508181036040830152613cd681886135b6565b90508181036060830152613cea81876135b6565b90508181036080830152613cfe81866135b6565b905081810360a0830152613d1281856135b6565b905081810360c0830152612ad481846135b6565b60208101611d588284613604565b60208101611d58828461360d565b6020808252810161106d8184613616565b60208082528101611d588161364e565b60208082528101611d5881613679565b60208082528101611d58816136c2565b60208082528101611d5881613706565b60208082528101611d588161373f565b60208082528101611d5881613778565b60208082528101611d58816137b1565b60208082528101611d58816137ea565b60208082528101611d5881613823565b60208082528101611d588161385c565b60208082528101611d588161388a565b60208082528101611d58816138c3565b60208082528101611d58816138fc565b60208082528101611d588161393f565b60208082528101611d588161396c565b60208082528101611d58816139a5565b60208082528101611d58816139de565b60208082528101611d5881613a17565b60208082528101611d5881613a62565b60208082528101611d5881613a9b565b60208082528101611d5881613ad4565b60208082528101611d5881613b01565b60208101611d588284613b3a565b60608101613ba28286613b3a565b60c08101613edd8289613b3a565b613eea6020830188613b3a565b613ef76040830187613b3a565b613f046060830186613b3a565b613f116080830185613b3a565b612cdf60a0830184613b3a565b60e08101613c32828a613b3a565b60200190565b5190565b90815260200190565b6000611d5882613f4f565b151590565b6001600160a01b031690565b90565b6000611d58825b6000611d5882613f3f565b60005b83811015613f8b578181015183820152602001613f73565b83811115613f9a576000848401525b50505050565b601f01601f191690565b613fb381613f3f565b811461310f57600080fd5b613fb381613f4a565b613fb381613f5b56fea365627a7a72315820b5b158fa03229187075a00c4ffd04e63eb82315738e511b5d4be38470dafce616c6578706572696d656e74616cf564736f6c63430005100040
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000020cd2e7ec8f5d8b337fe46a4f565ccef1561b9a9000000000000000000000000aac08d7cf5e7d9b0418e841d1e68cb5a2904a08c
-----Decoded View---------------
Arg [0] : esgAddress (address): 0x20cD2E7Ec8F5d8b337fe46a4F565Ccef1561b9a9
Arg [1] : feeWalletAddress (address): 0xaAc08D7CF5e7D9b0418e841d1E68cb5a2904A08C
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000020cd2e7ec8f5d8b337fe46a4f565ccef1561b9a9
Arg [1] : 000000000000000000000000aac08d7cf5e7d9b0418e841d1e68cb5a2904a08c
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Loading...
Loading
[ 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.