Contract 0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xb9a043e8d0a6e4324ad933ac712c401d19dd31465f50cdb58d8bf8aa18b5261fPlace Bets241943272022-01-26 17:49:2424 secs ago0x75f6db327324bfe9e670f710c84e3174e428d9cb IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.01637764337
0xd65f2fcc95194c675a3784082e8085a633d8276c2f7a9d5ca7c869903f56b800Resolve Game241943232022-01-26 17:49:0840 secs ago0x1cb85a86edf96c2a81c2fbf64534db15bde9e509 IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.00744691233
0x1f3dcd21ab78e6ce71fd9bd876331d9b0f0d7e51fafd9e62d3d1ed0c747ce5faPlace Bets241943222022-01-26 17:49:0444 secs ago0x1cb85a86edf96c2a81c2fbf64534db15bde9e509 IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.01372180931
0x81f0105353f2a57d18641efdd3a1594a55e30bb5a47ea2fad33c1f5ef814b65bResolve Game241943192022-01-26 17:48:5256 secs ago0x00ba5fdf5f8a719921e41b542b60621e0fc11f7a IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.00922677831
0x648df81ca572062cdb4e27b01aa17d7f5bca1c006b3e19eca09094d80b42c6e1Place Bets241943182022-01-26 17:48:481 min ago0x00ba5fdf5f8a719921e41b542b60621e0fc11f7a IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.01489057131
0x68904ae90680970cf483ad9d1d6ab603ae495150850edc690784d521484cfc04Resolve Game241943102022-01-26 17:48:161 min ago0xcd7d64c0b82807947c01e49f9fa8dba63eb35fce IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.01550363535
0x50802fdaea0da9b4f11141d98de9aad9097d401efec7e7085a68eedc941a6b7cPlace Bets241943092022-01-26 17:48:121 min ago0xcd7d64c0b82807947c01e49f9fa8dba63eb35fce IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.02018080836
0x1f99f62fd72c5e5d1effee770f94e11b0601302fe7fcee9113b34d6af722ef9fResolve Game241943052022-01-26 17:47:561 min ago0x75f6db327324bfe9e670f710c84e3174e428d9cb IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.0672174300
0x8e86ceb6a05ebabdbb17e734b432d4e960bc755bfdf4e7c9d9626cd0e47f3177Place Bets241943022022-01-26 17:47:422 mins ago0x75f6db327324bfe9e670f710c84e3174e428d9cb IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.01480163232
0x6f0075b34365f489a05addfe175f87446b6a240ff9991c3b6274b948f8da004bResolve Game241942972022-01-26 17:47:322 mins ago0x1cb85a86edf96c2a81c2fbf64534db15bde9e509 IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.00814672836
0x18e5cb88c9c49c2ddbc87675f0f2b45846a20b5d8f53f9e4e08428fe99cb3362Place Bets241942952022-01-26 17:47:282 mins ago0x1cb85a86edf96c2a81c2fbf64534db15bde9e509 IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.01665183636
0x7fd844eda743f3fbf03b836842fa71cae61a75d3f133ff6acf326e837c8800fcResolve Game241942872022-01-26 17:47:122 mins ago0x00ba5fdf5f8a719921e41b542b60621e0fc11f7a IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.00826528231
0xc97c773da4a8dfb6e188f59f8271dd77c83c18a5ff581be70da5bfe5c277e7f5Place Bets241942842022-01-26 17:47:062 mins ago0x00ba5fdf5f8a719921e41b542b60621e0fc11f7a IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.01372180931
0x7bb23a06d29a2dbe44c6a8e1b91a14cd0782094e09e0eca31550c5d29ed6cb1fResolve Game241941302022-01-26 17:41:507 mins ago0xcd7d64c0b82807947c01e49f9fa8dba63eb35fce IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.00880608333
0x5df5c323855e6cf776ed6df3ba981785b61624c8c82a3db1ba8341cb60221a9aPlace Bets241941272022-01-26 17:41:448 mins ago0xcd7d64c0b82807947c01e49f9fa8dba63eb35fce IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.01480163232
0xb5ff8d72a0801ad36c0428d87db464b0d3aa8566240df665f2a486097fb9711dResolve Game241941132022-01-26 17:41:168 mins ago0x75f6db327324bfe9e670f710c84e3174e428d9cb IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.00826528231
0x51f3a2a892df6f98d9f529a1ea77bce3616320a9fc3dd94578dedf5ea91e8884Place Bets241941112022-01-26 17:41:088 mins ago0x75f6db327324bfe9e670f710c84e3174e428d9cb IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.01526418333
0x2763effaa8980a3e48bdef69a4e88f3c6d9307355c4acd46bdc7882ee9918951Resolve Game241940992022-01-26 17:40:449 mins ago0x1cb85a86edf96c2a81c2fbf64534db15bde9e509 IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.00897267232
0x9ba1a11d247cea64fd2430641c9b8e493e0b1bb6b193fa33278462933d1353d7Place Bets241940962022-01-26 17:40:389 mins ago0x1cb85a86edf96c2a81c2fbf64534db15bde9e509 IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.01372180931
0xc585e6022933d31dfb65188da9e1a5f54ca37e40e1e08b4c7971ce890c787dabResolve Game241940812022-01-26 17:40:089 mins ago0x00ba5fdf5f8a719921e41b542b60621e0fc11f7a IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.00746473233
0x3817427d851e64a02fb30aa11ed51243f934d2bd0db54dff131ce02ce1f3e9d6Place Bets241940782022-01-26 17:40:029 mins ago0x00ba5fdf5f8a719921e41b542b60621e0fc11f7a IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.01526418333
0x983842a9fef4d8644c33ec7c8fb0a6c58d4f3a089f7e6ac126d8fd86cfe1ba13Resolve Game241940622022-01-26 17:39:3010 mins ago0xcd7d64c0b82807947c01e49f9fa8dba63eb35fce IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.0799866300
0x592a13e13ea21f1a752e8d4f7bd442b6e46b0a3f65f5bb16a9637b6196a725ffPlace Bets241940562022-01-26 17:39:1810 mins ago0xcd7d64c0b82807947c01e49f9fa8dba63eb35fce IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.01460708733
0x8cded00c040ded16daa52f23dd2774d132f3d294f9da318e99b7857d26c24495Resolve Game241940462022-01-26 17:38:5410 mins ago0x75f6db327324bfe9e670f710c84e3174e428d9cb IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.084135300
0x28e17c888cfdbf9cfae34f538ebaec78cc318ce6c97c1e65b7e3333d80c399baPlace Bets241940402022-01-26 17:38:4211 mins ago0x75f6db327324bfe9e670f710c84e3174e428d9cb IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.01416444832
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
dgRoulette

Compiler Version
v0.7.5+commit.eb77ed08

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2021-06-10
*/

// SPDX-License-Identifier: -- 🎲 --

pragma solidity ^0.7.5;

// Roulette Logic Contract ///////////////////////////////////////////////////////////
// Author: Decentral Games ([email protected]) ///////////////////////////////////////
// Roulette - MultiPlayer - TokenIndex 3.0

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, 'SafeMath: addition overflow');
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, 'SafeMath: subtraction overflow');
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, 'SafeMath: multiplication overflow');
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, 'SafeMath: division by zero');
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0, 'SafeMath: modulo by zero');
        return a % b;
    }
}

contract AccessController {

    address public ceoAddress;

    bool public paused = false;

    mapping (address => bool) public isWorker;

    event CEOSet(
        address newCEO
    );

    event WorkerAdded(
        address newWorker
    );

    event WorkerRemoved(
        address existingWorker
    );

    event Paused();
    event Unpaused();

    constructor() {

        address creator = msg.sender;

        ceoAddress = creator;

        isWorker[creator] = true;

        emit CEOSet(
            creator
        );

        emit WorkerAdded(
            creator
        );
    }

    modifier onlyCEO() {
        require(
            msg.sender == ceoAddress,
            'AccessControl: CEO access denied'
        );
        _;
    }

    modifier onlyWorker() {
        require(
            isWorker[msg.sender] == true,
            'AccessControl: worker access denied'
        );
        _;
    }

    modifier nonZeroAddress(address checkingAddress) {
        require(
            checkingAddress != address(0x0),
            'AccessControl: invalid address'
        );
        _;
    }

    modifier whenNotPaused() {
        require(
            !paused,
            'AccessControl: currently paused'
        );
        _;
    }

    modifier whenPaused {
        require(
            paused,
            'AccessControl: currenlty not paused'
        );
        _;
    }

    function setCEO(
        address _newCEO
    )
        external
        nonZeroAddress(_newCEO)
        onlyCEO
    {
        ceoAddress = _newCEO;

        emit CEOSet(
            ceoAddress
        );
    }

    function addWorker(
        address _newWorker
    )
        external
        onlyCEO
    {
        _addWorker(
            _newWorker
        );
    }

    function addWorkerBulk(
        address[] calldata _newWorkers
    )
        external
        onlyCEO
    {
        for (uint8 index = 0; index < _newWorkers.length; index++) {
            _addWorker(_newWorkers[index]);
        }
    }

    function _addWorker(
        address _newWorker
    )
        internal
        nonZeroAddress(_newWorker)
    {
        require(
            isWorker[_newWorker] == false,
            'AccessControl: worker already exist'
        );

        isWorker[_newWorker] = true;

        emit WorkerAdded(
            _newWorker
        );
    }

    function removeWorker(
        address _existingWorker
    )
        external
        onlyCEO
    {
        _removeWorker(
            _existingWorker
        );
    }

    function removeWorkerBulk(
        address[] calldata _workerArray
    )
        external
        onlyCEO
    {
        for (uint8 index = 0; index < _workerArray.length; index++) {
            _removeWorker(_workerArray[index]);
        }
    }

    function _removeWorker(
        address _existingWorker
    )
        internal
        nonZeroAddress(_existingWorker)
    {
        require(
            isWorker[_existingWorker] == true,
            "AccessControl: worker not detected"
        );

        isWorker[_existingWorker] = false;

        emit WorkerRemoved(
            _existingWorker
        );
    }

    function pause()
        external
        onlyWorker
        whenNotPaused
    {
        paused = true;
        emit Paused();
    }

    function unpause()
        external
        onlyCEO
        whenPaused
    {
        paused = false;
        emit Unpaused();
    }
}

interface TreasuryInstance {

    function getTokenAddress(
        uint8 _tokenIndex
    ) external view returns (address);

    function tokenInboundTransfer(
        uint8 _tokenIndex,
        address _from,
        uint256 _amount
    )  external returns (bool);

    function tokenOutboundTransfer(
        uint8 _tokenIndex,
        address _to,
        uint256 _amount
    ) external returns (bool);

    function checkAllocatedTokens(
        uint8 _tokenIndex
    ) external view returns (uint256);

    function checkApproval(
        address _userAddress,
        uint8 _tokenIndex
    ) external view returns (uint256 approved);

    function getMaximumBet(
        uint8 _tokenIndex
    ) external view returns (uint128);

    function consumeHash(
        bytes32 _localhash
    ) external returns (bool);
}

interface PointerInstance {

    function addPoints(
        address _player,
        uint256 _points,
        address _token,
        uint256 _numPlayers,
        uint256 _wearableBonus
    ) external returns (
        uint256 newPoints,
        uint256 multiplierA,
        uint256 multiplierB
    );

    function addPoints(
        address _player,
        uint256 _points,
        address _token,
        uint256 _numPlayers
    ) external returns (
        uint256 newPoints,
        uint256 multiplierA,
        uint256 multiplierB
    );

    function addPoints(
        address _player,
        uint256 _points,
        address _token
    ) external returns (
        uint256 newPoints,
        uint256 multiplierA,
        uint256 multiplierB
    );
}

contract dgRoulette is AccessController {

    using SafeMath for uint128;
    using SafeMath for uint256;

    uint256 private store;
    uint256 public pointsCap;

    enum GameState { NewGame, OnGoingGame, EndedGame }
    enum BetType { Single, EvenOdd, RedBlack, HighLow, Column, Dozen }

    mapping (address => uint) public totalBets;
    mapping (address => uint) public totalPayout;

    mapping (uint => uint) public maxSquareBets;
    mapping (uint => mapping (uint => mapping (uint => uint))) public currentBets;

    struct Game {
        address[] players;
        uint256 landID;
        uint256 machineID;
        uint8[] betIDs;
        uint8[] betValues;
        uint128[] betAmount;
        uint8[] tokenIndex;
        uint8 playersCount;
        uint8[] wearableBonus;
        GameState state;
    }

    mapping(bytes16 => Game) public Games;

    Bet[] public bets;
    uint256[] winAmounts;

    struct Bet {
        address player;
        uint8 betType;
        uint8 number;
        uint8 tokenIndex;
        uint128 value;
    }

    event GameResult(
        address[] _players,
        uint8[] _tokenIndex,
        uint256 indexed _landID,
        uint256 indexed _number,
        uint256 indexed _machineID,
        uint256[] _winAmounts
    );

    TreasuryInstance public treasury;
    PointerInstance public pointerContract;

    constructor(
        address _treasuryAddress,
        uint128 _maxSquareBetDefault,
        uint8 _maxNumberBets,
        address _pointerAddress
    ) {
        treasury = TreasuryInstance(_treasuryAddress);
        store |= _maxNumberBets<<0;
        store |= _maxSquareBetDefault<<8;
        store |= block.timestamp<<136;
        pointerContract = PointerInstance(_pointerAddress);
        pointsCap = 2;
    }

    function addPoints(
        address _player,
        uint256 _points,
        address _token,
        uint256 _numPlayers,
        uint256 _wearableBonus
    )
        private
    {
        pointerContract.addPoints(
            _player,
            _points,
            _token,
            _numPlayers,
            _wearableBonus
        );
    }

    function bet(
        address _player,
        uint8 _betType,
        uint8 _number,
        uint8 _tokenIndex,
        uint128 _value
    )
        internal
    {
        currentBets[_tokenIndex][_betType][_number] += _value;

        uint256 _maxSquareBet = maxSquareBets[_tokenIndex] == 0
            ? uint128(store>>8)
            : maxSquareBets[_tokenIndex];

        require(
            currentBets[_tokenIndex][_betType][_number] <= _maxSquareBet,
            'Roulette: exceeding maximum bet limit'
        );

        bets.push(Bet({
            player: _player,
            betType: _betType,
            number: _number,
            tokenIndex: _tokenIndex,
            value: _value
        }));
    }

    function _launch(
        bytes32 _localhash,
        address[] memory _players,
        uint8[] memory _tokenIndex,
        uint256 _landID,
        uint256 _machineID
    )
        private
        returns(
            uint256[] memory,
            uint256 number
        )
    {
        require(
            bets.length > 0,
            'Roulette: must have bets'
        );

        delete winAmounts;

        store ^= (store>>136)<<136;
        store |= block.timestamp<<136;

        number = uint(
            keccak256(
                abi.encodePacked(
                    _localhash
                )
            )
        ) % 37;

        for (uint i = 0; i < bets.length; i++) {
            bool won = false;
            Bet memory b = bets[i];
            if (b.betType == uint(BetType.Single) && b.number == number) {
                won = true;
            } else if (b.betType == uint(BetType.EvenOdd) && number <= 36) {
                if (number > 0 && number % 2 == b.number) {
                    won = true;
                }
            } else if (b.betType == uint(BetType.RedBlack) && b.number == 0) {
                if ((number > 0 && number <= 10) || (number >= 19 && number <= 28)) {
                    won = (number % 2 == 1);
                } else {
                    if (number > 0 && number <= 36) {
                        won = (number % 2 == 0);
                    }
                }
            } else if (b.betType == uint(BetType.RedBlack) && b.number == 1) {
                if ((number > 0 && number <= 10) || (number >= 19 && number <= 28)) {
                    won = (number % 2 == 0);
                } else {
                    if (number > 0 && number <= 36) {
                        won = (number % 2 == 1);
                    }
                }
            } else if (b.betType == uint(BetType.HighLow) && number <= 36) {
                if (number >= 19 && b.number == 0) {
                    won = true;
                }
                if (number > 0 && number <= 18 && b.number == 1) {
                    won = true;
                }
            } else if (b.betType == uint(BetType.Column) && number <= 36) {
                if (b.number == 0 && number > 0) won = (number % 3 == 1);
                if (b.number == 1 && number > 0) won = (number % 3 == 2);
                if (b.number == 2 && number > 0) won = (number % 3 == 0);
            } else if (b.betType == uint(BetType.Dozen) && number <= 36) {
                if (b.number == 0) won = (number > 0 && number <= 12);
                if (b.number == 1) won = (number > 12 && number <= 24);
                if (b.number == 2) won = (number > 24 && number <= 36);
            }

            if (won) {
                uint256 betWin = b.value.mul(
                    getPayoutForType(b.betType, b.number)
                );
                winAmounts.push(betWin);
            } else {
                winAmounts.push(0);
            }
            currentBets[b.tokenIndex][b.betType][b.number] = 0;
        }

        delete bets;

        emit GameResult(
            _players,
            _tokenIndex,
            _landID,
            number,
            _machineID,
            winAmounts
        );

        return(
            winAmounts,
            number
        );
    }

    function placeBets(
        bytes16 _gameId,
        address[] memory _players,
        uint256 _landID,
        uint256 _machineID,
        uint8[] memory _betIDs,
        uint8[] memory _betValues,
        uint128[] memory _betAmount,
        uint8[] memory _tokenIndex,
        uint8 _playerCount,
        uint8[] memory _wearableBonus
    )
        public
        whenNotPaused
        onlyWorker
    {
        require(
            _betIDs.length == _betValues.length,
            'Roulette: inconsistent amount of betsValues'
        );

        require(
            _tokenIndex.length == _betAmount.length,
            'Roulette: inconsistent amount of betAmount'
        );

        require(
            _betValues.length == _tokenIndex.length,
            'Roulette: inconsistent amount of tokenIndex'
        );

        require(
            _betIDs.length <= uint8(store>>0),
            'Roulette: maximum amount of bets reached'
        );

        require(
            Games[_gameId].state == GameState.NewGame ||
            Games[_gameId].state == GameState.EndedGame,
            'Roulette: ongoing game detected'
        );

        Game memory _game = Game(
            _players,
            _landID,
            _machineID,
            _betIDs,
            _betValues,
            _betAmount,
            _tokenIndex,
            _playerCount,
            _wearableBonus,
            GameState.OnGoingGame
        );

        Games[_gameId] = _game;

        bool[5] memory checkedTokens;
        uint8 i;

        for (i = 0; i < _betIDs.length; i++) {

            require(
                treasury.getMaximumBet(_tokenIndex[i]) >= _betAmount[i],
                'Roulette: bet amount is more than maximum'
            );

            treasury.tokenInboundTransfer(
                _tokenIndex[i],
                _players[i],
                _betAmount[i]
            );

            if (!checkedTokens[_tokenIndex[i]]) {
                uint256 tokenFunds = treasury.checkAllocatedTokens(_tokenIndex[i]);
                require(
                    getNecessaryBalance(_tokenIndex[i]) <= tokenFunds,
                    'Roulette: not enough tokens for payout'
                );
                checkedTokens[_tokenIndex[i]] = true;
            }
        }
    }

    function resolveGame(
        bytes16 _gameId,
        bytes32 _localhash
    )
        public
        whenNotPaused
        onlyWorker
    {
        require(
            Games[_gameId].state == GameState.OnGoingGame,
            'dgRoulette: not ongoing game detected'
        );

        Games[_gameId].state = GameState.EndedGame;

        for (uint8 i = 0; i < Games[_gameId].betIDs.length; i++) {
            bet(
                Games[_gameId].players[i],
                Games[_gameId].betIDs[i],
                Games[_gameId].betValues[i],
                Games[_gameId].tokenIndex[i],
                Games[_gameId].betAmount[i]
            );
        }

        uint256 _spinResult;
        (winAmounts, _spinResult) = _launch(
            _localhash,
            Games[_gameId].players,
            Games[_gameId].tokenIndex,
            Games[_gameId].landID,
            Games[_gameId].machineID
        );

        // payout && points preparation
        for (uint8 i = 0; i < winAmounts.length; i++) {
            address player = Games[_gameId].players[i];
            if (winAmounts[i] > 0) {
                treasury.tokenOutboundTransfer(
                    Games[_gameId].tokenIndex[i],
                    Games[_gameId].players[i],
                    winAmounts[i]
                );
                // collecting totalPayout
                totalPayout[player] =
                totalPayout[player] + winAmounts[i];
            }
            totalBets[player] =
            totalBets[player] + Games[_gameId].betAmount[i];
        }

        // point calculation && bonus
        for (uint8 i = 0; i < Games[_gameId].players.length; i++) {
            _issuePointsAmount(
                Games[_gameId].players[i],
                Games[_gameId].tokenIndex[i],
                Games[_gameId].playersCount,
                Games[_gameId].wearableBonus[i]
            );
        }
    }

    function changeCap(
        uint256 _newPointsCap
    )
        external
        onlyCEO
    {
        pointsCap = _newPointsCap;
    }

    function _issuePointsAmount(
        address _player,
        uint8 _tokenIndex,
        uint256 _playerCount,
        uint256 _wearableBonus
    ) private {
        if (totalPayout[_player] > totalBets[_player]) {

            uint256 points = totalPayout[_player].sub(totalBets[_player]);
            uint256 limits = totalBets[_player].mul(pointsCap);

            points = points > limits
                ? limits
                : points;

            addPoints(
                _player,
                points,
                treasury.getTokenAddress(_tokenIndex),
                _playerCount,
                _wearableBonus
            );
        }
        else if (totalPayout[_player] < totalBets[_player]) {
            addPoints(
                _player,
                totalBets[_player].sub(totalPayout[_player]),
                treasury.getTokenAddress(_tokenIndex),
                _playerCount,
                _wearableBonus
            );
        }
        totalBets[_player] = 0;
        totalPayout[_player] = 0;
    }

    function getPayoutForType(
        uint256 _betType,
        uint256 _betNumber
    )
        public
        pure
        returns(uint256)
    {
        if (_betType == uint8(BetType.Single))
            return _betNumber > 36 ? 0 : 36;
        if (_betType == uint8(BetType.EvenOdd))
            return _betNumber > 1 ? 0 : 2;
        if (_betType == uint8(BetType.RedBlack))
            return _betNumber > 1 ? 0 : 2;
        if (_betType == uint8(BetType.HighLow))
            return _betNumber > 1 ? 0 : 2;
        if (_betType == uint8(BetType.Column))
            return _betNumber > 2 ? 0 : 3;
        if (_betType == uint8(BetType.Dozen))
            return _betNumber > 2 ? 0 : 3;

        return 0;
    }

    function getNecessaryBalance(
        uint256 _tokenIndex
    )
        public
        view
        returns (uint256 _necessaryBalance)
    {
        uint256 _necessaryForBetType;
        uint256[6] memory betTypesMax;

        for (uint8 _i = 0; _i < bets.length; _i++) {
            Bet memory b = bets[_i];
            if (b.tokenIndex == _tokenIndex) {

                uint256 _payout = getPayoutForType(b.betType, b.number);
                uint256 _square = currentBets[b.tokenIndex][b.betType][b.number];

                require(
                    _payout > 0,
                    'Roulette: incorrect bet type/value'
                );

                _necessaryForBetType = _square.mul(_payout);

                if (_necessaryForBetType > betTypesMax[b.betType]) {
                    betTypesMax[b.betType] = _necessaryForBetType;
                }
            }
        }

        for (uint8 _i = 0; _i < betTypesMax.length; _i++) {
            _necessaryBalance = _necessaryBalance.add(
                betTypesMax[_i]
            );
        }
    }

    function getBetsCountAndValue()
        external
        view
        returns(uint value, uint)
    {
        for (uint i = 0; i < bets.length; i++) {
            value += bets[i].value;
        }

        return (bets.length, value);
    }

    function getBetsCount()
        external
        view
        returns (uint256)
    {
        return bets.length;
    }

    function changeMaxSquareBet(
        uint256 _tokenIndex,
        uint256 _newMaxSquareBet
    )
        external
        onlyCEO
    {
        maxSquareBets[_tokenIndex] = _newMaxSquareBet;
    }

    function changeMaxSquareBetDefault(
        uint128 _newMaxSquareBetDefault
    )
        external
        onlyCEO
    {
        store ^= uint128((store>>8))<<8;
        store |= _newMaxSquareBetDefault<<8;
    }

    function changeMaximumBetAmount(
        uint8 _newMaximumBetAmount
    )
        external
        onlyCEO
    {
        store ^= uint8(store)<<0;
        store |= _newMaximumBetAmount<<0;
    }

    function changeTreasury(
        address _newTreasuryAddress
    )
        external
        onlyCEO
    {
        treasury = TreasuryInstance(
            _newTreasuryAddress
        );
    }

    function getNextRoundTimestamp()
        external
        view
        returns(uint)
    {
        return store>>136;
    }

    function checkMaximumBetAmount()
        external
        view
        returns (uint8)
    {
        return uint8(store>>0);
    }

    function checkMaxSquareBetDefault()
        external
        view
        returns (uint128)
    {
        return uint128(store>>8);
    }

    function updatePointer(
        address _newPointerAddress
    )
        external
        onlyCEO
    {
        pointerContract = PointerInstance(
            _newPointerAddress
        );
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_treasuryAddress","type":"address"},{"internalType":"uint128","name":"_maxSquareBetDefault","type":"uint128"},{"internalType":"uint8","name":"_maxNumberBets","type":"uint8"},{"internalType":"address","name":"_pointerAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newCEO","type":"address"}],"name":"CEOSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"_players","type":"address[]"},{"indexed":false,"internalType":"uint8[]","name":"_tokenIndex","type":"uint8[]"},{"indexed":true,"internalType":"uint256","name":"_landID","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_number","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_machineID","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"_winAmounts","type":"uint256[]"}],"name":"GameResult","type":"event"},{"anonymous":false,"inputs":[],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newWorker","type":"address"}],"name":"WorkerAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"existingWorker","type":"address"}],"name":"WorkerRemoved","type":"event"},{"inputs":[{"internalType":"bytes16","name":"","type":"bytes16"}],"name":"Games","outputs":[{"internalType":"uint256","name":"landID","type":"uint256"},{"internalType":"uint256","name":"machineID","type":"uint256"},{"internalType":"uint8","name":"playersCount","type":"uint8"},{"internalType":"enum dgRoulette.GameState","name":"state","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newWorker","type":"address"}],"name":"addWorker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_newWorkers","type":"address[]"}],"name":"addWorkerBulk","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"bets","outputs":[{"internalType":"address","name":"player","type":"address"},{"internalType":"uint8","name":"betType","type":"uint8"},{"internalType":"uint8","name":"number","type":"uint8"},{"internalType":"uint8","name":"tokenIndex","type":"uint8"},{"internalType":"uint128","name":"value","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ceoAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPointsCap","type":"uint256"}],"name":"changeCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenIndex","type":"uint256"},{"internalType":"uint256","name":"_newMaxSquareBet","type":"uint256"}],"name":"changeMaxSquareBet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint128","name":"_newMaxSquareBetDefault","type":"uint128"}],"name":"changeMaxSquareBetDefault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_newMaximumBetAmount","type":"uint8"}],"name":"changeMaximumBetAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newTreasuryAddress","type":"address"}],"name":"changeTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkMaxSquareBetDefault","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkMaximumBetAmount","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"currentBets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBetsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBetsCountAndValue","outputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenIndex","type":"uint256"}],"name":"getNecessaryBalance","outputs":[{"internalType":"uint256","name":"_necessaryBalance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNextRoundTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_betType","type":"uint256"},{"internalType":"uint256","name":"_betNumber","type":"uint256"}],"name":"getPayoutForType","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWorker","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"maxSquareBets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes16","name":"_gameId","type":"bytes16"},{"internalType":"address[]","name":"_players","type":"address[]"},{"internalType":"uint256","name":"_landID","type":"uint256"},{"internalType":"uint256","name":"_machineID","type":"uint256"},{"internalType":"uint8[]","name":"_betIDs","type":"uint8[]"},{"internalType":"uint8[]","name":"_betValues","type":"uint8[]"},{"internalType":"uint128[]","name":"_betAmount","type":"uint128[]"},{"internalType":"uint8[]","name":"_tokenIndex","type":"uint8[]"},{"internalType":"uint8","name":"_playerCount","type":"uint8"},{"internalType":"uint8[]","name":"_wearableBonus","type":"uint8[]"}],"name":"placeBets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pointerContract","outputs":[{"internalType":"contract PointerInstance","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pointsCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_existingWorker","type":"address"}],"name":"removeWorker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_workerArray","type":"address[]"}],"name":"removeWorkerBulk","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes16","name":"_gameId","type":"bytes16"},{"internalType":"bytes32","name":"_localhash","type":"bytes32"}],"name":"resolveGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newCEO","type":"address"}],"name":"setCEO","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalBets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalPayout","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"contract TreasuryInstance","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newPointerAddress","type":"address"}],"name":"updatePointer","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526000805460ff60a01b1916905534801561001d57600080fd5b506040516139df3803806139df8339818101604052608081101561004057600080fd5b508051602080830151604080850151606090950151600080546001600160a01b031916339081178255808252600180875291849020805460ff191690921790915582518181529251959693959394919390927ff97cbb4246b709036319093e5ff31674b9f6759076d153e1bea1f60392170fc092908290030190a1604080516001600160a01b038316815290517fb10d2a24a8c3686841e966f0c2c64c385cfaecb50a09b16aa3579bfcf3989dcd9181900360200190a150600b80546001600160a01b03199081166001600160a01b03968716179091556002805460ff9490941690931760089490941b610100600160801b0316939093174260881b178255600c8054909316931692909217905560035561387f806101606000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80636a5f3d5e1161011a578063b633b2ab116100ad578063ca4313411161007c578063ca43134114610964578063dca4d1a51461098a578063dcdfe3e8146109a7578063e6adfe37146109c5578063ef37cfe914610a3357610206565b8063b633b2ab1461089f578063bde04890146108a7578063c3170007146108d0578063c4f987a51461093e57610206565b80638c7e347a116100e95780638c7e347a146108435780639eb9a1061461084b578063aa15664514610853578063b14f2a391461087957610206565b80636a5f3d5e146107db578063800edb9d146107f8578063806ad57e146108155780638456cb591461083b57610206565b80633a7c48d61161019d57806358609e091161016c57806358609e091461041d5780635c975abb146107715780635ccc53021461078d57806361d027b3146107b3578063625c3a5f146107bb57610206565b80633a7c48d6146103c65780633f4ba83a146103ea57806350bfba99146103f2578063524b1bbf146103fa57610206565b806327d7874c116101d957806327d7874c1461032857806329dd3c9c146103505780633025d9e2146103735780633066e3421461039957610206565b80630a0f81681461020b5780630ab5cb641461022f57806322af00fa1461026757806325294949146102c8575b600080fd5b610213610a54565b604080516001600160a01b039092168252519081900360200190f35b6102556004803603602081101561024557600080fd5b50356001600160a01b0316610a63565b60408051918252519081900360200190f35b6102846004803603602081101561027d57600080fd5b5035610a75565b604080516001600160a01b03909616865260ff948516602087015292841685840152921660608401526001600160801b039091166080830152519081900360a00190f35b6102ef600480360360208110156102de57600080fd5b50356001600160801b031916610ad7565b604051808581526020018481526020018360ff16815260200182600281111561031457fe5b815260200194505050505060405180910390f35b61034e6004803603602081101561033e57600080fd5b50356001600160a01b0316610b08565b005b6102556004803603604081101561036657600080fd5b5080359060200135610c0c565b61034e6004803603602081101561038957600080fd5b50356001600160a01b0316610cb1565b61034e600480360360408110156103af57600080fd5b506001600160801b03198135169060200135610d20565b6103ce6114c9565b604080516001600160801b039092168252519081900360200190f35b61034e6114d2565b61021361159d565b61034e6004803603604081101561041057600080fd5b50803590602001356115ac565b61034e600480360361014081101561043457600080fd5b6001600160801b03198235169190810190604081016020820135600160201b81111561045f57600080fd5b82018360208201111561047157600080fd5b803590602001918460208302840111600160201b8311171561049257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295843595602086013595919450925060608101915060400135600160201b8111156104ed57600080fd5b8201836020820111156104ff57600080fd5b803590602001918460208302840111600160201b8311171561052057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561056f57600080fd5b82018360208201111561058157600080fd5b803590602001918460208302840111600160201b831117156105a257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156105f157600080fd5b82018360208201111561060357600080fd5b803590602001918460208302840111600160201b8311171561062457600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561067357600080fd5b82018360208201111561068557600080fd5b803590602001918460208302840111600160201b831117156106a657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929560ff853516959094909350604081019250602001359050600160201b81111561070057600080fd5b82018360208201111561071257600080fd5b803590602001918460208302840111600160201b8311171561073357600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061160b945050505050565b610779611d5a565b604080519115158252519081900360200190f35b61034e600480360360208110156107a357600080fd5b50356001600160801b0316611d6a565b610213611de1565b61034e600480360360208110156107d157600080fd5b503560ff16611df0565b610255600480360360208110156107f157600080fd5b5035611e52565b61034e6004803603602081101561080e57600080fd5b5035612021565b61034e6004803603602081101561082b57600080fd5b50356001600160a01b0316612073565b61034e6120cc565b6102556121bb565b6102556121c1565b6107796004803603602081101561086957600080fd5b50356001600160a01b03166121c7565b61034e6004803603602081101561088f57600080fd5b50356001600160a01b03166121dc565b61025561224b565b610255600480360360608110156108bd57600080fd5b5080359060208101359060400135612254565b61034e600480360360208110156108e657600080fd5b810190602081018135600160201b81111561090057600080fd5b82018360208201111561091257600080fd5b803590602001918460208302840111600160201b8311171561093357600080fd5b509092509050612277565b61034e6004803603602081101561095457600080fd5b50356001600160a01b0316612306565b6102556004803603602081101561097a57600080fd5b50356001600160a01b031661235c565b610255600480360360208110156109a057600080fd5b503561236e565b6109af612380565b6040805160ff9092168252519081900360200190f35b61034e600480360360208110156109db57600080fd5b810190602081018135600160201b8111156109f557600080fd5b820183602082011115610a0757600080fd5b803590602001918460208302840111600160201b83111715610a2857600080fd5b509092509050612386565b610a3b612410565b6040805192835260208301919091528051918290030190f35b6000546001600160a01b031681565b60046020526000908152604090205481565b60098181548110610a8557600080fd5b6000918252602090912060029091020180546001909101546001600160a01b038216925060ff600160a01b8304811692600160a81b8104821692600160b01b909104909116906001600160801b031685565b60086020526000908152604090206001810154600282015460078301546009909301549192909160ff918216911684565b806001600160a01b038116610b64576040805162461bcd60e51b815260206004820152601e60248201527f416363657373436f6e74726f6c3a20696e76616c696420616464726573730000604482015290519081900360640190fd5b6000546001600160a01b03163314610bb1576040805162461bcd60e51b81526020600482018190526024820152600080516020613728833981519152604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b03848116919091179182905560408051929091168252517ff97cbb4246b709036319093e5ff31674b9f6759076d153e1bea1f60392170fc0916020908290030190a15050565b600082610c2f5760248211610c22576024610c25565b60005b60ff169050610cab565b6001831415610c475760018211610c22576002610c25565b6002831415610c5f5760018211610c22576002610c25565b6003831415610c775760018211610c22576002610c25565b6004831415610c8f5760028211610c22576003610c25565b6005831415610ca75760028211610c22576003610c25565b5060005b92915050565b6000546001600160a01b03163314610cfe576040805162461bcd60e51b81526020600482018190526024820152600080516020613728833981519152604482015290519081900360640190fd5b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b600054600160a01b900460ff1615610d7f576040805162461bcd60e51b815260206004820152601f60248201527f416363657373436f6e74726f6c3a2063757272656e746c792070617573656400604482015290519081900360640190fd5b3360009081526001602081905260409091205460ff16151514610dd35760405162461bcd60e51b81526004018080602001828103825260238152602001806137486023913960400191505060405180910390fd5b60016001600160801b0319831660009081526008602052604090206009015460ff166002811115610e0057fe5b14610e3c5760405162461bcd60e51b81526004018080602001828103825260258152602001806137d86025913960400191505060405180910390fd5b6001600160801b031982166000908152600860205260408120600901805460ff191660021790555b6001600160801b0319831660009081526008602052604090206003015460ff8216101561100c576001600160801b0319831660009081526008602052604090208054611004919060ff8416908110610eb857fe5b60009182526020808320909101546001600160801b0319871683526008909152604090912060030180546001600160a01b039092169160ff8516908110610efb57fe5b6000918252602080832081830401546001600160801b03198916845260089091526040909220600401805460ff601f9093166101000a90930482169290918616908110610f4457fe5b6000918252602080832081830401546001600160801b03198a16845260089091526040909220600601805460ff601f9093166101000a90930482169290918716908110610f8d57fe5b6000918252602080832081830401546001600160801b03198b16845260089091526040909220600501805460ff601f9093166101000a90930482169290918816908110610fd657fe5b90600052602060002090600291828204019190066010029054906101000a90046001600160801b031661245e565b600101610e64565b506001600160801b031982166000908152600860209081526040808320805482518185028101850190935280835261113293869392919083018282801561107c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161105e575b5050506001600160801b031988166000908152600860209081526040918290206006018054835181840281018401909452808452929450925083018282801561110257602002820191906000526020600020906000905b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116110d35790505b505050506001600160801b031988166000908152600860205260409020600181015460029091015490915061265d565b8151909250829061114a90600a9060208501906132e4565b50505060005b600a5460ff821610156113ac576001600160801b031984166000908152600860205260408120805460ff841690811061118557fe5b6000918252602082200154600a80546001600160a01b0390921693509060ff85169081106111af57fe5b9060005260206000200154111561133457600b546001600160801b03198616600090815260086020526040902060060180546001600160a01b03909216916331297992919060ff861690811061120157fe5b6000918252602080832081830401546001600160801b03198b16845260089091526040909220805460ff601f9093166101000a9093048216929091871690811061124757fe5b600091825260209091200154600a80546001600160a01b039092169160ff881690811061127057fe5b90600052602060002001546040518463ffffffff1660e01b8152600401808460ff168152602001836001600160a01b031681526020018281526020019350505050602060405180830381600087803b1580156112cb57600080fd5b505af11580156112df573d6000803e3d6000fd5b505050506040513d60208110156112f557600080fd5b5050600a805460ff841690811061130857fe5b60009182526020808320909101546001600160a01b038416835260059091526040909120805490910190555b6001600160801b031985166000908152600860205260409020600501805460ff841690811061135f57fe5b600091825260208083206002830401546001600160a01b03949094168352600490526040909120805460019283166010026101000a9093046001600160801b031690920190915501611150565b5060005b6001600160801b0319841660009081526008602052604090205460ff821610156114c3576001600160801b03198416600090815260086020526040902080546114bb919060ff841690811061140157fe5b60009182526020808320909101546001600160801b0319881683526008909152604090912060060180546001600160a01b039092169160ff851690811061144457fe5b6000918252602080832081830401546001600160801b03198a1684526008918290526040909320600781015491018054601f9093166101000a90930460ff908116939181169290871690811061149657fe5b60009182526020918290209181049091015460ff601f9092166101000a900416612cdc565b6001016113b0565b50505050565b60025460081c90565b6000546001600160a01b0316331461151f576040805162461bcd60e51b81526020600482018190526024820152600080516020613728833981519152604482015290519081900360640190fd5b600054600160a01b900460ff166115675760405162461bcd60e51b81526004018080602001828103825260238152602001806137b56023913960400191505060405180910390fd5b6000805460ff60a01b191681556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d169339190a1565b600c546001600160a01b031681565b6000546001600160a01b031633146115f9576040805162461bcd60e51b81526020600482018190526024820152600080516020613728833981519152604482015290519081900360640190fd5b60009182526006602052604090912055565b600054600160a01b900460ff161561166a576040805162461bcd60e51b815260206004820152601f60248201527f416363657373436f6e74726f6c3a2063757272656e746c792070617573656400604482015290519081900360640190fd5b3360009081526001602081905260409091205460ff161515146116be5760405162461bcd60e51b81526004018080602001828103825260238152602001806137486023913960400191505060405180910390fd5b84518651146116fe5760405162461bcd60e51b815260040180806020018281038252602b8152602001806136fd602b913960400191505060405180910390fd5b835183511461173e5760405162461bcd60e51b815260040180806020018281038252602a8152602001806136d3602a913960400191505060405180910390fd5b825185511461177e5760405162461bcd60e51b815260040180806020018281038252602b8152602001806136a8602b913960400191505060405180910390fd5b6000600254901c60ff16865111156117c75760405162461bcd60e51b81526004018080602001828103825260288152602001806138226028913960400191505060405180910390fd5b6001600160801b03198a1660009081526008602052604081206009015460ff1660028111156117f257fe5b1480611828575060026001600160801b03198b1660009081526008602052604090206009015460ff16600281111561182657fe5b145b611879576040805162461bcd60e51b815260206004820152601f60248201527f526f756c657474653a206f6e676f696e672067616d6520646574656374656400604482015290519081900360640190fd5b61188161332f565b6040518061014001604052808b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018460ff168152602001838152602001600160028111156118d357fe5b90526001600160801b03198c166000908152600860209081526040909120825180519394508493919261190b9284929091019061338f565b506020828101516001830155604083015160028301556060830151805161193892600385019201906133e4565b50608082015180516119549160048401916020909101906133e4565b5060a08201518051611970916005840191602090910190613485565b5060c0820151805161198c9160068401916020909101906133e4565b5060e082015160078201805460ff191660ff90921691909117905561010082015180516119c39160088401916020909101906133e4565b5061012082015160098201805460ff191660018360028111156119e257fe5b02179055509050506119f261352b565b60005b88518160ff161015611d4b57868160ff1681518110611a1057fe5b60200260200101516001600160801b0316600b60009054906101000a90046001600160a01b03166001600160a01b03166371da23e9888460ff1681518110611a5457fe5b60200260200101516040518263ffffffff1660e01b8152600401808260ff16815260200191505060206040518083038186803b158015611a9357600080fd5b505afa158015611aa7573d6000803e3d6000fd5b505050506040513d6020811015611abd57600080fd5b50516001600160801b03161015611b055760405162461bcd60e51b815260040180806020018281038252602981526020018061378c6029913960400191505060405180910390fd5b600b5486516001600160a01b03909116906341d4c74f90889060ff8516908110611b2b57fe5b60200260200101518e8460ff1681518110611b4257fe5b60200260200101518a8560ff1681518110611b5957fe5b60200260200101516040518463ffffffff1660e01b8152600401808460ff168152602001836001600160a01b03168152602001826001600160801b031681526020019350505050602060405180830381600087803b158015611bba57600080fd5b505af1158015611bce573d6000803e3d6000fd5b505050506040513d6020811015611be457600080fd5b505085518290879060ff8416908110611bf957fe5b602002602001015160ff1660058110611c0e57fe5b6020020151611d4357600b5486516000916001600160a01b03169063c70620b590899060ff8616908110611c3e57fe5b60200260200101516040518263ffffffff1660e01b8152600401808260ff16815260200191505060206040518083038186803b158015611c7d57600080fd5b505afa158015611c91573d6000803e3d6000fd5b505050506040513d6020811015611ca757600080fd5b505187519091508190611cd390899060ff8616908110611cc357fe5b602002602001015160ff16611e52565b1115611d105760405162461bcd60e51b81526004018080602001828103825260268152602001806136606026913960400191505060405180910390fd5b600183888460ff1681518110611d2257fe5b602002602001015160ff1660058110611d3757fe5b91151560209092020152505b6001016119f5565b50505050505050505050505050565b600054600160a01b900460ff1681565b6000546001600160a01b03163314611db7576040805162461bcd60e51b81526020600482018190526024820152600080516020613728833981519152604482015290519081900360640190fd5b600280546fffffffffffffffffffffffffffffff0080821690911860089390931b16919091179055565b600b546001600160a01b031681565b6000546001600160a01b03163314611e3d576040805162461bcd60e51b81526020600482018190526024820152600080516020613728833981519152604482015290519081900360640190fd5b6002805460ff92831692811618919091179055565b600080611e5d613549565b60005b60095460ff82161015611fe157611e75613567565b60098260ff1681548110611e8557fe5b60009182526020918290206040805160a081018252600290930290910180546001600160a01b038116845260ff600160a01b8204811695850195909552600160a81b8104851692840192909252600160b01b909104909216606082018190526001909201546001600160801b031660808201529150861415611fd8576000611f1b826020015160ff16836040015160ff16610c0c565b606083015160ff908116600090815260076020908152604080832082880151851684528252808320818801519094168352929052205490915081611f905760405162461bcd60e51b81526004018080602001828103825260228152602001806136866022913960400191505060405180910390fd5b611f9a8183612f0b565b955084836020015160ff1660068110611faf57fe5b6020020151861115611fd5578585846020015160ff1660068110611fcf57fe5b60200201525b50505b50600101611e60565b5060005b60068160ff1610156120195761200f828260ff166006811061200357fe5b60200201518590612f6b565b9350600101611fe5565b505050919050565b6000546001600160a01b0316331461206e576040805162461bcd60e51b81526020600482018190526024820152600080516020613728833981519152604482015290519081900360640190fd5b600355565b6000546001600160a01b031633146120c0576040805162461bcd60e51b81526020600482018190526024820152600080516020613728833981519152604482015290519081900360640190fd5b6120c981612fc5565b50565b3360009081526001602081905260409091205460ff161515146121205760405162461bcd60e51b81526004018080602001828103825260238152602001806137486023913960400191505060405180910390fd5b600054600160a01b900460ff161561217f576040805162461bcd60e51b815260206004820152601f60248201527f416363657373436f6e74726f6c3a2063757272656e746c792070617573656400604482015290519081900360640190fd5b6000805460ff60a01b1916600160a01b1781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b60095490565b60035481565b60016020526000908152604090205460ff1681565b6000546001600160a01b03163314612229576040805162461bcd60e51b81526020600482018190526024820152600080516020613728833981519152604482015290519081900360640190fd5b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b60025460881c90565b600760209081526000938452604080852082529284528284209052825290205481565b6000546001600160a01b031633146122c4576040805162461bcd60e51b81526020600482018190526024820152600080516020613728833981519152604482015290519081900360640190fd5b60005b60ff8116821115612301576122f983838360ff168181106122e457fe5b905060200201356001600160a01b0316612fc5565b6001016122c7565b505050565b6000546001600160a01b03163314612353576040805162461bcd60e51b81526020600482018190526024820152600080516020613728833981519152604482015290519081900360640190fd5b6120c9816130d6565b60056020526000908152604090205481565b60066020526000908152604090205481565b60025490565b6000546001600160a01b031633146123d3576040805162461bcd60e51b81526020600482018190526024820152600080516020613728833981519152604482015290519081900360640190fd5b60005b60ff81168211156123015761240883838360ff168181106123f357fe5b905060200201356001600160a01b03166130d6565b6001016123d6565b60008060005b600954811015612456576009818154811061242d57fe5b6000918252602090912060016002909202018101546001600160801b0316939093019201612416565b505060095491565b60ff808316600081815260076020908152604080832089861684528252808320948816835293815283822080546001600160801b038716019055918152600690915290812054156124c15760ff83166000908152600660205260409020546124d2565b6008600254901c6001600160801b03165b60ff80851660009081526007602090815260408083208a8516845282528083209389168352929052205490915081101561253d5760405162461bcd60e51b81526004018080602001828103825260258152602001806137fd6025913960400191505060405180910390fd5b506040805160a0810182526001600160a01b03968716815260ff95861660208201908152948616918101918252928516606084019081526001600160801b03928316608085019081526009805460018101825560009190915294517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af600290960295860180549751945193516001600160a01b0319909816919099161760ff60a01b1916600160a01b938816939093029290921760ff60a81b1916600160a81b918716919091021760ff60b01b1916600160b01b949095169390930293909317909355517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090920180546001600160801b03191692909116919091179055565b6009546060906000906126b7576040805162461bcd60e51b815260206004820152601860248201527f526f756c657474653a206d757374206861766520626574730000000000000000604482015290519081900360640190fd5b6126c3600a6000613595565b6002805470ffffffffffffffffffffffffffffffffff198116184260881b1790556040805160208082018a9052825180830382018152918301909252805191012060259006905060005b600954811015612b67576000612721613567565b6009838154811061272e57fe5b60009182526020918290206040805160a08101825260029390930290910180546001600160a01b038116845260ff600160a01b82048116958501869052600160a81b8204811693850193909352600160b01b90049091166060830152600101546001600160801b0316608082015291501580156127b1575083816040015160ff16145b156127bf5760019150612a83565b6001816020015160ff161480156127d7575060248411155b15612804576000841180156127f55750604081015160ff1660028506145b156127ff57600191505b612a83565b6002816020015160ff161480156128205750604081015160ff16155b15612884576000841180156128365750600a8411155b8061284e57506013841015801561284e5750601c8411155b15612861576002840660011491506127ff565b600084118015612872575060248411155b156127ff576002845b06159150612a83565b6002816020015160ff161480156128a25750806040015160ff166001145b15612905576000841180156128b85750600a8411155b806128d05750601384101580156128d05750601c8411155b156128e157600284061591506127ff565b6000841180156128f2575060248411155b156127ff57600284066001149150612a83565b6003816020015160ff1614801561291d575060248411155b1561297357601384101580156129385750604081015160ff16155b1561294257600191505b600084118015612953575060128411155b80156127f55750806040015160ff16600114156127ff5760019150612a83565b6004816020015160ff1614801561298b575060248411155b156129fe57604081015160ff161580156129a55750600084115b156129b4576003840660011491505b806040015160ff1660011480156129cb5750600084115b156129da576003840660021491505b806040015160ff1660021480156129f15750600084115b156127ff5760038461287b565b6005816020015160ff16148015612a16575060248411155b15612a8357604081015160ff16612a3b57600084118015612a385750600c8411155b91505b806040015160ff1660011415612a5f57600c84118015612a5c575060188411155b91505b806040015160ff1660021415612a8357601884118015612a80575060248411155b91505b8115612af3576000612aba612aa6836020015160ff16846040015160ff16610c0c565b60808401516001600160801b031690612f0b565b600a80546001810182556000919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8015550612b26565b600a805460018101825560009182527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a801555b606081015160ff908116600090815260076020908152604080832082860151851684528252808320948101519093168252929092528120555060010161270d565b50612b74600960006135b3565b8281857f9623f640ae1546f2effbb27dd873d724cabc8e76b7df25287c07fcee7b30cf418989600a60405180806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015612be4578181015183820152602001612bcc565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015612c23578181015183820152602001612c0b565b505050509050018481038252858181548152602001915080548015612c6757602002820191906000526020600020905b815481526020019060010190808311612c53575b5050965050505050505060405180910390a4600a8181805480602002602001604051908101604052809291908181526020018280548015612cc757602002820191906000526020600020905b815481526020019060010190808311612cb3575b50505050509150915091509550959350505050565b6001600160a01b0384166000908152600460209081526040808320546005909252909120541115612e01576001600160a01b0384166000908152600460209081526040808320546005909252822054612d34916131e8565b6003546001600160a01b03871660009081526004602052604081205492935091612d5d91612f0b565b9050808211612d6c5781612d6e565b805b600b5460408051630b5a7f2360e31b815260ff891660048201529051929450612dfa92899286926001600160a01b0390911691635ad3f91891602480820192602092909190829003018186803b158015612dc757600080fd5b505afa158015612ddb573d6000803e3d6000fd5b505050506040513d6020811015612df157600080fd5b50518787613245565b5050612ee1565b6001600160a01b0384166000908152600460209081526040808320546005909252909120541015612ee1576001600160a01b038416600090815260056020908152604080832054600490925290912054612ee1918691612e60916131e8565b600b5460408051630b5a7f2360e31b815260ff8916600482015290516001600160a01b0390921691635ad3f91891602480820192602092909190829003018186803b158015612eae57600080fd5b505afa158015612ec2573d6000803e3d6000fd5b505050506040513d6020811015612ed857600080fd5b50518585613245565b5050506001600160a01b031660009081526004602090815260408083208390556005909152812055565b600082612f1a57506000610cab565b82820282848281612f2757fe5b0414612f645760405162461bcd60e51b815260040180806020018281038252602181526020018061376b6021913960400191505060405180910390fd5b9392505050565b600082820183811015612f64576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b806001600160a01b038116613021576040805162461bcd60e51b815260206004820152601e60248201527f416363657373436f6e74726f6c3a20696e76616c696420616464726573730000604482015290519081900360640190fd5b6001600160a01b03821660009081526001602052604090205460ff16156130795760405162461bcd60e51b815260040180806020018281038252602381526020018061363d6023913960400191505060405180910390fd5b6001600160a01b038216600081815260016020818152604092839020805460ff1916909217909155815192835290517fb10d2a24a8c3686841e966f0c2c64c385cfaecb50a09b16aa3579bfcf3989dcd9281900390910190a15050565b806001600160a01b038116613132576040805162461bcd60e51b815260206004820152601e60248201527f416363657373436f6e74726f6c3a20696e76616c696420616464726573730000604482015290519081900360640190fd5b6001600160a01b03821660009081526001602081905260409091205460ff1615151461318f5760405162461bcd60e51b815260040180806020018281038252602281526020018061361b6022913960400191505060405180910390fd5b6001600160a01b038216600081815260016020908152604091829020805460ff19169055815192835290517f6cfb0504498d3a8155a2a3dd5f41940ad5ab571197ac70f6d6948d189f6a0d279281900390910190a15050565b60008282111561323f576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600c5460408051630680429560e01b81526001600160a01b03888116600483015260248201889052868116604483015260648201869052608482018590529151919092169163068042959160a48083019260609291908290030181600087803b1580156132b157600080fd5b505af11580156132c5573d6000803e3d6000fd5b505050506040513d60608110156132db57600080fd5b50505050505050565b82805482825590600052602060002090810192821561331f579160200282015b8281111561331f578251825591602001919060010190613304565b5061332b9291506135d4565b5090565b60405180610140016040528060608152602001600081526020016000815260200160608152602001606081526020016060815260200160608152602001600060ff168152602001606081526020016000600281111561338a57fe5b905290565b82805482825590600052602060002090810192821561331f579160200282015b8281111561331f57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906133af565b82805482825590600052602060002090601f0160209004810192821561331f5791602002820160005b8382111561344b57835183826101000a81548160ff021916908360ff160217905550926020019260010160208160000104928301926001030261340d565b80156134785782816101000a81549060ff021916905560010160208160000104928301926001030261344b565b505061332b9291506135d4565b8280548282559060005260206000209060010160029004810192821561331f5791602002820160005b838211156134f857835183826101000a8154816001600160801b0302191690836001600160801b031602179055509260200192601001602081600f010492830192600103026134ae565b80156134785782816101000a8154906001600160801b030219169055601001602081600f010492830192600103026134f8565b6040518060a001604052806005906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b50805460008255906000526020600020908101906120c991906135d4565b50805460008255600202906000526020600020908101906120c991906135e9565b5b8082111561332b57600081556001016135d5565b5b8082111561332b5780546001600160b81b03191681556001810180546001600160801b03191690556002016135ea56fe416363657373436f6e74726f6c3a20776f726b6572206e6f74206465746563746564416363657373436f6e74726f6c3a20776f726b657220616c7265616479206578697374526f756c657474653a206e6f7420656e6f75676820746f6b656e7320666f72207061796f7574526f756c657474653a20696e636f72726563742062657420747970652f76616c7565526f756c657474653a20696e636f6e73697374656e7420616d6f756e74206f6620746f6b656e496e646578526f756c657474653a20696e636f6e73697374656e7420616d6f756e74206f6620626574416d6f756e74526f756c657474653a20696e636f6e73697374656e7420616d6f756e74206f66206265747356616c756573416363657373436f6e74726f6c3a2043454f206163636573732064656e696564416363657373436f6e74726f6c3a20776f726b6572206163636573732064656e696564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77526f756c657474653a2062657420616d6f756e74206973206d6f7265207468616e206d6178696d756d416363657373436f6e74726f6c3a2063757272656e6c7479206e6f74207061757365646467526f756c657474653a206e6f74206f6e676f696e672067616d65206465746563746564526f756c657474653a20657863656564696e67206d6178696d756d20626574206c696d6974526f756c657474653a206d6178696d756d20616d6f756e74206f6620626574732072656163686564a264697066735822122056b4bcb01393ab46ce2d56f5671b77ab12b9208492f31d255bbcedc74dd765e364736f6c63430007050033000000000000000000000000bf79ce2fbd819e5abc2327563d02a200255b7cb300000000000000000000000000000000000000000000000d8d726b7177a80000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000011e46db40d4438d1c64f68993ca43b03ac1b6a6b

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000bf79ce2fbd819e5abc2327563d02a200255b7cb300000000000000000000000000000000000000000000000d8d726b7177a80000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000011e46db40d4438d1c64f68993ca43b03ac1b6a6b

-----Decoded View---------------
Arg [0] : _treasuryAddress (address): 0xbf79ce2fbd819e5abc2327563d02a200255b7cb3
Arg [1] : _maxSquareBetDefault (uint128): 250000000000000000000
Arg [2] : _maxNumberBets (uint8): 36
Arg [3] : _pointerAddress (address): 0x11e46db40d4438d1c64f68993ca43b03ac1b6a6b

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000bf79ce2fbd819e5abc2327563d02a200255b7cb3
Arg [1] : 00000000000000000000000000000000000000000000000d8d726b7177a80000
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000024
Arg [3] : 00000000000000000000000011e46db40d4438d1c64f68993ca43b03ac1b6a6b


Deployed ByteCode Sourcemap

6663:15717:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1420:25;;;:::i;:::-;;;;-1:-1:-1;;;;;1420:25:0;;;;;;;;;;;;;;6971:42;;;;;;;;;;;;;;;;-1:-1:-1;6971:42:0;-1:-1:-1;;;;;6971:42:0;;:::i;:::-;;;;;;;;;;;;;;;;7563:17;;;;;;;;;;;;;;;;-1:-1:-1;7563:17:0;;:::i;:::-;;;;-1:-1:-1;;;;;7563:17:0;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7563:17:0;;;;;;;;;;;;;;;;7517:37;;;;;;;;;;;;;;;;-1:-1:-1;7517:37:0;-1:-1:-1;;;;;;7517:37:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2866:221;;;;;;;;;;;;;;;;-1:-1:-1;2866:221:0;-1:-1:-1;;;;;2866:221:0;;:::i;:::-;;18639:736;;;;;;;;;;;;;;;;-1:-1:-1;18639:736:0;;;;;;;:::i;22174:203::-;;;;;;;;;;;;;;;;-1:-1:-1;22174:203:0;-1:-1:-1;;;;;22174:203:0;;:::i;15427:1970::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;15427:1970:0;;;;;;;;:::i;22023:143::-;;;:::i;:::-;;;;-1:-1:-1;;;;;22023:143:0;;;;;;;;;;;;;;4860:138;;;:::i;8033:38::-;;;:::i;20884:204::-;;;;;;;;;;;;;;;;-1:-1:-1;20884:204:0;;;;;;;:::i;13050:2369::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;13050:2369:0;;;;;;;;;;;;;;;-1:-1:-1;;;13050:2369:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13050:2369:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13050:2369:0;;;;;;;;;;;;-1:-1:-1;13050:2369:0;-1:-1:-1;13050:2369:0;;;;-1:-1:-1;13050:2369:0;;;-1:-1:-1;;;13050:2369:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13050:2369:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13050:2369:0;;;;;;;;-1:-1:-1;13050:2369:0;;-1:-1:-1;;;;;13050:2369:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13050:2369:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13050:2369:0;;;;;;;;-1:-1:-1;13050:2369:0;;-1:-1:-1;;;;;13050:2369:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13050:2369:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13050:2369:0;;;;;;;;-1:-1:-1;13050:2369:0;;-1:-1:-1;;;;;13050:2369:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13050:2369:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13050:2369:0;;;;;;;;;;;-1:-1:-1;13050:2369:0;;;;-1:-1:-1;13050:2369:0;;;;-1:-1:-1;;;;13050:2369:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13050:2369:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13050:2369:0;;-1:-1:-1;13050:2369:0;;-1:-1:-1;;;;;13050:2369:0:i;1454:26::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;21096:220;;;;;;;;;;;;;;;;-1:-1:-1;21096:220:0;-1:-1:-1;;;;;21096:220:0;;:::i;7994:32::-;;;:::i;21324:202::-;;;;;;;;;;;;;;;;-1:-1:-1;21324:202:0;;;;:::i;19383:1102::-;;;;;;;;;;;;;;;;-1:-1:-1;19383:1102:0;;:::i;17405:142::-;;;;;;;;;;;;;;;;-1:-1:-1;17405:142:0;;:::i;3095:160::-;;;;;;;;;;;;;;;;-1:-1:-1;3095:160:0;-1:-1:-1;;;;;3095:160:0;;:::i;4713:139::-;;;:::i;20751:125::-;;;:::i;6808:24::-;;;:::i;1489:41::-;;;;;;;;;;;;;;;;-1:-1:-1;1489:41:0;-1:-1:-1;;;;;1489:41:0;;:::i;21534:200::-;;;;;;;;;;;;;;;;-1:-1:-1;21534:200:0;-1:-1:-1;;;;;21534:200:0;;:::i;21742:129::-;;;:::i;7123:77::-;;;;;;;;;;;;;;;;-1:-1:-1;7123:77:0;;;;;;;;;;;;:::i;3263:245::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3263:245:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3263:245:0;;;;;;;;;;-1:-1:-1;3263:245:0;;-1:-1:-1;3263:245:0;-1:-1:-1;3263:245:0;:::i;3877:176::-;;;;;;;;;;;;;;;;-1:-1:-1;3877:176:0;-1:-1:-1;;;;;3877:176:0;;:::i;7020:44::-;;;;;;;;;;;;;;;;-1:-1:-1;7020:44:0;-1:-1:-1;;;;;7020:44:0;;:::i;7073:43::-;;;;;;;;;;;;;;;;-1:-1:-1;7073:43:0;;:::i;21879:136::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4061:254;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4061:254:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4061:254:0;;;;;;;;;;-1:-1:-1;4061:254:0;;-1:-1:-1;4061:254:0;-1:-1:-1;4061:254:0;:::i;20493:250::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1420:25;;;-1:-1:-1;;;;;1420:25:0;;:::o;6971:42::-;;;;;;;;;;;;;:::o;7563:17::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7563:17:0;;;-1:-1:-1;7563:17:0;-1:-1:-1;;;7563:17:0;;;;;-1:-1:-1;;;7563:17:0;;;;;-1:-1:-1;;;7563:17:0;;;;;;;-1:-1:-1;;;;;7563:17:0;;:::o;7517:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2866:221::-;2957:7;-1:-1:-1;;;;;2447:31:0;;2425:111;;;;;-1:-1:-1;;;2425:111:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2093:10:::1;::::0;-1:-1:-1;;;;;2093:10:0::1;2079;:24;2057:106;;;::::0;;-1:-1:-1;;;2057:106:0;;::::1;;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;;;;;;;;;2057:106:0;;;;;;;;;;;;;::::1;;2999:10:::2;:20:::0;;-1:-1:-1;;;;;;2999:20:0::2;-1:-1:-1::0;;;;;2999:20:0;;::::2;::::0;;;::::2;::::0;;;;3037:42:::2;::::0;;3058:10;;;::::2;3037:42:::0;;;::::2;::::0;::::2;::::0;;;;;;::::2;2866:221:::0;;:::o;18639:736::-;18775:7;18804:33;18800:83;;18872:2;18859:10;:15;:24;;18881:2;18859:24;;;18877:1;18859:24;18852:31;;;;;;18800:83;18916:15;18898:34;;18894:82;;;18967:1;18954:10;:14;:22;;18975:1;18954:22;;18894:82;19009:16;18991:35;;18987:83;;;19061:1;19048:10;:14;:22;;19069:1;19048:22;;18987:83;19103:15;19085:34;;19081:82;;;19154:1;19141:10;:14;:22;;19162:1;19141:22;;19081:82;19196:14;19178:33;;19174:81;;;19246:1;19233:10;:14;:22;;19254:1;19233:22;;19174:81;19288:13;19270:32;;19266:80;;;19337:1;19324:10;:14;:22;;19345:1;19324:22;;19266:80;-1:-1:-1;19366:1:0;18639:736;;;;;:::o;22174:203::-;2093:10;;-1:-1:-1;;;;;2093:10:0;2079;:24;2057:106;;;;;-1:-1:-1;;;2057:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2057:106:0;;;;;;;;;;;;;;;22292:15:::1;:77:::0;;-1:-1:-1;;;;;;22292:77:0::1;-1:-1:-1::0;;;;;22292:77:0;;;::::1;::::0;;;::::1;::::0;;22174:203::o;15427:1970::-;2623:6;;-1:-1:-1;;;2623:6:0;;;;2622:7;2600:88;;;;;-1:-1:-1;;;2600:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2255:10:::1;2246:20;::::0;;;:8:::1;:20;::::0;;;;;;;;::::1;;:28;;;2224:113;;;;-1:-1:-1::0;;;2224:113:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15631:21:::2;-1:-1:-1::0;;;;;;15607:14:0;::::2;;::::0;;;:5:::2;:14;::::0;;;;:20:::2;;::::0;::::2;;:45;::::0;::::2;;;;;;;15585:132;;;;-1:-1:-1::0;;;15585:132:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;15730:14:0;::::2;;::::0;;;:5:::2;:14;::::0;;;;:20:::2;;:42:::0;;-1:-1:-1;;15730:42:0::2;15753:19;15730:42;::::0;;15785:328:::2;-1:-1:-1::0;;;;;;15807:14:0;::::2;;::::0;;;:5:::2;:14;::::0;;;;:21:::2;;:28:::0;15803:32:::2;::::0;::::2;;15785:328;;;-1:-1:-1::0;;;;;;15879:14:0;::::2;;::::0;;;:5:::2;:14;::::0;;;;:25;;15857:244:::2;::::0;15879:14;:25:::2;::::0;::::2;::::0;;::::2;;;;;;::::0;;;::::2;::::0;;;;;::::2;::::0;-1:-1:-1;;;;;;15923:14:0;::::2;::::0;;:5:::2;:14:::0;;;;;;;:21:::2;;:24:::0;;-1:-1:-1;;;;;15879:25:0;;::::2;::::0;15923:24:::2;::::0;::::2;::::0;;::::2;;;;;;::::0;;;::::2;::::0;;;;;::::2;;::::0;-1:-1:-1;;;;;;15966:14:0;::::2;::::0;;:5:::2;:14:::0;;;;;;;:24:::2;;:27:::0;;15923:24:::2;::::0;;;;::::2;;::::0;;::::2;::::0;::::2;::::0;15966;;:27;::::2;::::0;;::::2;;;;;;::::0;;;::::2;::::0;;;;;::::2;;::::0;-1:-1:-1;;;;;;16012:14:0;::::2;::::0;;:5:::2;:14:::0;;;;;;;:25:::2;;:28:::0;;15966:27:::2;::::0;;;;::::2;;::::0;;::::2;::::0;::::2;::::0;16012:25;;:28;::::2;::::0;;::::2;;;;;;::::0;;;::::2;::::0;;;;;::::2;;::::0;-1:-1:-1;;;;;;16059:14:0;::::2;::::0;;:5:::2;:14:::0;;;;;;;:24:::2;;:27:::0;;16012:28:::2;::::0;;;;::::2;;::::0;;::::2;::::0;::::2;::::0;16059:24;;:27;::::2;::::0;;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;16059:27:0::2;15857:3;:244::i;:::-;15837:3;;15785:328;;;-1:-1:-1::0;;;;;;;16230:14:0;::::2;16125:19;16230:14:::0;;;:5:::2;:14;::::0;;;;;;;16183:195;;;;;;::::2;::::0;;;;;;;;;;::::2;::::0;16205:10;;16183:195;16230:14;16183:195;;::::2;16230:14:::0;16183:195;;::::2;;;;;;;;;;;;;;;;::::0;;-1:-1:-1;;;;;16183:195:0::2;::::0;;;;;::::2;::::0;::::2;;::::0;;::::2;;;;-1:-1:-1::0;;;;;;;;;16267:14:0;::::2;;::::0;;;:5:::2;:14;::::0;;;;;;;;:25:::2;;16183:195:::0;;;;;;::::2;::::0;;;;;;;;;;;;-1:-1:-1;16267:25:0;-1:-1:-1;16183:195:0;::::2;16267:25:::0;16183:195;;::::2;;;;;;;;;;;;;;;;;;::::0;;::::2;::::0;;::::2;::::0;::::2;;;::::0;;::::2;;::::0;;::::2;::::0;;::::2;::::0;;::::2;::::0;;;::::2;::::0;;::::2;::::0;::::2;::::0;;::::2;;;;;;-1:-1:-1::0;;;;;;;;;;16307:14:0;::::2;;::::0;;;:5:::2;:14;::::0;;;;:21:::2;::::0;::::2;::::0;16343:24:::2;::::0;;::::2;::::0;16307:21;;-1:-1:-1;16183:7:0::2;:195::i;:::-;16155:223:::0;;;;-1:-1:-1;16155:223:0;;::::2;::::0;16156:10:::2;::::0;16155:223:::2;::::0;::::2;::::0;::::2;:::i;:::-;;;;16437:7;16432:602;16454:10;:17:::0;16450:21:::2;::::0;::::2;;16432:602;;;-1:-1:-1::0;;;;;;16510:14:0;::::2;16493;16510::::0;;;:5:::2;:14;::::0;;;;:25;;::::2;::::0;::::2;::::0;;::::2;;;;;;::::0;;;::::2;::::0;;::::2;::::0;16554:10:::2;:13:::0;;-1:-1:-1;;;;;16510:25:0;;::::2;::::0;-1:-1:-1;16554:10:0;:13:::2;::::0;::::2;::::0;;::::2;;;;;;;;;;;;;:17;16550:378;;;16592:8;::::0;-1:-1:-1;;;;;;16645:14:0;::::2;16592:8;16645:14:::0;;;:5:::2;:14;::::0;;;;:25:::2;;:28:::0;;-1:-1:-1;;;;;16592:8:0;;::::2;::::0;:30:::2;::::0;16645:25;:28:::2;::::0;::::2;::::0;;::::2;;;;;;::::0;;;::::2;::::0;;;;;::::2;;::::0;-1:-1:-1;;;;;;16696:14:0;::::2;::::0;;:5:::2;:14:::0;;;;;;;:25;;16645:28:::2;::::0;;;;::::2;;::::0;;::::2;::::0;::::2;::::0;16696:14;;:25;::::2;::::0;;::::2;;;;;;::::0;;;::::2;::::0;;;::::2;::::0;16744:10:::2;:13:::0;;-1:-1:-1;;;;;16696:25:0;;::::2;::::0;16744:13:::2;::::0;::::2;::::0;;::::2;;;;;;;;;;;;;16592:184;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;16592:184:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;;16899:10:0::2;:13:::0;;::::2;::::0;::::2;::::0;;::::2;;;;;;::::0;;;::::2;::::0;;;;;::::2;::::0;-1:-1:-1;;;;;16877:19:0;::::2;::::0;;:11:::2;:19:::0;;;;;;;;;:35;;::::2;16838:74:::0;;16550:378:::2;-1:-1:-1::0;;;;;;16995:14:0;::::2;;::::0;;;:5:::2;:14;::::0;;;;:24:::2;;:27:::0;;::::2;::::0;::::2;::::0;;::::2;;;;;;::::0;;;::::2;::::0;;;::::2;::::0;::::2;;::::0;-1:-1:-1;;;;;16975:17:0;;;::::2;::::0;;:9:::2;:17:::0;;;;;;;;16995:27;;;;::::2;;;;::::0;;::::2;-1:-1:-1::0;;;;;16995:27:0::2;16975:47:::0;;::::2;16942:80:::0;;;16473:3:::2;16432:602;;;;17090:7;17085:305;-1:-1:-1::0;;;;;;17107:14:0;::::2;;::::0;;;:5:::2;:14;::::0;;;;:29;17103:33:::2;::::0;::::2;;17085:305;;;-1:-1:-1::0;;;;;;17195:14:0;::::2;;::::0;;;:5:::2;:14;::::0;;;;:25;;17158:220:::2;::::0;17195:14;:25:::2;::::0;::::2;::::0;;::::2;;;;;;::::0;;;::::2;::::0;;;;;::::2;::::0;-1:-1:-1;;;;;;17239:14:0;::::2;::::0;;:5:::2;:14:::0;;;;;;;:25:::2;;:28:::0;;-1:-1:-1;;;;;17195:25:0;;::::2;::::0;17239:28:::2;::::0;::::2;::::0;;::::2;;;;;;::::0;;;::::2;::::0;;;;;::::2;;::::0;-1:-1:-1;;;;;;17286:14:0;::::2;::::0;;:5:::2;:14:::0;;;;;;;;:27:::2;::::0;::::2;::::0;17332:28;::::2;:31:::0;;17239:28;;;;::::2;;::::0;;::::2;;::::0;;::::2;::::0;17286:27;;::::2;::::0;17332:31;;::::2;::::0;;::::2;;;;;;::::0;;;::::2;::::0;;;;;;::::2;::::0;;::::2;::::0;::::2;::::0;;;;::::2;;::::0;::::2;;17158:18;:220::i;:::-;17138:3;;17085:305;;;;2348:1;15427:1970:::0;;:::o;22023:143::-;22149:5;;22156:1;22149:8;22023:143;:::o;4860:138::-;2093:10;;-1:-1:-1;;;;;2093:10:0;2079;:24;2057:106;;;;;-1:-1:-1;;;2057:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2057:106:0;;;;;;;;;;;;;;;2769:6:::1;::::0;-1:-1:-1;;;2769:6:0;::::1;;;2747:91;;;;-1:-1:-1::0;;;2747:91:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4959:5:::2;4950:14:::0;;-1:-1:-1;;;;4950:14:0::2;::::0;;4980:10:::2;::::0;::::2;::::0;4959:5;4980:10:::2;4860:138::o:0;8033:38::-;;;-1:-1:-1;;;;;8033:38:0;;:::o;20884:204::-;2093:10;;-1:-1:-1;;;;;2093:10:0;2079;:24;2057:106;;;;;-1:-1:-1;;;2057:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2057:106:0;;;;;;;;;;;;;;;21035:26:::1;::::0;;;:13:::1;:26;::::0;;;;;:45;20884:204::o;13050:2369::-;2623:6;;-1:-1:-1;;;2623:6:0;;;;2622:7;2600:88;;;;;-1:-1:-1;;;2600:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2255:10:::1;2246:20;::::0;;;:8:::1;:20;::::0;;;;;;;;::::1;;:28;;;2224:113;;;;-1:-1:-1::0;;;2224:113:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13521:10:::2;:17;13503:7;:14;:35;13481:128;;;;-1:-1:-1::0;;;13481:128:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13666:10;:17;13644:11;:18;:39;13622:131;;;;-1:-1:-1::0;;;13622:131:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13809:11;:18;13788:10;:17;:39;13766:132;;;;-1:-1:-1::0;;;13766:132:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13964:1;13957:5;;:8;;13933:33;;:7;:14;:33;;13911:123;;;;-1:-1:-1::0;;;13911:123:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;14069:14:0;::::2;14093:17;14069:14:::0;;;:5:::2;:14;::::0;;;;:20:::2;;::::0;::::2;;:41;::::0;::::2;;;;;;;:101;;;-1:-1:-1::0;14151:19:0::2;-1:-1:-1::0;;;;;;14127:14:0;::::2;;::::0;;;:5:::2;:14;::::0;;;;:20:::2;;::::0;::::2;;:43;::::0;::::2;;;;;;;14069:101;14047:182;;;::::0;;-1:-1:-1;;;14047:182:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;14242:17;;:::i;:::-;14262:275;;;;;;;;14281:8;14262:275;;;;14304:7;14262:275;;;;14326:10;14262:275;;;;14351:7;14262:275;;;;14373:10;14262:275;;;;14398:10;14262:275;;;;14423:11;14262:275;;;;14449:12;14262:275;;;;;;14476:14;14262:275;;;;14505:21;14262:275;;;;;;;;::::0;;-1:-1:-1;;;;;;14550:14:0;::::2;;::::0;;;:5:::2;:14;::::0;;;;;;;:22;;;;14242:295;;-1:-1:-1;14242:295:0;;14550:14;;:22:::2;::::0;:14;;:22;;::::2;::::0;::::2;:::i;:::-;-1:-1:-1::0;14550:22:0::2;::::0;;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;;;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;-1:-1:-1::0;14550:22:0::2;::::0;::::2;::::0;;;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;;::::2;::::0;::::2;:::i;:::-;-1:-1:-1::0;14550:22:0::2;::::0;::::2;::::0;;;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;;::::2;::::0;::::2;:::i;:::-;-1:-1:-1::0;14550:22:0::2;::::0;::::2;::::0;;;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;;::::2;::::0;::::2;:::i;:::-;-1:-1:-1::0;14550:22:0::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;;-1:-1:-1;;14550:22:0::2;;::::0;;::::2;::::0;;;::::2;::::0;;::::2;::::0;::::2;::::0;;;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;;::::2;::::0;::::2;:::i;:::-;-1:-1:-1::0;14550:22:0::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;;-1:-1:-1;;14550:22:0::2;::::0;;::::2;::::0;::::2;;;;;;;;;;;;;;14585:28;;:::i;:::-;14624:7;14644:768;14660:7;:14;14656:1;:18;;;14644:768;;;14766:10;14777:1;14766:13;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;14724:55:0::2;:8;;;;;;;;;-1:-1:-1::0;;;;;14724:8:0::2;-1:-1:-1::0;;;;;14724:22:0::2;;14747:11;14759:1;14747:14;;;;;;;;;;;;;;;;14724:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;14724:38:0;-1:-1:-1;;;;;14724:55:0::2;;;14698:158;;;;-1:-1:-1::0;;;14698:158:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14873:8;::::0;14921:14;;-1:-1:-1;;;;;14873:8:0;;::::2;::::0;:29:::2;::::0;14921:11;;:14:::2;::::0;::::2;::::0;;::::2;;;;;;;;;;;14954:8;14963:1;14954:11;;;;;;;;;;;;;;;;14984:10;14995:1;14984:13;;;;;;;;;;;;;;;;14873:139;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;14873:139:0::2;;;;;;-1:-1:-1::0;;;;;14873:139:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;;15048:14:0;;15034:13;;15048:11;;:14:::2;::::0;::::2;::::0;;::::2;;;;;;;;;;;15034:29;;;;;;;;;;;;;15029:372;;15105:8;::::0;15135:14;;15084:18:::2;::::0;-1:-1:-1;;;;;15105:8:0::2;::::0;:29:::2;::::0;15135:11;;:14:::2;::::0;::::2;::::0;;::::2;;;;;;;;;;;15105:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;15105:45:0;15219:14;;15105:45;;-1:-1:-1;15105:45:0;;15199:35:::2;::::0;15219:11;;:14:::2;::::0;::::2;::::0;;::::2;;;;;;;;;;;15199:35;;:19;:35::i;:::-;:49;;15169:161;;;;-1:-1:-1::0;;;15169:161:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15381:4;15349:13;15363:11;15375:1;15363:14;;;;;;;;;;;;;;;;15349:29;;;;;;;;;:36:::0;::::2;;:29;::::0;;::::2;;:36:::0;-1:-1:-1;15029:372:0::2;14676:3;;14644:768;;;2348:1;;;13050:2369:::0;;;;;;;;;;:::o;1454:26::-;;;-1:-1:-1;;;1454:26:0;;;;;:::o;21096:220::-;2093:10;;-1:-1:-1;;;;;2093:10:0;2079;:24;2057:106;;;;;-1:-1:-1;;;2057:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2057:106:0;;;;;;;;;;;;;;;21249:5:::1;::::0;;21231:31;;;;;;::::1;21261:1;21282:26:::0;;;;21273:35;;;;::::1;::::0;;21096:220::o;7994:32::-;;;-1:-1:-1;;;;;7994:32:0;;:::o;21324:202::-;2093:10;;-1:-1:-1;;;;;2093:10:0;2079;:24;2057:106;;;;;-1:-1:-1;;;2057:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2057:106:0;;;;;;;;;;;;;;;21466:5:::1;::::0;;21460:15:::1;21495:23:::0;;::::1;21460:15:::0;;::::1;21451:24;21486:32:::0;;;::::1;::::0;;21324:202::o;19383:1102::-;19497:25;19540:28;19579:29;;:::i;:::-;19626:8;19621:678;19645:4;:11;19640:16;;;;19621:678;;;19679:12;;:::i;:::-;19694:4;19699:2;19694:8;;;;;;;;;;;;;;;;;;;19679:23;;;;;;;;19694:8;;;;;;;19679:23;;-1:-1:-1;;;;;19679:23:0;;;;;-1:-1:-1;;;19679:23:0;;;;;;;;;;;-1:-1:-1;;;19679:23:0;;;;;;;;;;;-1:-1:-1;;;19679:23:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19679:23:0;;;;;;-1:-1:-1;19721:27:0;;19717:571;;;19771:15;19789:37;19806:1;:9;;;19789:37;;19817:1;:8;;;19789:37;;:16;:37::i;:::-;19875:12;;;;19863:25;;;;19845:15;19863:25;;;:11;:25;;;;;;;;19889:9;;;;19863:36;;;;;;;;;19900:8;;;;19863:46;;;;;;;;;;19771:55;;-1:-1:-1;19960:11:0;19930:119;;;;-1:-1:-1;;;19930:119:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20093:20;:7;20105;20093:11;:20::i;:::-;20070:43;;20161:11;20173:1;:9;;;20161:22;;;;;;;;;;;;;20138:20;:45;20134:139;;;20233:20;20208:11;20220:1;:9;;;20208:22;;;;;;;;;;;;:45;20134:139;19717:571;;;-1:-1:-1;19658:4:0;;19621:678;;;;20316:8;20311:167;20335:18;20330:2;:23;;;20311:167;;;20396:70;20436:11;20448:2;20436:15;;;;;;;;;;;;;20396:17;;:21;:70::i;:::-;20376:90;-1:-1:-1;20355:4:0;;20311:167;;;;19383:1102;;;;;:::o;17405:142::-;2093:10;;-1:-1:-1;;;;;2093:10:0;2079;:24;2057:106;;;;;-1:-1:-1;;;2057:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2057:106:0;;;;;;;;;;;;;;;17514:9:::1;:25:::0;17405:142::o;3095:160::-;2093:10;;-1:-1:-1;;;;;2093:10:0;2079;:24;2057:106;;;;;-1:-1:-1;;;2057:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2057:106:0;;;;;;;;;;;;;;;3201:46:::1;3226:10;3201;:46::i;:::-;3095:160:::0;:::o;4713:139::-;2255:10;2246:20;;;;:8;:20;;;;;;;;;;;:28;;;2224:113;;;;-1:-1:-1;;;2224:113:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2623:6:::1;::::0;-1:-1:-1;;;2623:6:0;::::1;;;2622:7;2600:88;;;::::0;;-1:-1:-1;;;2600:88:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;4807:6:::2;:13:::0;;-1:-1:-1;;;;4807:13:0::2;-1:-1:-1::0;;;4807:13:0::2;::::0;;4836:8:::2;::::0;::::2;::::0;4807:6;4836:8:::2;4713:139::o:0;20751:125::-;20857:4;:11;20751:125;:::o;6808:24::-;;;;:::o;1489:41::-;;;;;;;;;;;;;;;:::o;21534:200::-;2093:10;;-1:-1:-1;;;;;2093:10:0;2079;:24;2057:106;;;;;-1:-1:-1;;;2057:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2057:106:0;;;;;;;;;;;;;;;21654:8:::1;:72:::0;;-1:-1:-1;;;;;;21654:72:0::1;-1:-1:-1::0;;;;;21654:72:0;;;::::1;::::0;;;::::1;::::0;;21534:200::o;21742:129::-;21853:5;;21860:3;21853:10;21742:129;:::o;7123:77::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3263:245::-;2093:10;;-1:-1:-1;;;;;2093:10:0;2079;:24;2057:106;;;;;-1:-1:-1;;;2057:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2057:106:0;;;;;;;;;;;;;;;3390:11:::1;3385:116;3407:26;::::0;::::1;::::0;-1:-1:-1;3385:116:0::1;;;3459:30;3470:11;;3482:5;3470:18;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;3470:18:0::1;3459:10;:30::i;:::-;3435:7;;3385:116;;;;3263:245:::0;;:::o;3877:176::-;2093:10;;-1:-1:-1;;;;;2093:10:0;2079;:24;2057:106;;;;;-1:-1:-1;;;2057:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2057:106:0;;;;;;;;;;;;;;;3991:54:::1;4019:15;3991:13;:54::i;7020:44::-:0;;;;;;;;;;;;;:::o;7073:43::-;;;;;;;;;;;;;:::o;21879:136::-;21998:5;;21879:136;:::o;4061:254::-;2093:10;;-1:-1:-1;;;;;2093:10:0;2079;:24;2057:106;;;;;-1:-1:-1;;;2057:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2057:106:0;;;;;;;;;;;;;;;4192:11:::1;4187:121;4209:27;::::0;::::1;::::0;-1:-1:-1;4187:121:0::1;;;4262:34;4276:12;;4289:5;4276:19;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;4276:19:0::1;4262:13;:34::i;:::-;4238:7;;4187:121;;20493:250:::0;20574:10;20586:4;20613:6;20608:88;20629:4;:11;20625:15;;20608:88;;;20671:4;20676:1;20671:7;;;;;;;;;;;;;;;;:13;:7;;;;;:13;;;-1:-1:-1;;;;;20671:13:0;20662:22;;;;;20642:3;20608:88;;;-1:-1:-1;;20716:4:0;:11;20493:250;:::o;8886:744::-;9068:24;;;;;;;;:11;:24;;;;;;;;:34;;;;;;;;;;:43;;;;;;;;;;;:53;;-1:-1:-1;;;;;9068:53:0;;;;;9158:26;;;:13;:26;;;;;;;:31;:106;;9238:26;;;;;;;:13;:26;;;;;;9158:106;;;9220:1;9213:5;;:8;;-1:-1:-1;;;;;9158:106:0;;9299:24;;;;;;;;:11;:24;;;;;;;;:34;;;;;;;;;;:43;;;;;;;;;;9134:130;;-1:-1:-1;9299:60:0;-1:-1:-1;9299:60:0;9277:147;;;;-1:-1:-1;;;9277:147:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9447:174:0;;;;;;;;-1:-1:-1;;;;;9447:174:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9447:174:0;;;;;;;;;9437:4;:185;;;;;;;-1:-1:-1;9437:185:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9437:185:0;;;;;;;;-1:-1:-1;;;;9437:185:0;-1:-1:-1;;;9437:185:0;;;;;;;;;;;-1:-1:-1;;;;9437:185:0;-1:-1:-1;;;9437:185:0;;;;;;;;-1:-1:-1;;;;9437:185:0;-1:-1:-1;;;9437:185:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9437:185:0;;;;;;;;;;;8886:744::o;9638:3404::-;9962:4;:11;9867:16;;9898:14;;9940:89;;;;;-1:-1:-1;;;9940:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10042:17;10049:10;;10042:17;:::i;:::-;10082:5;;;-1:-1:-1;;10081:17:0;;10072:26;10118:15;10095:3;10118:20;10109:29;;;10207:68;;;;;;;;;;;;;;;;;;;;;;;;;10179:111;;;;;10304:2;;10160:146;10151:155;;10324:6;10319:2435;10340:4;:11;10336:15;;10319:2435;;;10373:8;10404:12;;:::i;:::-;10419:4;10424:1;10419:7;;;;;;;;;;;;;;;;;10404:22;;;;;;;;10419:7;;;;;;;;10404:22;;-1:-1:-1;;;;;10404:22:0;;;;;-1:-1:-1;;;10404:22:0;;;;;;;;;;-1:-1:-1;;;10404:22:0;;;;;;;;;;;-1:-1:-1;;;10404:22:0;;;;;;;;;;;;-1:-1:-1;;;;;10404:22:0;;;;;;-1:-1:-1;10445:33:0;:55;;;;;10494:6;10482:1;:8;;;:18;;;10445:55;10441:1969;;;10527:4;10521:10;;10441:1969;;;10575:15;10557:1;:9;;;:34;;;:50;;;;;10605:2;10595:6;:12;;10557:50;10553:1857;;;10641:1;10632:6;:10;:36;;;;-1:-1:-1;10660:8:0;;;;10646:22;;10655:1;10646:6;:10;:22;10632:36;10628:95;;;10699:4;10693:10;;10628:95;10553:1857;;;10766:16;10748:1;:9;;;:35;;;:52;;;;-1:-1:-1;10787:8:0;;;;:13;;;10748:52;10744:1666;;;10835:1;10826:6;:10;:26;;;;;10850:2;10840:6;:12;;10826:26;10825:62;;;;10868:2;10858:6;:12;;:28;;;;;10884:2;10874:6;:12;;10858:28;10821:288;;;10928:1;10919:6;:10;10933:1;10919:15;10912:23;;10821:288;;;10997:1;10988:6;:10;:26;;;;;11012:2;11002:6;:12;;10988:26;10984:106;;;11059:1;11050:6;:10;;:15;;-1:-1:-1;10744:1666:0;;;11152:16;11134:1;:9;;;:35;;;:52;;;;;11173:1;:8;;;:13;;11185:1;11173:13;11134:52;11130:1280;;;11221:1;11212:6;:10;:26;;;;;11236:2;11226:6;:12;;11212:26;11211:62;;;;11254:2;11244:6;:12;;:28;;;;;11270:2;11260:6;:12;;11244:28;11207:288;;;11314:1;11305:6;:10;:15;;-1:-1:-1;11207:288:0;;;11383:1;11374:6;:10;:26;;;;;11398:2;11388:6;:12;;11374:26;11370:106;;;11445:1;11436:6;:10;11450:1;11436:15;11429:23;;11130:1280;;;11538:15;11520:1;:9;;;:34;;;:50;;;;;11568:2;11558:6;:12;;11520:50;11516:894;;;11605:2;11595:6;:12;;:29;;;;-1:-1:-1;11611:8:0;;;;:13;;;11595:29;11591:88;;;11655:4;11649:10;;11591:88;11710:1;11701:6;:10;:26;;;;;11725:2;11715:6;:12;;11701:26;:43;;;;;11731:1;:8;;;:13;;11743:1;11731:13;11697:102;;;11775:4;11769:10;;11516:894;;;11842:14;11824:1;:9;;;:33;;;:49;;;;;11871:2;11861:6;:12;;11824:49;11820:590;;;11898:8;;;;:13;;;:27;;;;;11924:1;11915:6;:10;11898:27;11894:56;;;11943:1;11934:6;:10;11948:1;11934:15;11927:23;;11894:56;11973:1;:8;;;:13;;11985:1;11973:13;:27;;;;;11999:1;11990:6;:10;11973:27;11969:56;;;12018:1;12009:6;:10;12023:1;12009:15;12002:23;;11969:56;12048:1;:8;;;:13;;12060:1;12048:13;:27;;;;;12074:1;12065:6;:10;12048:27;12044:56;;;12093:1;12084:6;:10;;11820:590;12144:13;12126:1;:9;;;:32;;;:48;;;;;12172:2;12162:6;:12;;12126:48;12122:288;;;12199:8;;;;:13;;12195:53;;12230:1;12221:6;:10;:26;;;;;12245:2;12235:6;:12;;12221:26;12214:34;;12195:53;12271:1;:8;;;:13;;12283:1;12271:13;12267:54;;;12302:2;12293:6;:11;:27;;;;;12318:2;12308:6;:12;;12293:27;12286:35;;12267:54;12344:1;:8;;;:13;;12356:1;12344:13;12340:54;;;12375:2;12366:6;:11;:27;;;;;12391:2;12381:6;:12;;12366:27;12359:35;;12340:54;12430:3;12426:252;;;12454:14;12471:90;12505:37;12522:1;:9;;;12505:37;;12533:1;:8;;;12505:37;;:16;:37::i;:::-;12471:7;;;;-1:-1:-1;;;;;12471:11:0;;;:90::i;:::-;12580:10;:23;;;;;;;-1:-1:-1;12580:23:0;;;;;;;-1:-1:-1;12426:252:0;;;12644:10;:18;;;;;;;12660:1;12644:18;;;;;;12426:252;12704:12;;;;12692:25;;;;12741:1;12692:25;;;:11;:25;;;;;;;;12718:9;;;;12692:36;;;;;;;;;12729:8;;;;12692:46;;;;;;;;;;;:50;-1:-1:-1;10353:3:0;;10319:2435;;;-1:-1:-1;12766:11:0;12773:4;;12766:11;:::i;:::-;12912:10;12891:6;12869:7;12795:163;12820:8;12843:11;12937:10;12795:163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12992:10;13017:6;12971:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9638:3404;;;;;;;;:::o;17555:1076::-;-1:-1:-1;;;;;17754:18:0;;;;;;:9;:18;;;;;;;;;17731:11;:20;;;;;;;:41;17727:829;;;-1:-1:-1;;;;;17833:18:0;;17791:14;17833:18;;;:9;:18;;;;;;;;;17808:11;:20;;;;;;:44;;:24;:44::i;:::-;17907:9;;-1:-1:-1;;;;;17884:18:0;;17867:14;17884:18;;;:9;:18;;;;;;17791:61;;-1:-1:-1;17867:14:0;17884:33;;:22;:33::i;:::-;17867:50;;17952:6;17943;:15;:67;;18004:6;17943:67;;;17978:6;17943:67;18106:8;;:37;;;-1:-1:-1;;;18106:37:0;;;;;;;;;;;17934:76;;-1:-1:-1;18027:195:0;;18055:7;;17934:76;;-1:-1:-1;;;;;18106:8:0;;;;:24;;:37;;;;;;;;;;;;;;;:8;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18106:37:0;18162:12;18193:14;18027:9;:195::i;:::-;17727:829;;;;;-1:-1:-1;;;;;18276:18:0;;;;;;:9;:18;;;;;;;;;18253:11;:20;;;;;;;:41;18249:307;;;-1:-1:-1;;;;;18388:20:0;;;;;;:11;:20;;;;;;;;;18365:9;:18;;;;;;;18311:233;;18339:7;;18365:44;;:22;:44::i;:::-;18428:8;;:37;;;-1:-1:-1;;;18428:37:0;;;;;;;;;;;-1:-1:-1;;;;;18428:8:0;;;;:24;;:37;;;;;;;;;;;;;;;:8;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18428:37:0;18484:12;18515:14;18311:9;:233::i;:::-;-1:-1:-1;;;;;;;;18566:18:0;18587:1;18566:18;;;:9;:18;;;;;;;;:22;;;18599:11;:20;;;;;:24;17555:1076::o;698:248::-;756:7;780:6;776:47;;-1:-1:-1;810:1:0;803:8;;776:47;847:5;;;851:1;847;:5;:1;871:5;;;;;:10;863:56;;;;-1:-1:-1;;;863:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;937:1;698:248;-1:-1:-1;;;698:248:0:o;321:179::-;379:7;411:5;;;435:6;;;;427:46;;;;;-1:-1:-1;;;427:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;3516:353;3614:10;-1:-1:-1;;;;;2447:31:0;;2425:111;;;;;-1:-1:-1;;;2425:111:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3664:20:0;::::1;;::::0;;;:8:::1;:20;::::0;;;;;::::1;;:29;3642:114;;;;-1:-1:-1::0;;;3642:114:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;3769:20:0;::::1;;::::0;;;3792:4:::1;3769:20;::::0;;;;;;;;:27;;-1:-1:-1;;3769:27:0::1;::::0;;::::1;::::0;;;3814:47;;;;;;;::::1;::::0;;;;;;;;::::1;3516:353:::0;;:::o;4323:382::-;4429:15;-1:-1:-1;;;;;2447:31:0;;2425:111;;;;;-1:-1:-1;;;2425:111:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4484:25:0;::::1;;::::0;;;:8:::1;:25;::::0;;;;;;;;::::1;;:33;;;4462:117;;;;-1:-1:-1::0;;;4462:117:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;4592:25:0;::::1;4620:5;4592:25:::0;;;:8:::1;:25;::::0;;;;;;;;:33;;-1:-1:-1;;4592:33:0::1;::::0;;4643:54;;;;;;;::::1;::::0;;;;;;;;::::1;4323:382:::0;;:::o;508:182::-;566:7;599:1;594;:6;;586:49;;;;;-1:-1:-1;;;586:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;658:5:0;;;508:182::o;8515:363::-;8714:15;;:156;;;-1:-1:-1;;;8714:156:0;;-1:-1:-1;;;;;8714:156:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:15;;;;;:25;;:156;;;;;;;;;;;;;;:15;;:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;8515:363:0:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Swarm Source

ipfs://56b4bcb01393ab46ce2d56f5671b77ab12b9208492f31d255bbcedc74dd765e3
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.