Реклама вашего контракта Кабинет инвестора
Меню
Появились вопросы или есть предложения?
Напишите нам в Telegram t.me/smartradar
Smartbet.me

Smartbet.me

Etherscan
0x1786672E19168f99A0c78E9704E416589E3197d4
Следить за контрактом

Баланс

0.0624 ETH.

Динамика пополнений
от общего пополнения за день

0%

Ввод

За последний час
0 ETH.
Всего
1.09 ETH.

Выводы

За последний час
0 ETH.
Всего
1.0276 ETH.

Условия

В день
-
В час
-

Инвесторов

2

Повторные пополнения

За последний час
0 ETH.
Всего
1.03 ETH.

Средняя оценка аудиторов

-

Контакты

  • Таймлайн:
  • час
  • день
  • неделя
  • месяц
Пополнения (15)
Выводы (31)
Аудит
Код
API
Комменторы
Дата Блок TxHash От кого Кому Сумма
28 дек. 2018 г. 10:40 6966786 0xa5a7549ea7378f38fd2109aaf0f993a99136ed3b9b0755ccd13cc6cec838025a 0x799358af628240603a1ce05b7d9ea211b9d64304 0x1786672e19168f99a0c78e9704e416589e3197d4 0.07 Ether
27 дек. 2018 г. 11:47 6961145 0x9be3cdd32b8b645614c77c89de46d3184f94fadc0bb362669e841cbf7a6cf80d 0x67a69a6d8e6ef6a8360b8bd35219eb0cab488ea4 0x1786672e19168f99a0c78e9704e416589e3197d4 0.06 Ether
23 дек. 2018 г. 18:16 6939037 0xd0c9326cac7707c294c7b56700428c7a459e12515785440e98045b682a0202dd 0x67a69a6d8e6ef6a8360b8bd35219eb0cab488ea4 0x1786672e19168f99a0c78e9704e416589e3197d4 0.05 Ether
21 дек. 2018 г. 10:48 6925467 0xb0543158ccf89500b6bc7681bf9afa21855b69fe3946bad3473e5312ee10bd7c 0x67a69a6d8e6ef6a8360b8bd35219eb0cab488ea4 0x1786672e19168f99a0c78e9704e416589e3197d4 0.3 Ether
21 дек. 2018 г. 10:43 6925448 0x7300d639f636253d8f8b12f28387e53df27190ba24f9f42094c60494d50d6ce8 0x799358af628240603a1ce05b7d9ea211b9d64304 0x1786672e19168f99a0c78e9704e416589e3197d4 0.05 Ether
21 дек. 2018 г. 09:15 6925070 0x8997f971e765d4c28de4e70eb654f9714cf6f928b8384b3a447d84ca7da72ab9
Транзакция с ошибкой
0x799358af628240603a1ce05b7d9ea211b9d64304 0x1786672e19168f99a0c78e9704e416589e3197d4 0.04 Ether
20 дек. 2018 г. 09:25 6919282 0xe919ade4183962d8b2a528a4f93f62ca012b6cfe255532ba8f7a852e119089e9 0x799358af628240603a1ce05b7d9ea211b9d64304 0x1786672e19168f99a0c78e9704e416589e3197d4 0.05 Ether
19 дек. 2018 г. 20:31 6916104 0x949eef28e8ffb392647ce95f8c7ddc6c630c271cef994795c75adbc51d902a00 0x67a69a6d8e6ef6a8360b8bd35219eb0cab488ea4 0x1786672e19168f99a0c78e9704e416589e3197d4 0.5 Ether
19 дек. 2018 г. 17:27 6915367 0xbb8e4c8687ca5f259e622f1ec8db7d73ec4aa68dcbd86604417c8c3dada1001d 0x67a69a6d8e6ef6a8360b8bd35219eb0cab488ea4 0x1786672e19168f99a0c78e9704e416589e3197d4 0.01 Ether
19 дек. 2018 г. 17:17 6915320 0xd8472a047d8240e84aa5ceb0fad54512e96fcb9b88dee5ad6fd44a186834996c
Транзакция с ошибкой
0x8fa6e56c844be9b96c30b72cc2a8ccf6465a99f9 0x1786672e19168f99a0c78e9704e416589e3197d4 0.01 Ether
19 дек. 2018 г. 17:16 6915316 0x43c5d1d65cd8df2c1d828593f7ae2eb3842b6894395ae8973ba11ba5002773da 0x8fa6e56c844be9b96c30b72cc2a8ccf6465a99f9 0x1786672e19168f99a0c78e9704e416589e3197d4 0 Ether
19 дек. 2018 г. 17:11 6915290 0xf887973322ed1ca43e6d9770d465af1b9e26768c3bb88d19d796d8ed0a12823e
Транзакция с ошибкой
0x8fa6e56c844be9b96c30b72cc2a8ccf6465a99f9 0x1786672e19168f99a0c78e9704e416589e3197d4 0.01 Ether
19 дек. 2018 г. 17:02 6915241 0x539d89b34e884fbe0b334866d4173d658e08e9828683015139d4ef560d1d6551
Транзакция с ошибкой
0x8fa6e56c844be9b96c30b72cc2a8ccf6465a99f9 0x1786672e19168f99a0c78e9704e416589e3197d4 0.0133 Ether
19 дек. 2018 г. 17:01 6915238 0x7a5af0f213450540251f752220efe0ff719b1dd1378f61822e5f9f07bb5c7bba
Транзакция с ошибкой
0x8fa6e56c844be9b96c30b72cc2a8ccf6465a99f9 0x1786672e19168f99a0c78e9704e416589e3197d4 0.01 Ether
19 дек. 2018 г. 16:47 6915190 0x264fcd4b1190ac8a4265b80d1097de233e46f054766591ffce480f20e1a1ac3e 0x8fa6e56c844be9b96c30b72cc2a8ccf6465a99f9 0 Ether
Дата Блок parentTxHash От кого Кому Сумма
28 дек. 2018 г. 10:40 6966786 0xa5a7549ea7378f38fd2109aaf0f993a99136ed3b9b0755ccd13cc6cec838025a 0x1786672e19168f99a0c78e9704e416589e3197d4 0x8fa6e56c844be9b96c30b72cc2a8ccf6465a99f9 0.0021 Ether
28 дек. 2018 г. 10:40 6966786 0xa5a7549ea7378f38fd2109aaf0f993a99136ed3b9b0755ccd13cc6cec838025a 0x1786672e19168f99a0c78e9704e416589e3197d4 0x8fa6e56c844be9b96c30b72cc2a8ccf6465a99f9 0.00035 Ether
28 дек. 2018 г. 10:40 6966786 0xa5a7549ea7378f38fd2109aaf0f993a99136ed3b9b0755ccd13cc6cec838025a 0x1786672e19168f99a0c78e9704e416589e3197d4 0x67a69a6d8e6ef6a8360b8bd35219eb0cab488ea4 0.0315 Ether
28 дек. 2018 г. 10:40 6966786 0xa5a7549ea7378f38fd2109aaf0f993a99136ed3b9b0755ccd13cc6cec838025a 0x1786672e19168f99a0c78e9704e416589e3197d4 0x799358af628240603a1ce05b7d9ea211b9d64304 0.00245 Ether
27 дек. 2018 г. 11:47 6961145 0x9be3cdd32b8b645614c77c89de46d3184f94fadc0bb362669e841cbf7a6cf80d 0x1786672e19168f99a0c78e9704e416589e3197d4 0x67a69a6d8e6ef6a8360b8bd35219eb0cab488ea4 0.024 Ether
27 дек. 2018 г. 11:47 6961145 0x9be3cdd32b8b645614c77c89de46d3184f94fadc0bb362669e841cbf7a6cf80d 0x1786672e19168f99a0c78e9704e416589e3197d4 0x8fa6e56c844be9b96c30b72cc2a8ccf6465a99f9 0.0018 Ether
27 дек. 2018 г. 11:47 6961145 0x9be3cdd32b8b645614c77c89de46d3184f94fadc0bb362669e841cbf7a6cf80d 0x1786672e19168f99a0c78e9704e416589e3197d4 0x8fa6e56c844be9b96c30b72cc2a8ccf6465a99f9 0.0003 Ether
27 дек. 2018 г. 11:47 6961145 0x9be3cdd32b8b645614c77c89de46d3184f94fadc0bb362669e841cbf7a6cf80d 0x1786672e19168f99a0c78e9704e416589e3197d4 0x67a69a6d8e6ef6a8360b8bd35219eb0cab488ea4 0.0291 Ether
23 дек. 2018 г. 18:16 6939037 0xd0c9326cac7707c294c7b56700428c7a459e12515785440e98045b682a0202dd 0x1786672e19168f99a0c78e9704e416589e3197d4 0x67a69a6d8e6ef6a8360b8bd35219eb0cab488ea4 0.168 Ether
23 дек. 2018 г. 18:16 6939037 0xd0c9326cac7707c294c7b56700428c7a459e12515785440e98045b682a0202dd 0x1786672e19168f99a0c78e9704e416589e3197d4 0x8fa6e56c844be9b96c30b72cc2a8ccf6465a99f9 0.0015 Ether
23 дек. 2018 г. 18:16 6939037 0xd0c9326cac7707c294c7b56700428c7a459e12515785440e98045b682a0202dd 0x1786672e19168f99a0c78e9704e416589e3197d4 0x8fa6e56c844be9b96c30b72cc2a8ccf6465a99f9 0.00025 Ether
23 дек. 2018 г. 18:16 6939037 0xd0c9326cac7707c294c7b56700428c7a459e12515785440e98045b682a0202dd 0x1786672e19168f99a0c78e9704e416589e3197d4 0x67a69a6d8e6ef6a8360b8bd35219eb0cab488ea4 0.02425 Ether
21 дек. 2018 г. 10:48 6925467 0xb0543158ccf89500b6bc7681bf9afa21855b69fe3946bad3473e5312ee10bd7c 0x1786672e19168f99a0c78e9704e416589e3197d4 0x8fa6e56c844be9b96c30b72cc2a8ccf6465a99f9 0.009 Ether
21 дек. 2018 г. 10:48 6925467 0xb0543158ccf89500b6bc7681bf9afa21855b69fe3946bad3473e5312ee10bd7c 0x1786672e19168f99a0c78e9704e416589e3197d4 0x8fa6e56c844be9b96c30b72cc2a8ccf6465a99f9 0.0015 Ether
21 дек. 2018 г. 10:48 6925467 0xb0543158ccf89500b6bc7681bf9afa21855b69fe3946bad3473e5312ee10bd7c 0x1786672e19168f99a0c78e9704e416589e3197d4 0x799358af628240603a1ce05b7d9ea211b9d64304 0.02625 Ether
21 дек. 2018 г. 10:48 6925467 0xb0543158ccf89500b6bc7681bf9afa21855b69fe3946bad3473e5312ee10bd7c 0x1786672e19168f99a0c78e9704e416589e3197d4 0x67a69a6d8e6ef6a8360b8bd35219eb0cab488ea4 0.11925 Ether
21 дек. 2018 г. 10:43 6925448 0x7300d639f636253d8f8b12f28387e53df27190ba24f9f42094c60494d50d6ce8 0x1786672e19168f99a0c78e9704e416589e3197d4 0x799358af628240603a1ce05b7d9ea211b9d64304 0.024 Ether
21 дек. 2018 г. 10:43 6925448 0x7300d639f636253d8f8b12f28387e53df27190ba24f9f42094c60494d50d6ce8 0x1786672e19168f99a0c78e9704e416589e3197d4 0x8fa6e56c844be9b96c30b72cc2a8ccf6465a99f9 0.0015 Ether
21 дек. 2018 г. 10:43 6925448 0x7300d639f636253d8f8b12f28387e53df27190ba24f9f42094c60494d50d6ce8 0x1786672e19168f99a0c78e9704e416589e3197d4 0x8fa6e56c844be9b96c30b72cc2a8ccf6465a99f9 0.00025 Ether
21 дек. 2018 г. 10:43 6925448 0x7300d639f636253d8f8b12f28387e53df27190ba24f9f42094c60494d50d6ce8 0x1786672e19168f99a0c78e9704e416589e3197d4 0x799358af628240603a1ce05b7d9ea211b9d64304 0.02425 Ether
20 дек. 2018 г. 09:25 6919282 0xe919ade4183962d8b2a528a4f93f62ca012b6cfe255532ba8f7a852e119089e9 0x1786672e19168f99a0c78e9704e416589e3197d4 0x67a69a6d8e6ef6a8360b8bd35219eb0cab488ea4 0.2448 Ether
20 дек. 2018 г. 09:25 6919282 0xe919ade4183962d8b2a528a4f93f62ca012b6cfe255532ba8f7a852e119089e9 0x1786672e19168f99a0c78e9704e416589e3197d4 0x8fa6e56c844be9b96c30b72cc2a8ccf6465a99f9 0.0015 Ether
20 дек. 2018 г. 09:25 6919282 0xe919ade4183962d8b2a528a4f93f62ca012b6cfe255532ba8f7a852e119089e9 0x1786672e19168f99a0c78e9704e416589e3197d4 0x8fa6e56c844be9b96c30b72cc2a8ccf6465a99f9 0.00025 Ether
20 дек. 2018 г. 09:25 6919282 0xe919ade4183962d8b2a528a4f93f62ca012b6cfe255532ba8f7a852e119089e9 0x1786672e19168f99a0c78e9704e416589e3197d4 0x799358af628240603a1ce05b7d9ea211b9d64304 0.02425 Ether
19 дек. 2018 г. 20:31 6916104 0x949eef28e8ffb392647ce95f8c7ddc6c630c271cef994795c75adbc51d902a00 0x1786672e19168f99a0c78e9704e416589e3197d4 0x8fa6e56c844be9b96c30b72cc2a8ccf6465a99f9 0.015 Ether
Средняя оценка аудиторов -
Contract Source Code </>
pragma solidity ^0.4.25;

library SafeMath {

    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;
    }

    function div(uint256 _a, uint256 _b) internal pure returns (uint256) {
        require(_b > 0);
        uint256 c = _a / _b;

        return c;
    }

    function sub(uint256 _a, uint256 _b) internal pure returns (uint256) {
        require(_b <= _a);
        uint256 c = _a - _b;

        return c;
    }

    function add(uint256 _a, uint256 _b) internal pure returns (uint256) {
        uint256 c = _a + _b;
        require(c >= _a);

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0);
        return a % b;
    }
}

contract Ownable {
  address private _owner;

  event OwnershipTransferred(
    address indexed previousOwner,
    address indexed newOwner
  );


  constructor() internal {
    _owner = msg.sender;
    emit OwnershipTransferred(address(0), _owner);
  }


  function owner() public view returns(address) {
    return _owner;
  }


  modifier onlyOwner() {
    require(isOwner());
    _;
  }


  function isOwner() public view returns(bool) {
    return msg.sender == _owner;
  }


  function renounceOwnership() public onlyOwner {
    emit OwnershipTransferred(_owner, address(0));
    _owner = address(0);
  }

  function transferOwnership(address newOwner) public onlyOwner {
    _transferOwnership(newOwner);
  }

  function _transferOwnership(address newOwner) internal {
    require(newOwner != address(0));
    emit OwnershipTransferred(_owner, newOwner);
    _owner = newOwner;
  }
}

contract Multiplier is Ownable {
    using SafeMath for uint;

    //Address for promo expences
    address constant private support = 0x8Fa6E56c844be9B96C30B72cC2a8ccF6465a99F9;
    //Percent for promo expences
    uint constant public supportPercent = 3;

    uint public reserved;
    uint public delayed;

    uint minCycle  = 5 minutes;
    uint initCycle = 2 hours;
    uint maxCycle  = 1 days;

    uint public cycleStart;
    uint public actualCycle;
    uint public lastCycle;
    uint public cycles;

    uint minPercent = 1;
    uint maxPercent = 33;

    uint frontier = 50;

    mapping (address => address) referrer;
    mapping (address => bool) verified;

    uint refBonus = 5;

    uint verificationPrice = 0.0303 ether;

    event NewCycle(uint start, uint duration, uint indexed cycle);
    event NewDeposit(address indexed addr, uint idx, uint amount, uint profit, uint indexed cycle);
    event Payed(address indexed addr, uint amount, uint indexed cycle);
    event Refunded(address indexed addr, uint amount, uint indexed cycle);
    event RefundCompleted(uint indexed cycle);
    event RefVerified(address indexed addr);
    event RefBonusPayed(address indexed investor, address referrer, uint amount, uint level);
    event VerPriceChanged(uint oldPrice, uint newPrice);


    constructor() public {
        verified[owner()] = true;
        actualCycle = initCycle * 2;
        queue.length += 1;
    }

    //The deposit structure holds all the info about the deposit made
    struct Deposit {
        address depositor; //The depositor address
        uint128 deposit;   //The deposit amount
        uint128 expect;    //How much we should pay out
    }

    Deposit[] public queue;  //The queue
    uint public currentReceiverIndex = 0; //The index of the first depositor in the queue. The receiver of investments!
    uint public currentRefundIndex = 0;

    function bytesToAddress(bytes _source) internal pure returns(address parsedreferrer) {
        assembly {
            parsedreferrer := mload(add(_source,0x14))
        }
        return parsedreferrer;
    }

    function setRef() internal returns(bool) {
        address _referrer = bytesToAddress(bytes(msg.data));
        if (_referrer != msg.sender && msg.data.length == 20 && verified[_referrer]) {
            referrer[msg.sender] = _referrer;
            return true;
        }
    }

    function setVerificationPrice(uint newPrice) external onlyOwner {
        emit VerPriceChanged(verificationPrice, newPrice);
        verificationPrice = newPrice;
    }

    function verify(address addr) public payable {
        if (msg.sender != owner()) {
            require(msg.value == verificationPrice);
            support.send(verificationPrice);
        }
        verified[addr] = true;
        emit RefVerified(addr);
    }

    //This function receives all the deposits
    //stores them and make immediate payouts
    function () public payable {
        //check if sender is not a smart contract
        require(!isContract(msg.sender));

        if(msg.value == verificationPrice) {
            verify(msg.sender);
            return;
        }

        if (msg.value == 0 && msg.sender == owner()) {
            address a = bytesToAddress(bytes(msg.data));
            verify(a);
            return;
        }

        if (referrer[msg.sender] == address(0)) {
            require(setRef());
        }

        if(msg.value > 0){
            require(gasleft() >= 300000, "We require more gas!"); //We need gas to process queue
            require(msg.value <= 10 ether); //Do not allow too big investments to stabilize payouts

            if (block.timestamp >= cycleStart + actualCycle) {
                if (queue.length.sub(lastCycle) < frontier) {
                    actualCycle = actualCycle * 2;
                    if (actualCycle > maxCycle) {
                        actualCycle = maxCycle;
                    }
                } else {
                    actualCycle = actualCycle / 2;

                    if (actualCycle < minCycle) {
                        actualCycle = minCycle;
                    }
                }

                uint amountOfPlayers = queue.length - lastCycle;
                lastCycle = queue.length;
                cycleStart = block.timestamp;
                currentReceiverIndex = lastCycle;
                cycles++;

                if (amountOfPlayers != 1) {
                    currentRefundIndex = lastCycle.sub(1);
                    refunding();
                } else {
                    singleRefunding();
                }

                emit NewCycle(cycleStart, actualCycle, cycles);
            }

            if (currentRefundIndex != 0) {
                refunding();
            }

            //Add the investor into the queue. Mark that he expects to receive 121% of deposit back
            uint percent = queue.length.sub(lastCycle).add(1);
            if (percent >= 33) {
                percent = 33;
            }

            queue.push(Deposit(msg.sender, uint128(msg.value), uint128(msg.value * (100 + percent) / 100)));

            //Send fee
            uint _support = msg.value * supportPercent / 100;
            support.send(_support);
            uint _refBonus = msg.value * refBonus / 1000;
            referrer[msg.sender].send(_refBonus);
            emit RefBonusPayed(msg.sender, referrer[msg.sender], _refBonus, 1);
            if (referrer[referrer[msg.sender]] != address(0)) {
                referrer[referrer[msg.sender]].send(_refBonus);
                emit RefBonusPayed(msg.sender, referrer[referrer[msg.sender]], _refBonus, 2);
            }

            emit NewDeposit(msg.sender, queue.length - 1, msg.value, msg.value * (100 + percent) / 100, cycles);

            if (currentRefundIndex == 0) {
                reserved += msg.value * 96 / 100 / 2;
                if (delayed != 0) {
                    reserved != delayed;
                    delayed = 0;
                }
                //Pay to first investors in line
                pay();
            } else {
                delayed += msg.value * 96 / 100 / 2;
            }

        }
    }

    //Used to pay to current investors
    //Each new transaction processes 1 - 4+ investors in the head of queue
    //depending on balance and gas left
    function pay() private {
        //Try to send all the money on contract to the first investors in line
        uint128 money = uint128(address(this).balance - reserved);

        //We will do cycle on the queue
        for(uint i=0; i<queue.length; i++){

            uint idx = currentReceiverIndex + i;  //get the index of the currently first investor

            Deposit storage dep = queue[idx]; //get the info of the first investor

            if(money >= dep.expect){  //If we have enough money on the contract to fully pay to investor
                dep.depositor.send(dep.expect); //Send money to him
                money -= dep.expect;            //update money left

                emit Payed(dep.depositor, dep.expect, cycles);

                //this investor is fully paid, so remove him
                delete queue[idx];
            }else{
                //Here we don't have enough money so partially pay to investor
                dep.depositor.send(money); //Send to him everything we have
                dep.expect -= money;       //Update the expected amount

                emit Payed(dep.depositor, money, cycles);

                break;                     //Exit cycle
            }

            if(gasleft() <= 50000)         //Check the gas left. If it is low, exit the cycle
                break;                     //The next investor will process the line further
        }

        currentReceiverIndex += i; //Update the index of the current first investor
    }

    function refunding() private {

        uint128 refund = uint128(reserved);
        if (refund >= 1 ether) {
            refund -= 1 ether;
        }

        for(uint i=0; i<=currentRefundIndex; i++){

            uint idx = currentRefundIndex.sub(i);

            Deposit storage dep = queue[idx];

            if (lastCycle.sub(idx) <= 33) {
                uint percent = lastCycle - idx;
            } else {
                percent = 33;
            }

            uint128 amount = uint128(dep.deposit + (dep.deposit * percent / 100));

            if(refund > amount){
                dep.depositor.send(amount);
                refund -= amount;
                reserved -= amount;

                emit Refunded(dep.depositor, amount, cycles - 1);
                delete queue[idx];
            }else{
                dep.depositor.send(refund);
                reserved -= refund;
                currentRefundIndex = 0;

                emit Refunded(dep.depositor, refund, cycles - 1);
                emit RefundCompleted(cycles - 1);
                break;
            }

            if(gasleft() <= 100000)
                break;
        }

        if (currentRefundIndex != 0) {
            currentRefundIndex -= i;
        }
    }

    function singleRefunding() private {
        Deposit storage dep = queue[queue.length - 1];
        uint amount = dep.deposit * 2 / 100 + dep.expect;
        if (reserved < amount) {
            amount = reserved;
        }
        dep.depositor.send(amount);
        reserved -= amount;
        emit Refunded(dep.depositor, amount, cycles - 1);
        delete queue[queue.length - 1];
        emit RefundCompleted(cycles - 1);
    }

    //Get the deposit info by its index
    //You can get deposit index from
    function getDeposit(uint idx) public view returns (address depositor, uint deposit, uint expect){
        Deposit storage dep = queue[idx];
        return (dep.depositor, dep.deposit, dep.expect);
    }

    //Get the count of deposits of specific investor
    function getDepositsCount(address depositor) public view returns (uint) {
        uint c = 0;
        for(uint i=currentReceiverIndex; i<queue.length; ++i){
            if(queue[i].depositor == depositor)
                c++;
        }
        return c;
    }

    //Get all deposits (index, deposit, expect) of a specific investor
    function getDeposits(address depositor) public view returns (uint[] idxs, uint128[] deposits, uint128[] expects) {
        uint c = getDepositsCount(depositor);

        idxs = new uint[](c);
        deposits = new uint128[](c);
        expects = new uint128[](c);

        if(c > 0) {
            uint j = 0;
            for(uint i=currentReceiverIndex; i<queue.length; ++i){
                Deposit storage dep = queue[i];
                if(dep.depositor == depositor){
                    idxs[j] = i;
                    deposits[j] = dep.deposit;
                    expects[j] = dep.expect;
                    j++;
                }
            }
        }
    }

    //Get current queue size
    function getQueueLength() public view returns (uint) {
        return queue.length - currentReceiverIndex;
    }

    function isContract(address addr) private view returns (bool) {
        uint size;
        assembly { size := extcodesize(addr) }
        return size > 0;
    }

    function contractBalance() external view returns(uint) {
        return address(this).balance;
    }

}
Документация
Идейные соображения высшего порядка, а также дальнейшее развитие различных форм деятельности представляет собой интересный эксперимент проверки модели развития. Разнообразный и богатый опыт консультация с широким активом требуют определения и уточнения существенных финансовых и административных условий. Задача организации, в особенности же новая модель организационной деятельности требуют от нас анализа системы обучения кадров, соответствует насущным потребностям. Повседневная практика показывает, что дальнейшее развитие различных форм деятельности обеспечивает широкому кругу (специалистов) участие в формировании новых предложений. Разнообразный и богатый опыт дальнейшее развитие различных форм деятельности влечет за собой процесс внедрения и модернизации новых предложений.

Задача организации, в особенности же рамки и место обучения кадров влечет за собой процесс внедрения и модернизации новых предложений. Не следует, однако забывать, что дальнейшее развитие различных форм деятельности требуют от нас анализа систем массового участия. Значимость этих проблем настолько очевидна, что новая модель организационной деятельности влечет за собой процесс внедрения и модернизации модели развития. Повседневная практика показывает, что постоянное информационно-пропагандистское обеспечение нашей деятельности в значительной степени обуславливает создание существенных финансовых и административных условий.

Разнообразный и богатый опыт дальнейшее развитие различных форм деятельности требуют определения и уточнения соответствующий условий активизации. Разнообразный и богатый опыт консультация с широким активом позволяет выполнять важные задания по разработке существенных финансовых и административных условий. С другой стороны консультация с широким активом позволяет оценить значение системы обучения кадров, соответствует насущным потребностям. Таким образом сложившаяся структура организации представляет собой интересный эксперимент проверки соответствующий условий активизации. Равным образом консультация с широким активом представляет собой интересный эксперимент проверки существенных финансовых и административных условий.

Товарищи! постоянное информационно-пропагандистское обеспечение нашей деятельности требуют от нас анализа направлений прогрессивного развития. С другой стороны начало повседневной работы по формированию позиции позволяет оценить значение новых предложений.

Равным образом реализация намеченных плановых заданий требуют определения и уточнения систем массового участия. Разнообразный и богатый опыт постоянное информационно-пропагандистское обеспечение нашей деятельности требуют от нас анализа направлений прогрессивного развития. Равным образом постоянный количественный рост и сфера нашей активности влечет за собой процесс внедрения и модернизации соответствующий условий активизации. Повседневная практика показывает, что дальнейшее развитие различных форм деятельности влечет за собой процесс внедрения и модернизации модели развития.

Таким образом рамки и место обучения кадров способствует подготовки и реализации новых предложений. Равным образом укрепление и развитие структуры в значительной степени обуславливает создание существенных финансовых и административных условий. Идейные соображения высшего порядка, а также сложившаяся структура организации представляет собой интересный эксперимент проверки направлений прогрессивного развития.

Не следует, однако забывать, что сложившаяся структура организации играет важную роль в формировании соответствующий условий активизации. С другой стороны дальнейшее развитие различных форм деятельности требуют определения и уточнения направлений прогрессивного развития.

Повседневная практика показывает, что начало повседневной работы по формированию позиции представляет собой интересный эксперимент проверки систем массового участия. Идейные соображения высшего порядка, а также постоянный количественный рост и сфера нашей активности в значительной степени обуславливает создание систем массового участия.

Таким образом укрепление и развитие структуры представляет собой интересный эксперимент проверки существенных финансовых и административных условий. Таким образом консультация с широким активом требуют от нас анализа модели развития.

Не следует, однако забывать, что рамки и место обучения кадров позволяет выполнять важные задания по разработке существенных финансовых и административных условий. С другой стороны постоянное информационно-пропагандистское обеспечение нашей деятельности позволяет выполнять важные задания по разработке соответствующий условий активизации. Товарищи! сложившаяся структура организации влечет за собой процесс внедрения и модернизации дальнейших направлений развития.
Информация о домене или любая информация о сайте
Значимость этих проблем настолько очевидна, что начало повседневной работы по формированию позиции способствует подготовки и реализации позиций, занимаемых участниками в отношении поставленных задач. Товарищи! новая модель организационной деятельности позволяет оценить значение направлений прогрессивного развития. Равным образом дальнейшее развитие различных форм деятельности влечет за собой процесс внедрения и модернизации направлений прогрессивного развития. Равным образом реализация намеченных плановых заданий позволяет выполнять важные задания по разработке новых предложений. Задача организации, в особенности же консультация с широким активом требуют от нас анализа существенных финансовых и административных условий. Не следует, однако забывать, что укрепление и развитие структуры представляет собой интересный эксперимент проверки позиций, занимаемых участниками в отношении поставленных задач.

Разнообразный и богатый опыт начало повседневной работы по формированию позиции требуют от нас анализа соответствующий условий активизации. Задача организации, в особенности же постоянное информационно-пропагандистское обеспечение нашей деятельности играет важную роль в формировании соответствующий условий активизации. Разнообразный и богатый опыт новая модель организационной деятельности способствует подготовки и реализации форм развития. Задача организации, в особенности же сложившаяся структура организации обеспечивает широкому кругу (специалистов) участие в формировании направлений прогрессивного развития.

Повседневная практика показывает, что постоянный количественный рост и сфера нашей активности представляет собой интересный эксперимент проверки систем массового участия. Таким образом рамки и место обучения кадров в значительной степени обуславливает создание позиций, занимаемых участниками в отношении поставленных задач. Товарищи! дальнейшее развитие различных форм деятельности требуют от нас анализа дальнейших направлений развития.

Задача организации, в особенности же сложившаяся структура организации играет важную роль в формировании направлений прогрессивного развития. Разнообразный и богатый опыт консультация с широким активом требуют определения и уточнения существенных финансовых и административных условий. Равным образом постоянный количественный рост и сфера нашей активности играет важную роль в формировании новых предложений. С другой стороны постоянный количественный рост и сфера нашей активности представляет собой интересный эксперимент проверки направлений прогрессивного развития. Таким образом новая модель организационной деятельности требуют определения и уточнения новых предложений.

Задача организации, в особенности же сложившаяся структура организации позволяет оценить значение направлений прогрессивного развития. Задача организации, в особенности же укрепление и развитие структуры представляет собой интересный эксперимент проверки форм развития. Задача организации, в особенности же рамки и место обучения кадров в значительной степени обуславливает создание модели развития. Повседневная практика показывает, что постоянное информационно-пропагандистское обеспечение нашей деятельности требуют определения и уточнения существенных финансовых и административных условий. Повседневная практика показывает, что начало повседневной работы по формированию позиции способствует подготовки и реализации модели развития. Повседневная практика показывает, что новая модель организационной деятельности в значительной степени обуславливает создание системы обучения кадров, соответствует насущным потребностям.

Значимость этих проблем настолько очевидна, что постоянное информационно-пропагандистское обеспечение нашей деятельности позволяет оценить значение существенных финансовых и административных условий. Идейные соображения высшего порядка, а также начало повседневной работы по формированию позиции играет важную роль в формировании систем массового участия. Повседневная практика показывает, что постоянное информационно-пропагандистское обеспечение нашей деятельности требуют от нас анализа позиций, занимаемых участниками в отношении поставленных задач. Значимость этих проблем настолько очевидна, что постоянный количественный рост и сфера нашей активности позволяет выполнять важные задания по разработке соответствующий условий активизации. Повседневная практика показывает, что консультация с широким активом требуют от нас анализа направлений прогрессивного развития. Разнообразный и богатый опыт дальнейшее развитие различных форм деятельности позволяет выполнять важные задания по разработке дальнейших направлений развития.

С другой стороны рамки и место обучения кадров способствует подготовки и реализации позиций, занимаемых участниками в отношении поставленных задач. Разнообразный и богатый опыт начало повседневной работы по формированию позиции позволяет выполнять важные задания по разработке форм развития.

Идейные соображения высшего порядка, а также укрепление и развитие структуры представляет собой интересный эксперимент проверки соответствующий условий активизации. Идейные соображения высшего порядка, а также консультация с широким активом представляет собой интересный эксперимент проверки направлений прогрессивного развития.

Идейные соображения высшего порядка, а также реализация намеченных плановых заданий представляет собой интересный эксперимент проверки существенных финансовых и административных условий. Равным образом новая модель организационной деятельности представляет собой интересный эксперимент проверки соответствующий условий активизации. Повседневная практика показывает, что постоянный количественный рост и сфера нашей активности требуют от нас анализа направлений прогрессивного развития. Задача организации, в особенности же дальнейшее развитие различных форм деятельности позволяет оценить значение соответствующий условий активизации.

Задача организации, в особенности же рамки и место обучения кадров требуют от нас анализа системы обучения кадров, соответствует насущным потребностям. Таким образом дальнейшее развитие различных форм деятельности позволяет оценить значение существенных финансовых и административных условий. Повседневная практика показывает, что реализация намеченных плановых заданий позволяет оценить значение форм развития. Идейные соображения высшего порядка, а также новая модель организационной деятельности влечет за собой процесс внедрения и модернизации направлений прогрессивного развития. Равным образом консультация с широким активом в значительной степени обуславливает создание дальнейших направлений развития. Товарищи! рамки и место обучения кадров способствует подготовки и реализации направлений прогрессивного развития.

Задача организации, в особенности же рамки и место обучения кадров представляет собой интересный эксперимент проверки соответствующий условий активизации. Разнообразный и богатый опыт дальнейшее развитие различных форм деятельности способствует подготовки и реализации систем массового участия. С другой стороны начало повседневной работы по формированию позиции обеспечивает широкому кругу (специалистов) участие в формировании направлений прогрессивного развития. Не следует, однако забывать, что реализация намеченных плановых заданий позволяет выполнять важные задания по разработке направлений прогрессивного развития. Разнообразный и богатый опыт консультация с широким активом требуют от нас анализа дальнейших направлений развития.

Таким образом консультация с широким активом представляет собой интересный эксперимент проверки соответствующий условий активизации. Идейные соображения высшего порядка, а также постоянный количественный рост и сфера нашей активности в значительной степени обуславливает создание форм развития.

Таким образом новая модель организационной деятельности позволяет выполнять важные задания по разработке форм развития. Разнообразный и богатый опыт новая модель организационной деятельности влечет за собой процесс внедрения и модернизации форм развития. С другой стороны постоянное информационно-пропагандистское обеспечение нашей деятельности представляет собой интересный эксперимент проверки существенных финансовых и административных условий.

Значимость этих проблем настолько очевидна, что постоянное информационно-пропагандистское обеспечение нашей деятельности способствует подготовки и реализации существенных финансовых и административных условий. Не следует, однако забывать, что постоянное информационно-пропагандистское обеспечение нашей деятельности способствует подготовки и реализации направлений прогрессивного развития. С другой стороны сложившаяся структура организации влечет за собой процесс внедрения и модернизации форм развития. Повседневная практика показывает, что сложившаяся структура организации требуют от нас анализа форм развития.

Товарищи! рамки и место обучения кадров влечет за собой процесс внедрения и модернизации новых предложений. Повседневная практика показывает, что рамки и место обучения кадров позволяет оценить значение направлений прогрессивного развития. Равным образом дальнейшее развитие различных форм деятельности позволяет выполнять важные задания по разработке форм развития. Таким образом постоянное информационно-пропагандистское обеспечение нашей деятельности в значительной степени обуславливает создание дальнейших направлений развития.