Contract 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b 4

 

Contract Overview

Balance:
498.31354250121233957 BNB

BNB Value:
$166,665.95 (@ $334.46/BNB)

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xa2b3c4ba0d1080665acd4671a967d11dd873becd4d5c89e2831f0f192527300fBet Bull112343582021-09-25 22:41:218 hrs 55 mins ago0xe720e49bc638f2c40898db056d638392e1c2d358 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.002 BNB0.00011106
0x9706679d8829a854be432fc2807fc6f6c168bfe6d782afd42c184f502bb2aaf4Bet Bull112009932021-09-24 18:43:151 day 12 hrs ago0x7bcc84443e8aca205f8b9f3b23166af483732e02 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.008429576719303 BNB0.000122166
0xcdc2230f7c0ae1afaf03dd5a7ce995f313e640e0c76dbaad2517cd3a00eceed1Bet Bear111994502021-09-24 17:25:461 day 14 hrs ago0x7bcc84443e8aca205f8b9f3b23166af483732e02 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.018998441719303 BNB0.000111115
0xa1b68f914c41d92bb0a333f3dddfd53e7e209dc1a2b256ab329820f1dc79fdbcClaim111965872021-09-24 15:02:371 day 16 hrs ago0xbd44df083a07694760b264244e2e33eeccf38190 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.00012548
0x0138727a7930cd6bf6352719cf02b6f2463d8123646037aededf84b646bcae0fClaim111965872021-09-24 15:02:371 day 16 hrs ago0xbd44df083a07694760b264244e2e33eeccf38190 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000405435
0xe1b2fdddb5f194f2190fe3b7b69cc7172bb187a655330c83aa653371d8e229e1Swap Exact ETH F...111698562021-09-23 16:42:372 days 14 hrs ago0xf69a2acf3202c7be08973811b4d8d878cd883ad8 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.0061088 BNB0.00011494
0x2d790fafb3ad3214fad3fb40b1df41657b6978ddd561789f9794eb5b2f028b74Swap Exact ETH F...111697602021-09-23 16:37:492 days 14 hrs ago0xf69a2acf3202c7be08973811b4d8d878cd883ad8 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.0061088 BNB0.00011494
0x558757a71944e7a915a281a928a421336106018bdee3b050187e7e10a536ad57Swap Exact ETH F...111697192021-09-23 16:35:462 days 15 hrs ago0xf69a2acf3202c7be08973811b4d8d878cd883ad8 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.00061088 BNB0.00011494
0x59d9a595bc1bc15e0d203475d8129cd45a4a8b8af92a7da9d30c0dfd8321fa8aSwap Exact ETH F...111695782021-09-23 16:28:432 days 15 hrs ago0xf69a2acf3202c7be08973811b4d8d878cd883ad8 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.00061088 BNB0.00011494
0x8f0c2c8bac205208a6a6cf62899c5470a8d7b20ff76c8570e0fc5594ba2e2534Swap Exact ETH F...111548782021-09-23 4:06:303 days 3 hrs ago0xf69a2acf3202c7be08973811b4d8d878cd883ad8 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.00061088 BNB0.00011494
0x329609bffa0d543a347aa3b0e6f4b694f580e2bd3d58842025a9773cf938383fSwap Exact ETH F...111547642021-09-23 4:00:483 days 3 hrs ago0xf69a2acf3202c7be08973811b4d8d878cd883ad8 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.00061088 BNB0.00011512
0x028590a0c14cb4e2dfee3978e9ce9dab58aa81c749e25672ff6680f33ee0759cSwap Exact ETH F...111547232021-09-23 3:58:453 days 3 hrs ago0xf69a2acf3202c7be08973811b4d8d878cd883ad8 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.00061088 BNB0.00011512
0x56594c9187c3399b3e29af3383c416ecb00c96841a63c7f5e07e6a86ab659377Bet Bull111041012021-09-21 9:28:284 days 22 hrs ago0x533dbdda6edc3e80289abe68ed06af33864cb448 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.01 BNB0.000133272
0x4c962eb285f1bf7d4de190b1ecee7493592adf8b75eee549d0ff526f742b78e7Bet Bull110662912021-09-20 1:52:476 days 5 hrs ago0x855a9650f5f7c30a884c4304ff2c84a506b23451 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.0022053525 BNB0.000133272
0xf8f2451cabdb1767ba8fbd4f137387418f352da8eedf0654ac7586d0934b0ab0Bet Bear110662912021-09-20 1:52:476 days 5 hrs ago0x855a9650f5f7c30a884c4304ff2c84a506b23451 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.001 BNB0.000133338
0x7666eef4f463ecc960fd0d6984be526fbcb6e52a8ecb20e5890b03318f45eae2Bet Bear110662912021-09-20 1:52:476 days 5 hrs ago0x855a9650f5f7c30a884c4304ff2c84a506b23451 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.001 BNB0.000133338
0x0cfc4b3e7ef57a3eac0da82ef795ae060e4e6f8a821cd921bd4c6b6c0209619eBet Bear110338172021-09-18 22:34:197 days 9 hrs ago0xddfd6071dba459082fc84b07d51a4fddd0082564 IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0.004627489 BNB0.000133338
0xbd69b4a8413341fc59550e7b42969838b783270a086df458b2be3701a1aa2142Claim110119632021-09-18 4:17:338 days 3 hrs ago0x21d7f1b280443f0dd1fcf74f0bc979df94e24c5c IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.00012548
0x285ba373640b0dacaa3a10b72fb2fe9233deaa7be437f34b0d7cdb76026c3107Claim Treasury110089482021-09-18 1:46:428 days 5 hrs ago0x21d7f1b280443f0dd1fcf74f0bc979df94e24c5c IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.00022189
0x575c626934a40a1cfc302b5ab508f453f80542055c626aff8791dc1cd22fe21aClaim110089172021-09-18 1:45:098 days 5 hrs ago0x21d7f1b280443f0dd1fcf74f0bc979df94e24c5c IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.00025096
0x3ef39ed6974d0cf98cc3963ea8150eaaac46fc63c45801b62c360370a8f280fdClaim110078702021-09-18 0:52:438 days 6 hrs ago0x21d7f1b280443f0dd1fcf74f0bc979df94e24c5c IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.0006274
0x294492861aaaf47d37bc5f72bbc0976d8a8849805b3c0ddb3ddfd8f5a839a418Claim110053832021-09-17 22:48:228 days 8 hrs ago0x21d7f1b280443f0dd1fcf74f0bc979df94e24c5c IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.00012548
0x60e18967860bf5e4a8b863dfd6295abc0b188c9a9292534ed7dfebfeb6e4bf5fClaim Treasury110053832021-09-17 22:48:228 days 8 hrs ago0x21d7f1b280443f0dd1fcf74f0bc979df94e24c5c IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000110945
0xa687ebf9448fd6c85405adf3850af59c7db213a3bec98ddf49a7e1755c16b2c7Claim Treasury110053822021-09-17 22:48:198 days 8 hrs ago0x21d7f1b280443f0dd1fcf74f0bc979df94e24c5c IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000266268
0x0723153798f49728a1d2c51946cd8a20c2d52898b0491a58e5688c521e755632Claim Treasury110043272021-09-17 21:55:348 days 9 hrs ago0x21d7f1b280443f0dd1fcf74f0bc979df94e24c5c IN  0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0 BNB0.000133134
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x0138727a7930cd6bf6352719cf02b6f2463d8123646037aededf84b646bcae0f111965872021-09-24 15:02:371 day 16 hrs ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0xbd44df083a07694760b264244e2e33eeccf381900.029840074234223484 BNB
0xb2ec757979656429b96d148c936cfe4b93531b7d83c3023dc64446783c8dc4db105670442021-09-02 14:53:5223 days 16 hrs ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0xf87386cf2e7fba514ac8b06ceae6e41ccf8d640e0.009406573251889338 BNB
0xdcfcdf0d3f5858a47180137e30f76633330be05d0b48b7adae8c789adc38d3cf105123622021-08-31 16:45:1425 days 14 hrs ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x44f9678317402b5f59f9ea118bb67141af2b9bb90.011947073840286459 BNB
0x481aee891529ec3e97eb1e389e431e1ede636f05bf6e2050aeb76ab9280d0498103705352021-08-26 16:34:2930 days 15 hrs ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x509abbe0321b836244e0b5acce175e888fb68c6d0.002674858986840177 BNB
0xda77a65eff3e59b082347652ff31b4b7c8408edf27f9fccabd97494234cab09e103705352021-08-26 16:34:2930 days 15 hrs ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x509abbe0321b836244e0b5acce175e888fb68c6d0.005758947307875584 BNB
0x828d7512ad2f044a62abdb57c9be9026c608f357e68c527a424e9c22e2db60a6103705352021-08-26 16:34:2930 days 15 hrs ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x509abbe0321b836244e0b5acce175e888fb68c6d0.019294343227526691 BNB
0x581a681f8296e7b29eee26f3e1fddff6c45fd29770f46b9c73e3cb67ded4f174103401242021-08-25 15:07:5131 days 16 hrs ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0xc6def184e8f6af7e46235ee431420a59e49e43c50.017448507367735171 BNB
0x777c446506af04ee4e7df26289e197135d13f3938c56dfb39cb9ea1e3091ce19103108952021-08-24 14:42:4332 days 16 hrs ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x55e7d0da64956ccbf0840a492970423556597cbb0.010567953345719697 BNB
0x8fc926aa47190ab77d118ab04fb2d6c11e5d9cbfebaf9545a9daa77569879bb4102976502021-08-24 3:34:5433 days 4 hrs ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0xc672708b2f2e702b44765c7801e7655acf41c2fb0.001593193095715568 BNB
0x882b75174abd99d65879e4c5c638d83006c964b94f3e47a587fb7e9ccd4941d5102828332021-08-23 15:08:3833 days 16 hrs ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x653609ae7eb3a6f5ba30a0546f0593cf8ec0a85b0.030313343002258376 BNB
0xe4d055bed7a82bef341b7133f2e1405e644d29cf96672321e5776094460a4b90102753112021-08-23 8:47:0933 days 22 hrs ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b 0x56b81bff33110b7f810828ec35f0049aa9078d8f286.30285743274866406 BNB
0x88572d99c66d3294c00e8a7046ccabf6d2ef5cb3ada3f555bde0c61ff4e3f284102597542021-08-22 19:48:5734 days 11 hrs ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0xb2730d1eeb6708f0a6299d76b12dc241b8fa951c0.060324270733033203 BNB
0xbb46266e5d6b277394e5a1de46271b621524dd2ab33ea3e860a77c35b5e3a4c2102231372021-08-21 13:07:1535 days 18 hrs ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0xbc64becea5afa5452467d70378206ed77bda38280.005563590142988084 BNB
0x73843e2ca95f6aecac5bd8d3d31ee66108522c8d9228e6f35ec555e4aa19dbc5102171022021-08-21 8:02:3535 days 23 hrs ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x9c733f7f09c070fce9fa033747eab0a5f7d6c30c0.1348 BNB
0x3ffa176f65916fe247289c3b80333cd643c32df2689513bfa463b8b2454e6afd101833822021-08-20 3:42:3137 days 3 hrs ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x9cd40dd365dae35cad2728321a58d229114c329a0.016031797277568111 BNB
0x6599aa9742b917ef99ebb638b062a59e1efdb7bfce17057fc371beef0f94b8af101821052021-08-20 2:38:3937 days 4 hrs ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x3c9e392cffaadbd39e923848704b4921cb453b180.00325491610106006 BNB
0xc7313ff3c4a0c4dceda7d62b229aa76648b3780df5abe1ed59936c56f7d96051101809442021-08-20 1:40:3637 days 5 hrs ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0xbe2cebfe98052b73cd4bc66cc69df514ea9eadb70.053580432783300485 BNB
0xdc83ce6d442fe19007c0ea381759e83e736767ca47dafcb0915e13d3017cd1fa101808812021-08-20 1:37:2737 days 5 hrs ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0xaf66a36472105e483f021a0b7bcf48bf9b9d76910.008166835155985012 BNB
0x9e5b4eac05894bb533852603ad14a468be133903a818e2d3da692b1fd46f1d53101790592021-08-20 0:06:2137 days 7 hrs ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0xba57073b9c1f02114e2e91f50d287a778413c3310.177065252825145787 BNB
0x7dd89048b503bed2bf02bb0c4914dc50da100b371f2d70298138f2cfd059714e101789952021-08-20 0:03:0937 days 7 hrs ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0xd79c18d7e493afe6e7e65dff11927d28e6ec92430.003664680141745121 BNB
0xb7a4e63e59e62a78d50dd4a7273fcfa33b8733e8a3942cddfa4902962a085613101789322021-08-20 0:00:0037 days 7 hrs ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x6bcda103a8d6660a5f8ef95bcc78a3019bae49040.131172095737818725 BNB
0xb1eebc8156db866afc9c9f8a7935f999d609b4b7b23a2da57ed4f8274057010b101780892021-08-19 23:17:5137 days 8 hrs ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0xaba2cd1646fb71ea74819107c661ce58d33020260.011508275781213146 BNB
0xc0a0cdd598cb7014cd60e75783d244de3e6dbd215fa9ef03a2051de0ae7aec6e101779262021-08-19 23:09:4237 days 8 hrs ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x69381736cb78ff27a4ec1f2c3604d6972048da150.001590421778694312 BNB
0xb6d852bfa64369b57492189175e4d833c2076231ebe9cd41150440cd8e5fff4e101778542021-08-19 23:06:0637 days 8 hrs ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x3e51ecd4f2ad81b4a3c4f948b8e98775e6b48bd60.004186756711058759 BNB
0x37faf8dc1ea48414970d19463a4b5b842e626ce735703c3926c66b8f7a9febba101777652021-08-19 23:01:3937 days 8 hrs ago 0x516ffd7d1e0ca40b1879935b2de87cb20fc1124b0x7887e532bb6b252af5d108999b8c515c13af26010.049571187918824563 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BnbPricePrediction

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 99999 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-04-28
*/

// File: @openzeppelin/contracts/math/SafeMath.sol

// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        uint256 c = a + b;
        if (c < a) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b > a) return (false, 0);
        return (true, a - b);
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) return (true, 0);
        uint256 c = a * b;
        if (c / a != b) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a / b);
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a % b);
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) return 0;
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: division by zero");
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: modulo by zero");
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        return a - b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryDiv}.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a % b;
    }
}

// File: @openzeppelin/contracts/utils/Context.sol

pragma solidity >=0.6.0 <0.8.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

// File: @openzeppelin/contracts/access/Ownable.sol

pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

// File: @openzeppelin/contracts/utils/Pausable.sol

pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev Contract module which allows children to implement an emergency stop
 * mechanism that can be triggered by an authorized account.
 *
 * This module is used through inheritance. It will make available the
 * modifiers `whenNotPaused` and `whenPaused`, which can be applied to
 * the functions of your contract. Note that they will not be pausable by
 * simply including this module, only once the modifiers are put in place.
 */
abstract contract Pausable is Context {
    /**
     * @dev Emitted when the pause is triggered by `account`.
     */
    event Paused(address account);

    /**
     * @dev Emitted when the pause is lifted by `account`.
     */
    event Unpaused(address account);

    bool private _paused;

    /**
     * @dev Initializes the contract in unpaused state.
     */
    constructor() internal {
        _paused = false;
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused() public view virtual returns (bool) {
        return _paused;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    modifier whenNotPaused() {
        require(!paused(), "Pausable: paused");
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    modifier whenPaused() {
        require(paused(), "Pausable: not paused");
        _;
    }

    /**
     * @dev Triggers stopped state.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    /**
     * @dev Returns to normal state.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

// File: contracts/interfaces/AggregatorV3Interface.sol

pragma solidity >=0.6.0;

interface AggregatorV3Interface {
    function decimals() external view returns (uint8);

    function description() external view returns (string memory);

    function version() external view returns (uint256);

    // getRoundData and latestRoundData should both raise "No data present"
    // if they do not have data to report, instead of returning unset values
    // which could be misinterpreted as actual reported values.
    function getRoundData(uint80 _roundId)
        external
        view
        returns (
            uint80 roundId,
            int256 answer,
            uint256 startedAt,
            uint256 updatedAt,
            uint80 answeredInRound
        );

    function latestRoundData()
        external
        view
        returns (
            uint80 roundId,
            int256 answer,
            uint256 startedAt,
            uint256 updatedAt,
            uint80 answeredInRound
        );
}

// File: contracts/BnbPricePrediction.sol

pragma solidity 0.6.12;

contract BnbPricePrediction is Ownable, Pausable {
    using SafeMath for uint256;

    struct Round {
        uint256 epoch;
        uint256 startBlock;
        uint256 lockBlock;
        uint256 endBlock;
        int256 lockPrice;
        int256 closePrice;
        uint256 totalAmount;
        uint256 bullAmount;
        uint256 bearAmount;
        uint256 rewardBaseCalAmount;
        uint256 rewardAmount;
        bool oracleCalled;
    }

    enum Position {Bull, Bear}

    struct BetInfo {
        Position position;
        uint256 amount;
        bool claimed; // default false
    }

    mapping(uint256 => Round) public rounds;
    mapping(uint256 => mapping(address => BetInfo)) public ledger;
    mapping(address => uint256[]) public userRounds;
    uint256 public currentEpoch;
    uint256 public intervalBlocks;
    uint256 public bufferBlocks;
    address public adminAddress;
    address public operatorAddress;
    uint256 public treasuryAmount;
    AggregatorV3Interface internal oracle;
    uint256 public oracleLatestRoundId;

    uint256 public constant TOTAL_RATE = 100; // 100%
    uint256 public rewardRate = 90; // 90%
    uint256 public treasuryRate = 10; // 10%
    uint256 public minBetAmount;
    uint256 public oracleUpdateAllowance; // seconds

    bool public genesisStartOnce = false;
    bool public genesisLockOnce = false;

    event StartRound(uint256 indexed epoch, uint256 blockNumber);
    event LockRound(uint256 indexed epoch, uint256 blockNumber, int256 price);
    event EndRound(uint256 indexed epoch, uint256 blockNumber, int256 price);
    event BetBull(address indexed sender, uint256 indexed currentEpoch, uint256 amount);
    event BetBear(address indexed sender, uint256 indexed currentEpoch, uint256 amount);
    event Claim(address indexed sender, uint256 indexed currentEpoch, uint256 amount);
    event ClaimTreasury(uint256 amount);
    event RatesUpdated(uint256 indexed epoch, uint256 rewardRate, uint256 treasuryRate);
    event MinBetAmountUpdated(uint256 indexed epoch, uint256 minBetAmount);
    event RewardsCalculated(
        uint256 indexed epoch,
        uint256 rewardBaseCalAmount,
        uint256 rewardAmount,
        uint256 treasuryAmount
    );
    event Pause(uint256 epoch);
    event Unpause(uint256 epoch);

    constructor(
        AggregatorV3Interface _oracle,
        address _adminAddress,
        address _operatorAddress,
        uint256 _intervalBlocks,
        uint256 _bufferBlocks,
        uint256 _minBetAmount,
        uint256 _oracleUpdateAllowance
    ) public {
        oracle = _oracle;
        adminAddress = _adminAddress;
        operatorAddress = _operatorAddress;
        intervalBlocks = _intervalBlocks;
        bufferBlocks = _bufferBlocks;
        minBetAmount = _minBetAmount;
        oracleUpdateAllowance = _oracleUpdateAllowance;
    }

    modifier onlyAdmin() {
        require(msg.sender == adminAddress, "admin: wut?");
        _;
    }

    modifier onlyOperator() {
        require(msg.sender == operatorAddress, "operator: wut?");
        _;
    }

    modifier onlyAdminOrOperator() {
        require(msg.sender == adminAddress || msg.sender == operatorAddress, "admin | operator: wut?");
        _;
    }

    modifier notContract() {
        require(!_isContract(msg.sender), "contract not allowed");
        require(msg.sender == tx.origin, "proxy contract not allowed");
        _;
    }

    /**
     * @dev set admin address
     * callable by owner
     */
    function setAdmin(address _adminAddress) external onlyOwner {
        require(_adminAddress != address(0), "Cannot be zero address");
        adminAddress = _adminAddress;
    }

    /**
     * @dev set operator address
     * callable by admin
     */
    function setOperator(address _operatorAddress) external onlyAdmin {
        require(_operatorAddress != address(0), "Cannot be zero address");
        operatorAddress = _operatorAddress;
    }

    /**
     * @dev set interval blocks
     * callable by admin
     */
    function setIntervalBlocks(uint256 _intervalBlocks) external onlyAdmin {
        intervalBlocks = _intervalBlocks;
    }

    /**
     * @dev set buffer blocks
     * callable by admin
     */
    function setBufferBlocks(uint256 _bufferBlocks) external onlyAdmin {
        require(_bufferBlocks <= intervalBlocks, "Cannot be more than intervalBlocks");
        bufferBlocks = _bufferBlocks;
    }

    /**
     * @dev set Oracle address
     * callable by admin
     */
    function setOracle(address _oracle) external onlyAdmin {
        require(_oracle != address(0), "Cannot be zero address");
        oracle = AggregatorV3Interface(_oracle);
    }

    /**
     * @dev set oracle update allowance
     * callable by admin
     */
    function setOracleUpdateAllowance(uint256 _oracleUpdateAllowance) external onlyAdmin {
        oracleUpdateAllowance = _oracleUpdateAllowance;
    }

    /**
     * @dev set reward rate
     * callable by admin
     */
    function setRewardRate(uint256 _rewardRate) external onlyAdmin {
        require(_rewardRate <= TOTAL_RATE, "rewardRate cannot be more than 100%");
        rewardRate = _rewardRate;
        treasuryRate = TOTAL_RATE.sub(_rewardRate);

        emit RatesUpdated(currentEpoch, rewardRate, treasuryRate);
    }

    /**
     * @dev set treasury rate
     * callable by admin
     */
    function setTreasuryRate(uint256 _treasuryRate) external onlyAdmin {
        require(_treasuryRate <= TOTAL_RATE, "treasuryRate cannot be more than 100%");
        rewardRate = TOTAL_RATE.sub(_treasuryRate);
        treasuryRate = _treasuryRate;

        emit RatesUpdated(currentEpoch, rewardRate, treasuryRate);
    }

    /**
     * @dev set minBetAmount
     * callable by admin
     */
    function setMinBetAmount(uint256 _minBetAmount) external onlyAdmin {
        minBetAmount = _minBetAmount;

        emit MinBetAmountUpdated(currentEpoch, minBetAmount);
    }

    /**
     * @dev Start genesis round
     */
    function genesisStartRound() external onlyOperator whenNotPaused {
        require(!genesisStartOnce, "Can only run genesisStartRound once");

        currentEpoch = currentEpoch + 1;
        _startRound(currentEpoch);
        genesisStartOnce = true;
    }

    /**
     * @dev Lock genesis round
     */
    function genesisLockRound() external onlyOperator whenNotPaused {
        require(genesisStartOnce, "Can only run after genesisStartRound is triggered");
        require(!genesisLockOnce, "Can only run genesisLockRound once");
        require(
            block.number <= rounds[currentEpoch].lockBlock.add(bufferBlocks),
            "Can only lock round within bufferBlocks"
        );

        int256 currentPrice = _getPriceFromOracle();
        _safeLockRound(currentEpoch, currentPrice);

        currentEpoch = currentEpoch + 1;
        _startRound(currentEpoch);
        genesisLockOnce = true;
    }

    /**
     * @dev Start the next round n, lock price for round n-1, end round n-2
     */
    function executeRound() external onlyOperator whenNotPaused {
        require(
            genesisStartOnce && genesisLockOnce,
            "Can only run after genesisStartRound and genesisLockRound is triggered"
        );

        int256 currentPrice = _getPriceFromOracle();
        // CurrentEpoch refers to previous round (n-1)
        _safeLockRound(currentEpoch, currentPrice);
        _safeEndRound(currentEpoch - 1, currentPrice);
        _calculateRewards(currentEpoch - 1);

        // Increment currentEpoch to current round (n)
        currentEpoch = currentEpoch + 1;
        _safeStartRound(currentEpoch);
    }

    /**
     * @dev Bet bear position
     */
    function betBear() external payable whenNotPaused notContract {
        require(_bettable(currentEpoch), "Round not bettable");
        require(msg.value >= minBetAmount, "Bet amount must be greater than minBetAmount");
        require(ledger[currentEpoch][msg.sender].amount == 0, "Can only bet once per round");

        // Update round data
        uint256 amount = msg.value;
        Round storage round = rounds[currentEpoch];
        round.totalAmount = round.totalAmount.add(amount);
        round.bearAmount = round.bearAmount.add(amount);

        // Update user data
        BetInfo storage betInfo = ledger[currentEpoch][msg.sender];
        betInfo.position = Position.Bear;
        betInfo.amount = amount;
        userRounds[msg.sender].push(currentEpoch);

        emit BetBear(msg.sender, currentEpoch, amount);
    }

    /**
     * @dev Bet bull position
     */
    function betBull() external payable whenNotPaused notContract {
        require(_bettable(currentEpoch), "Round not bettable");
        require(msg.value >= minBetAmount, "Bet amount must be greater than minBetAmount");
        require(ledger[currentEpoch][msg.sender].amount == 0, "Can only bet once per round");

        // Update round data
        uint256 amount = msg.value;
        Round storage round = rounds[currentEpoch];
        round.totalAmount = round.totalAmount.add(amount);
        round.bullAmount = round.bullAmount.add(amount);

        // Update user data
        BetInfo storage betInfo = ledger[currentEpoch][msg.sender];
        betInfo.position = Position.Bull;
        betInfo.amount = amount;
        userRounds[msg.sender].push(currentEpoch);

        emit BetBull(msg.sender, currentEpoch, amount);
    }

    /**
     * @dev Claim reward
     */
    function claim(uint256 epoch) external notContract {
        require(rounds[epoch].startBlock != 0, "Round has not started");
        require(block.number > rounds[epoch].endBlock, "Round has not ended");
        require(!ledger[epoch][msg.sender].claimed, "Rewards claimed");

        uint256 reward;
        // Round valid, claim rewards
        if (rounds[epoch].oracleCalled) {
            require(claimable(epoch, msg.sender), "Not eligible for claim");
            Round memory round = rounds[epoch];
            reward = ledger[epoch][msg.sender].amount.mul(round.rewardAmount).div(round.rewardBaseCalAmount);
        }
        // Round invalid, refund bet amount
        else {
            require(refundable(epoch, msg.sender), "Not eligible for refund");
            reward = ledger[epoch][msg.sender].amount;
        }

        BetInfo storage betInfo = ledger[epoch][msg.sender];
        betInfo.claimed = true;
        _safeTransferBNB(address(msg.sender), reward);

        emit Claim(msg.sender, epoch, reward);
    }

    /**
     * @dev Claim all rewards in treasury
     * callable by admin
     */
    function claimTreasury() external onlyAdmin {
        uint256 currentTreasuryAmount = treasuryAmount;
        treasuryAmount = 0;
        _safeTransferBNB(adminAddress, currentTreasuryAmount);

        emit ClaimTreasury(currentTreasuryAmount);
    }

    /**
     * @dev Return round epochs that a user has participated
     */
    function getUserRounds(
        address user,
        uint256 cursor,
        uint256 size
    ) external view returns (uint256[] memory, uint256) {
        uint256 length = size;
        if (length > userRounds[user].length - cursor) {
            length = userRounds[user].length - cursor;
        }

        uint256[] memory values = new uint256[](length);
        for (uint256 i = 0; i < length; i++) {
            values[i] = userRounds[user][cursor + i];
        }

        return (values, cursor + length);
    }

    /**
     * @dev called by the admin to pause, triggers stopped state
     */
    function pause() public onlyAdminOrOperator whenNotPaused {
        _pause();

        emit Pause(currentEpoch);
    }

    /**
     * @dev called by the admin to unpause, returns to normal state
     * Reset genesis state. Once paused, the rounds would need to be kickstarted by genesis
     */
    function unpause() public onlyAdmin whenPaused {
        genesisStartOnce = false;
        genesisLockOnce = false;
        _unpause();

        emit Unpause(currentEpoch);
    }

    /**
     * @dev Get the claimable stats of specific epoch and user account
     */
    function claimable(uint256 epoch, address user) public view returns (bool) {
        BetInfo memory betInfo = ledger[epoch][user];
        Round memory round = rounds[epoch];
        if (round.lockPrice == round.closePrice) {
            return false;
        }
        return
            round.oracleCalled &&
            ((round.closePrice > round.lockPrice && betInfo.position == Position.Bull) ||
                (round.closePrice < round.lockPrice && betInfo.position == Position.Bear));
    }

    /**
     * @dev Get the refundable stats of specific epoch and user account
     */
    function refundable(uint256 epoch, address user) public view returns (bool) {
        BetInfo memory betInfo = ledger[epoch][user];
        Round memory round = rounds[epoch];
        return !round.oracleCalled && block.number > round.endBlock.add(bufferBlocks) && betInfo.amount != 0;
    }

    /**
     * @dev Start round
     * Previous round n-2 must end
     */
    function _safeStartRound(uint256 epoch) internal {
        require(genesisStartOnce, "Can only run after genesisStartRound is triggered");
        require(rounds[epoch - 2].endBlock != 0, "Can only start round after round n-2 has ended");
        require(block.number >= rounds[epoch - 2].endBlock, "Can only start new round after round n-2 endBlock");
        _startRound(epoch);
    }

    function _startRound(uint256 epoch) internal {
        Round storage round = rounds[epoch];
        round.startBlock = block.number;
        round.lockBlock = block.number.add(intervalBlocks);
        round.endBlock = block.number.add(intervalBlocks * 2);
        round.epoch = epoch;
        round.totalAmount = 0;

        emit StartRound(epoch, block.number);
    }

    /**
     * @dev Lock round
     */
    function _safeLockRound(uint256 epoch, int256 price) internal {
        require(rounds[epoch].startBlock != 0, "Can only lock round after round has started");
        require(block.number >= rounds[epoch].lockBlock, "Can only lock round after lockBlock");
        require(block.number <= rounds[epoch].lockBlock.add(bufferBlocks), "Can only lock round within bufferBlocks");
        _lockRound(epoch, price);
    }

    function _lockRound(uint256 epoch, int256 price) internal {
        Round storage round = rounds[epoch];
        round.lockPrice = price;

        emit LockRound(epoch, block.number, round.lockPrice);
    }

    /**
     * @dev End round
     */
    function _safeEndRound(uint256 epoch, int256 price) internal {
        require(rounds[epoch].lockBlock != 0, "Can only end round after round has locked");
        require(block.number >= rounds[epoch].endBlock, "Can only end round after endBlock");
        require(block.number <= rounds[epoch].endBlock.add(bufferBlocks), "Can only end round within bufferBlocks");
        _endRound(epoch, price);
    }

    function _endRound(uint256 epoch, int256 price) internal {
        Round storage round = rounds[epoch];
        round.closePrice = price;
        round.oracleCalled = true;

        emit EndRound(epoch, block.number, round.closePrice);
    }

    /**
     * @dev Calculate rewards for round
     */
    function _calculateRewards(uint256 epoch) internal {
        require(rewardRate.add(treasuryRate) == TOTAL_RATE, "rewardRate and treasuryRate must add up to TOTAL_RATE");
        require(rounds[epoch].rewardBaseCalAmount == 0 && rounds[epoch].rewardAmount == 0, "Rewards calculated");
        Round storage round = rounds[epoch];
        uint256 rewardBaseCalAmount;
        uint256 rewardAmount;
        uint256 treasuryAmt;
        // Bull wins
        if (round.closePrice > round.lockPrice) {
            rewardBaseCalAmount = round.bullAmount;
            rewardAmount = round.totalAmount.mul(rewardRate).div(TOTAL_RATE);
            treasuryAmt = round.totalAmount.mul(treasuryRate).div(TOTAL_RATE);
        }
        // Bear wins
        else if (round.closePrice < round.lockPrice) {
            rewardBaseCalAmount = round.bearAmount;
            rewardAmount = round.totalAmount.mul(rewardRate).div(TOTAL_RATE);
            treasuryAmt = round.totalAmount.mul(treasuryRate).div(TOTAL_RATE);
        }
        // House wins
        else {
            rewardBaseCalAmount = 0;
            rewardAmount = 0;
            treasuryAmt = round.totalAmount;
        }
        round.rewardBaseCalAmount = rewardBaseCalAmount;
        round.rewardAmount = rewardAmount;

        // Add to treasury
        treasuryAmount = treasuryAmount.add(treasuryAmt);

        emit RewardsCalculated(epoch, rewardBaseCalAmount, rewardAmount, treasuryAmt);
    }

    /**
     * @dev Get latest recorded price from oracle
     * If it falls below allowed buffer or has not updated, it would be invalid
     */
    function _getPriceFromOracle() internal returns (int256) {
        uint256 leastAllowedTimestamp = block.timestamp.add(oracleUpdateAllowance);
        (uint80 roundId, int256 price, , uint256 timestamp, ) = oracle.latestRoundData();
        require(timestamp <= leastAllowedTimestamp, "Oracle update exceeded max timestamp allowance");
        require(roundId > oracleLatestRoundId, "Oracle update roundId must be larger than oracleLatestRoundId");
        oracleLatestRoundId = uint256(roundId);
        return price;
    }

    function _safeTransferBNB(address to, uint256 value) internal {
        (bool success, ) = to.call{gas: 23000, value: value}("");
        require(success, "TransferHelper: BNB_TRANSFER_FAILED");
    }

    function _isContract(address addr) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(addr)
        }
        return size > 0;
    }

    /**
     * @dev Determine if a round is valid for receiving bets
     * Round must have started and locked
     * Current block must be within startBlock and endBlock
     */
    function _bettable(uint256 epoch) internal view returns (bool) {
        return
            rounds[epoch].startBlock != 0 &&
            rounds[epoch].lockBlock != 0 &&
            block.number > rounds[epoch].startBlock &&
            block.number < rounds[epoch].lockBlock;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract AggregatorV3Interface","name":"_oracle","type":"address"},{"internalType":"address","name":"_adminAddress","type":"address"},{"internalType":"address","name":"_operatorAddress","type":"address"},{"internalType":"uint256","name":"_intervalBlocks","type":"uint256"},{"internalType":"uint256","name":"_bufferBlocks","type":"uint256"},{"internalType":"uint256","name":"_minBetAmount","type":"uint256"},{"internalType":"uint256","name":"_oracleUpdateAllowance","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"uint256","name":"currentEpoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BetBear","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"uint256","name":"currentEpoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BetBull","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"uint256","name":"currentEpoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClaimTreasury","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"blockNumber","type":"uint256"},{"indexed":false,"internalType":"int256","name":"price","type":"int256"}],"name":"EndRound","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"blockNumber","type":"uint256"},{"indexed":false,"internalType":"int256","name":"price","type":"int256"}],"name":"LockRound","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"minBetAmount","type":"uint256"}],"name":"MinBetAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"epoch","type":"uint256"}],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rewardRate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"treasuryRate","type":"uint256"}],"name":"RatesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rewardBaseCalAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rewardAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"treasuryAmount","type":"uint256"}],"name":"RewardsCalculated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"StartRound","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"epoch","type":"uint256"}],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"TOTAL_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"adminAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"betBear","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"betBull","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"bufferBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"user","type":"address"}],"name":"claimable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"executeRound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"genesisLockOnce","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesisLockRound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"genesisStartOnce","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesisStartRound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"cursor","type":"uint256"},{"internalType":"uint256","name":"size","type":"uint256"}],"name":"getUserRounds","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"intervalBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"ledger","outputs":[{"internalType":"enum BnbPricePrediction.Position","name":"position","type":"uint8"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"claimed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minBetAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operatorAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oracleLatestRoundId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oracleUpdateAllowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"user","type":"address"}],"name":"refundable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rounds","outputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"uint256","name":"startBlock","type":"uint256"},{"internalType":"uint256","name":"lockBlock","type":"uint256"},{"internalType":"uint256","name":"endBlock","type":"uint256"},{"internalType":"int256","name":"lockPrice","type":"int256"},{"internalType":"int256","name":"closePrice","type":"int256"},{"internalType":"uint256","name":"totalAmount","type":"uint256"},{"internalType":"uint256","name":"bullAmount","type":"uint256"},{"internalType":"uint256","name":"bearAmount","type":"uint256"},{"internalType":"uint256","name":"rewardBaseCalAmount","type":"uint256"},{"internalType":"uint256","name":"rewardAmount","type":"uint256"},{"internalType":"bool","name":"oracleCalled","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_adminAddress","type":"address"}],"name":"setAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_bufferBlocks","type":"uint256"}],"name":"setBufferBlocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_intervalBlocks","type":"uint256"}],"name":"setIntervalBlocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minBetAmount","type":"uint256"}],"name":"setMinBetAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operatorAddress","type":"address"}],"name":"setOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oracle","type":"address"}],"name":"setOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_oracleUpdateAllowance","type":"uint256"}],"name":"setOracleUpdateAllowance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rewardRate","type":"uint256"}],"name":"setRewardRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryRate","type":"uint256"}],"name":"setTreasuryRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"userRounds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

6080604052605a600c55600a600d556010805461ffff191690553480156200002657600080fd5b50604051620044af380380620044af833981810160405260e08110156200004c57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151949593949293919290919060006200008562000132565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000805460ff60a01b19169055600a80546001600160a01b03199081166001600160a01b03998a161790915560078054821697891697909717909655600880549096169490961693909317909355600555600691909155600e55600f5562000136565b3390565b61436980620001466000396000f3fe6080604052600436106102cf5760003560e01c8063821daba111610179578063b3ab15fb116100d6578063e4b725161161008a578063f7fdec2811610064578063f7fdec281461097a578063fa968eea1461098f578063fc6f9468146109a4576102cf565b8063e4b7251614610910578063ec32470314610925578063f2fde38b1461093a576102cf565b8063d0bf9c54116100bb578063d0bf9c541461088b578063d9d55eac146108b5578063dd1f7596146108ca576102cf565b8063b3ab15fb14610821578063cf2f503914610861576102cf565b80639780a7521161012d578063a067455b11610112578063a067455b1461079c578063a0c7f71c146107c6578063b29c299b1461080c576102cf565b80639780a7521461075d5780639e447fc614610772576102cf565b80638c65c81f1161015e5780638c65c81f146106165780638da5cb5b146106a1578063951fd600146106b6576102cf565b8063821daba1146105f95780638456cb5914610601576102cf565b80635c975abb116102325780637285c58b116101e65780637b0a47ee116101c05780637b0a47ee146105895780637b3205f51461059e5780637bf41254146105b3576102cf565b80637285c58b146104bd57806376671808146105345780637adbf97314610549576102cf565b80636c188593116102175780636c1885931461043e578063704b6c0214610468578063715018a6146104a8576102cf565b80635c975abb146104145780636055401114610429576102cf565b80631ec9f34b11610289578063379607f51161026e578063379607f5146103c05780633f4ba83a146103ea578063452fd75a146103ff576102cf565b80631ec9f34b14610384578063368acb09146103ab576102cf565b80630f74174f116102ba5780630f74174f146102f357806310c0ee641461031c578063127effb214610346576102cf565b80623bdc74146102d457806288160f146102eb575b600080fd5b3480156102e057600080fd5b506102e96109b9565b005b6102e9610aa1565b3480156102ff57600080fd5b50610308610e39565b604080519115158252519081900360200190f35b34801561032857600080fd5b506102e96004803603602081101561033f57600080fd5b5035610e47565b34801561035257600080fd5b5061035b610f2d565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561039057600080fd5b50610399610f49565b60408051918252519081900360200190f35b3480156103b757600080fd5b50610399610f4f565b3480156103cc57600080fd5b506102e9600480360360208110156103e357600080fd5b5035610f55565b3480156103f657600080fd5b506102e9611445565b34801561040b57600080fd5b506102e96115a5565b34801561042057600080fd5b5061030861173c565b34801561043557600080fd5b5061039961175d565b34801561044a57600080fd5b506102e96004803603602081101561046157600080fd5b5035611763565b34801561047457600080fd5b506102e96004803603602081101561048b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611827565b3480156104b457600080fd5b506102e9611998565b3480156104c957600080fd5b50610503600480360360408110156104e057600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff16611aaf565b6040518084600181111561051357fe5b81526020018381526020018215158152602001935050505060405180910390f35b34801561054057600080fd5b50610399611ade565b34801561055557600080fd5b506102e96004803603602081101561056c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611ae4565b34801561059557600080fd5b50610399611c33565b3480156105aa57600080fd5b506102e9611c39565b3480156105bf57600080fd5b50610308600480360360408110156105d657600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff16611ded565b6102e9611f46565b34801561060d57600080fd5b506102e96122db565b34801561062257600080fd5b506106406004803603602081101561063957600080fd5b5035612436565b604080519c8d5260208d019b909b528b8b019990995260608b019790975260808a019590955260a089019390935260c088019190915260e0870152610100860152610120850152610140840152151561016083015251908190036101800190f35b3480156106ad57600080fd5b5061035b612499565b3480156106c257600080fd5b50610702600480360360608110156106d957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602081013590604001356124b5565b6040518080602001838152602001828103825284818151815260200191508051906020019060200280838360005b83811015610748578181015183820152602001610730565b50505050905001935050505060405180910390f35b34801561076957600080fd5b506103996125cf565b34801561077e57600080fd5b506102e96004803603602081101561079557600080fd5b50356125d5565b3480156107a857600080fd5b506102e9600480360360208110156107bf57600080fd5b503561270f565b3480156107d257600080fd5b50610308600480360360408110156107e957600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff1661279a565b34801561081857600080fd5b50610399612935565b34801561082d57600080fd5b506102e96004803603602081101561084457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661293a565b34801561086d57600080fd5b506102e96004803603602081101561088457600080fd5b5035612a89565b34801561089757600080fd5b506102e9600480360360208110156108ae57600080fd5b5035612b14565b3480156108c157600080fd5b506102e9612c4c565b3480156108d657600080fd5b50610399600480360360408110156108ed57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135612ed6565b34801561091c57600080fd5b50610399612f04565b34801561093157600080fd5b50610399612f0a565b34801561094657600080fd5b506102e96004803603602081101561095d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612f10565b34801561098657600080fd5b506103086130b1565b34801561099b57600080fd5b506103996130ba565b3480156109b057600080fd5b5061035b6130c0565b60075473ffffffffffffffffffffffffffffffffffffffff163314610a3f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f61646d696e3a207775743f000000000000000000000000000000000000000000604482015290519081900360640190fd5b600980546000909155600754610a6b9073ffffffffffffffffffffffffffffffffffffffff16826130dc565b6040805182815290517f609175abb7f12481e4f200d1ef4fc834e6caac3d9eadba42d664352f6d0932ca9181900360200190a150565b610aa961173c565b15610b1557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b610b1e3361319d565b15610b8a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f636f6e7472616374206e6f7420616c6c6f776564000000000000000000000000604482015290519081900360640190fd5b333214610bf857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f70726f787920636f6e7472616374206e6f7420616c6c6f776564000000000000604482015290519081900360640190fd5b610c036004546131a3565b610c6e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f526f756e64206e6f74206265747461626c650000000000000000000000000000604482015290519081900360640190fd5b600e54341015610cc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806140eb602c913960400191505060405180910390fd5b600454600090815260026020908152604080832033845290915290206001015415610d5557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f43616e206f6e6c7920626574206f6e63652070657220726f756e640000000000604482015290519081900360640190fd5b60045460009081526001602052604090206006810154349190610d78908361320f565b60068201556008810154610d8c908361320f565b60088201556004805460009081526002602090815260408083203380855290835281842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081178255808201899055600385528386208754815492830182559087529585902001949094559354815187815291519394909390927f0d8c1fe3e67ab767116a81f122b83c2557a8c2564019cb7c4f83de1aeb1f1f0d928290030190a3505050565b601054610100900460ff1681565b60075473ffffffffffffffffffffffffffffffffffffffff163314610ecd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f61646d696e3a207775743f000000000000000000000000000000000000000000604482015290519081900360640190fd5b600554811115610f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180613f946022913960400191505060405180910390fd5b600655565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60095481565b610f5e3361319d565b15610fca57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f636f6e7472616374206e6f7420616c6c6f776564000000000000000000000000604482015290519081900360640190fd5b33321461103857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f70726f787920636f6e7472616374206e6f7420616c6c6f776564000000000000604482015290519081900360640190fd5b600081815260016020819052604090912001546110b657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f526f756e6420686173206e6f7420737461727465640000000000000000000000604482015290519081900360640190fd5b600081815260016020526040902060030154431161113557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f526f756e6420686173206e6f7420656e64656400000000000000000000000000604482015290519081900360640190fd5b6000818152600260208181526040808420338552909152909120015460ff16156111c057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5265776172647320636c61696d65640000000000000000000000000000000000604482015290519081900360640190fd5b6000818152600160205260408120600b015460ff1615611324576111e4823361279a565b61124f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4e6f7420656c696769626c6520666f7220636c61696d00000000000000000000604482015290519081900360640190fd5b611257613f0e565b506000828152600160208181526040808420815161018081018352815481528185015481850152600280830154828501526003830154606083015260048301546080830152600583015460a0830152600683015460c0830152600783015460e0830152600883015461010083015260098301546101208301819052600a8401546101408401819052600b9094015460ff1615156101608401528988529085528387203388529094529190942090920154919261131c926113169161328a565b906132fd565b9150506113b8565b61132e8233611ded565b61139957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4e6f7420656c696769626c6520666f7220726566756e64000000000000000000604482015290519081900360640190fd5b5060008181526002602090815260408083203384529091529020600101545b600082815260026020818152604080842033808652925290922090810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790559061140990836130dc565b604080518381529051849133917f34fcbac0073d7c3d388e51312faf357774904998eeb8fca628b9e6f65ee1cbf79181900360200190a3505050565b60075473ffffffffffffffffffffffffffffffffffffffff1633146114cb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f61646d696e3a207775743f000000000000000000000000000000000000000000604482015290519081900360640190fd5b6114d361173c565b61153e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015290519081900360640190fd5b601080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000016905561156e61337e565b60045460408051918252517faaa520fdd7d2c83061d632fa017b0432407e798818af63ea908589fceda39ab79181900360200190a1565b60085473ffffffffffffffffffffffffffffffffffffffff16331461162b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6f70657261746f723a207775743f000000000000000000000000000000000000604482015290519081900360640190fd5b61163361173c565b1561169f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b60105460ff16156116fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806141bd6023913960400191505060405180910390fd5b600480546001019081905561170f9061346c565b601080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b60005474010000000000000000000000000000000000000000900460ff1690565b600f5481565b60075473ffffffffffffffffffffffffffffffffffffffff1633146117e957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f61646d696e3a207775743f000000000000000000000000000000000000000000604482015290519081900360640190fd5b600e8190556004546040805183815290517f82480e97991520549ac4b5d0e1d97edb3bfac2666202923b6903d2a953dc76089181900360200190a250565b61182f6134f3565b73ffffffffffffffffffffffffffffffffffffffff1661184d612499565b73ffffffffffffffffffffffffffffffffffffffff16146118cf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811661195157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f43616e6e6f74206265207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6119a06134f3565b73ffffffffffffffffffffffffffffffffffffffff166119be612499565b73ffffffffffffffffffffffffffffffffffffffff1614611a4057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6002602081815260009384526040808520909152918352912080546001820154919092015460ff928316921683565b60045481565b60075473ffffffffffffffffffffffffffffffffffffffff163314611b6a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f61646d696e3a207775743f000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116611bec57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f43616e6e6f74206265207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600c5481565b60085473ffffffffffffffffffffffffffffffffffffffff163314611cbf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6f70657261746f723a207775743f000000000000000000000000000000000000604482015290519081900360640190fd5b611cc761173c565b15611d3357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b60105460ff168015611d4c5750601054610100900460ff165b611da1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260468152602001806142036046913960600191505060405180910390fd5b6000611dab6134f7565b9050611db960045482613695565b611dc8600160045403826137eb565b611dd660016004540361393c565b6004805460010190819055611dea90613b5f565b50565b6000611df7613f71565b600084815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152908190208151606081019092528054829060ff166001811115611e4357fe5b6001811115611e4e57fe5b81526001820154602082015260029091015460ff1615156040909101529050611e75613f0e565b506000848152600160208181526040928390208351610180810185528154815292810154918301919091526002810154928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a820154610140820152600b9091015460ff161580156101608301819052611f2c57506006546060820151611f299161320f565b43115b8015611f3b5750602082015115155b925050505b92915050565b611f4e61173c565b15611fba57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b611fc33361319d565b1561202f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f636f6e7472616374206e6f7420616c6c6f776564000000000000000000000000604482015290519081900360640190fd5b33321461209d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f70726f787920636f6e7472616374206e6f7420616c6c6f776564000000000000604482015290519081900360640190fd5b6120a86004546131a3565b61211357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f526f756e64206e6f74206265747461626c650000000000000000000000000000604482015290519081900360640190fd5b600e5434101561216e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806140eb602c913960400191505060405180910390fd5b6004546000908152600260209081526040808320338452909152902060010154156121fa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f43616e206f6e6c7920626574206f6e63652070657220726f756e640000000000604482015290519081900360640190fd5b6004546000908152600160205260409020600681015434919061221d908361320f565b60068201556007810154612231908361320f565b60078201556004805460009081526002602090815260408083203380855290835281842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681556001808201899055600385528386208754815492830182559087529585902001949094559354815187815291519394909390927f438122d8cff518d18388099a5181f0d17a12b4f1b55faedf6e4a6acee0060c12928290030190a3505050565b60075473ffffffffffffffffffffffffffffffffffffffff16331480612318575060085473ffffffffffffffffffffffffffffffffffffffff1633145b61238357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f61646d696e207c206f70657261746f723a207775743f00000000000000000000604482015290519081900360640190fd5b61238b61173c565b156123f757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b6123ff613cda565b60045460408051918252517f68b095021b1f40fe513109f513c66692f0b3219aee674a69f4efc57badb8201d9181900360200190a1565b600160208190526000918252604090912080549181015460028201546003830154600484015460058501546006860154600787015460088801546009890154600a8a0154600b909a01549899979896979596949593949293919290919060ff168c565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260036020526040812054606091908390859003811115612516575073ffffffffffffffffffffffffffffffffffffffff85166000908152600360205260409020548490035b60608167ffffffffffffffff8111801561252f57600080fd5b50604051908082528060200260200182016040528015612559578160200160208202803683370190505b50905060005b828110156125c45773ffffffffffffffffffffffffffffffffffffffff88166000908152600360205260409020805488830190811061259a57fe5b90600052602060002001548282815181106125b157fe5b602090810291909101015260010161255f565b509694019450505050565b60065481565b60075473ffffffffffffffffffffffffffffffffffffffff16331461265b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f61646d696e3a207775743f000000000000000000000000000000000000000000604482015290519081900360640190fd5b60648111156126b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061426c6023913960400191505060405180910390fd5b600c8190556126c5606482613db6565b600d819055600454600c54604080519182526020820193909352825191927f023010bc68e7f4c0be9887f513c570c7a0f5f511b9716abccd42bf3b8943532b92918290030190a250565b60075473ffffffffffffffffffffffffffffffffffffffff16331461279557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f61646d696e3a207775743f000000000000000000000000000000000000000000604482015290519081900360640190fd5b600555565b60006127a4613f71565b600084815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152908190208151606081019092528054829060ff1660018111156127f057fe5b60018111156127fb57fe5b81526001820154602082015260029091015460ff1615156040909101529050612822613f0e565b5060008481526001602081815260409283902083516101808101855281548152928101549183019190915260028101549282019290925260038201546060820152600482015460808201819052600583015460a08301819052600684015460c0840152600784015460e084015260088401546101008401526009840154610120840152600a840154610140840152600b9093015460ff161515610160830152909114156128d457600092505050611f40565b8061016001518015611f3b575080608001518160a00151138015612904575060008251600181111561290257fe5b145b80611f3b575080608001518160a00151128015611f3b575060018251600181111561292b57fe5b1495945050505050565b606481565b60075473ffffffffffffffffffffffffffffffffffffffff1633146129c057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f61646d696e3a207775743f000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116612a4257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f43616e6e6f74206265207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60075473ffffffffffffffffffffffffffffffffffffffff163314612b0f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f61646d696e3a207775743f000000000000000000000000000000000000000000604482015290519081900360640190fd5b600f55565b60075473ffffffffffffffffffffffffffffffffffffffff163314612b9a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f61646d696e3a207775743f000000000000000000000000000000000000000000604482015290519081900360640190fd5b6064811115612bf4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806142b06025913960400191505060405180910390fd5b612bff606482613db6565b600c819055600d8290556004546040805192835260208301849052805191927f023010bc68e7f4c0be9887f513c570c7a0f5f511b9716abccd42bf3b8943532b929081900390910190a250565b60085473ffffffffffffffffffffffffffffffffffffffff163314612cd257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6f70657261746f723a207775743f000000000000000000000000000000000000604482015290519081900360640190fd5b612cda61173c565b15612d4657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b60105460ff16612da1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180613fe16031913960400191505060405180910390fd5b601054610100900460ff1615612e02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806140c96022913960400191505060405180910390fd5b600654600454600090815260016020526040902060020154612e239161320f565b431115612e7b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806141176027913960400191505060405180910390fd5b6000612e856134f7565b9050612e9360045482613695565b6004805460010190819055612ea79061346c565b50601080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b60036020528160005260406000208181548110612eef57fe5b90600052602060002001600091509150505481565b600d5481565b600b5481565b612f186134f3565b73ffffffffffffffffffffffffffffffffffffffff16612f36612499565b73ffffffffffffffffffffffffffffffffffffffff1614612fb857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116613024576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806140126026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60105460ff1681565b600e5481565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b60405160009073ffffffffffffffffffffffffffffffffffffffff8416906159d890849084818181858888f193505050503d8060008114613139576040519150601f19603f3d011682016040523d82523d6000602084013e61313e565b606091505b5050905080613198576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806142496023913960400191505060405180910390fd5b505050565b3b151590565b600081815260016020819052604082200154158015906131d3575060008281526001602052604090206002015415155b80156131f057506000828152600160208190526040909120015443115b8015611f40575050600090815260016020526040902060020154431090565b60008282018381101561328357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60008261329957506000611f40565b828202828482816132a657fe5b0414613283576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806141736021913960400191505060405180910390fd5b600080821161336d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161337657fe5b049392505050565b61338661173c565b6133f157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6134426134f3565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190a1565b60008181526001602081905260409091204391810182905560055490916134929161320f565b6002808301919091556005546134aa9143910261320f565b60038201558181556000600682015560408051438152905183917f0e5543feb86a4cd302f2b88b26c42be2d1673013a34e1f98bd6d524dd3b4ab41919081900360200190a25050565b3390565b60008061350f600f544261320f90919063ffffffff16565b90506000806000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b15801561357e57600080fd5b505afa158015613592573d6000803e3d6000fd5b505050506040513d60a08110156135a857600080fd5b5080516020820151606090920151909450909250905083811115613617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180614306602e913960400191505060405180910390fd5b600b548369ffffffffffffffffffff161161367d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180614066603d913960400191505060405180910390fd5b5069ffffffffffffffffffff909116600b5591505090565b600082815260016020819052604090912001546136fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613fb6602b913960400191505060405180910390fd5b600082815260016020526040902060020154431015613767576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806141e06023913960400191505060405180910390fd5b6006546000838152600160205260409020600201546137859161320f565b4311156137dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806141176027913960400191505060405180910390fd5b6137e78282613e2d565b5050565b600082815260016020526040902060020154613852576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806141946029913960400191505060405180910390fd5b6000828152600160205260409020600301544310156138bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061428f6021913960400191505060405180910390fd5b6006546000838152600160205260409020600301546138da9161320f565b431115613932576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806140a36026913960400191505060405180910390fd5b6137e78282613e87565b6064613955600d54600c5461320f90919063ffffffff16565b146139ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603581526020018061413e6035913960400191505060405180910390fd5b6000818152600160205260409020600901541580156139d957506000818152600160205260409020600a0154155b613a4457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f526577617264732063616c63756c617465640000000000000000000000000000604482015290519081900360640190fd5b600081815260016020526040812060048101546005820154919291829182911315613ab55783600701549250613a8e6064611316600c54876006015461328a90919063ffffffff16565b9150613aae6064611316600d54876006015461328a90919063ffffffff16565b9050613af8565b836004015484600501541215613aea5783600801549250613a8e6064611316600c54876006015461328a90919063ffffffff16565b505050600681015460009081905b6009808501849055600a850183905554613b12908261320f565b6009556040805184815260208101849052808201839052905186917f6dfdfcb09c8804d0058826cd2539f1acfbe3cb887c9be03d928035bce0f1a58d919081900360600190a25050505050565b60105460ff16613bba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180613fe16031913960400191505060405180910390fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8101600090815260016020526040902060030154613c44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180614038602e913960400191505060405180910390fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8101600090815260016020526040902060030154431015613cd1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806142d56031913960400191505060405180910390fd5b611dea8161346c565b613ce261173c565b15613d4e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586134426134f3565b600082821115613e2757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828152600160209081526040918290206004810184905582514381529182018490528251909285927f482e76a65b448a42deef26e99e58fb20c85e26f075defff8df6aa80459b39006929081900390910190a2505050565b60008281526001602081815260409283902060058101859055600b810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690931790925582514381529081018490528251919285927fb6ff1fe915db84788cbbbc017f0d2bef9485fad9fd0bd8ce9340fde0d8410dd89281900390910190a2505050565b60405180610180016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b604080516060810190915280600081526000602082018190526040909101529056fe43616e6e6f74206265206d6f7265207468616e20696e74657276616c426c6f636b7343616e206f6e6c79206c6f636b20726f756e6420616674657220726f756e6420686173207374617274656443616e206f6e6c792072756e2061667465722067656e657369735374617274526f756e64206973207472696767657265644f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737343616e206f6e6c7920737461727420726f756e6420616674657220726f756e64206e2d322068617320656e6465644f7261636c652075706461746520726f756e644964206d757374206265206c6172676572207468616e206f7261636c654c6174657374526f756e64496443616e206f6e6c7920656e6420726f756e642077697468696e20627566666572426c6f636b7343616e206f6e6c792072756e2067656e657369734c6f636b526f756e64206f6e636542657420616d6f756e74206d7573742062652067726561746572207468616e206d696e426574416d6f756e7443616e206f6e6c79206c6f636b20726f756e642077697468696e20627566666572426c6f636b737265776172645261746520616e6420747265617375727952617465206d7573742061646420757020746f20544f54414c5f52415445536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7743616e206f6e6c7920656e6420726f756e6420616674657220726f756e6420686173206c6f636b656443616e206f6e6c792072756e2067656e657369735374617274526f756e64206f6e636543616e206f6e6c79206c6f636b20726f756e64206166746572206c6f636b426c6f636b43616e206f6e6c792072756e2061667465722067656e657369735374617274526f756e6420616e642067656e657369734c6f636b526f756e64206973207472696767657265645472616e7366657248656c7065723a20424e425f5452414e534645525f4641494c4544726577617264526174652063616e6e6f74206265206d6f7265207468616e203130302543616e206f6e6c7920656e6420726f756e6420616674657220656e64426c6f636b7472656173757279526174652063616e6e6f74206265206d6f7265207468616e203130302543616e206f6e6c79207374617274206e657720726f756e6420616674657220726f756e64206e2d3220656e64426c6f636b4f7261636c6520757064617465206578636565646564206d61782074696d657374616d7020616c6c6f77616e6365a26469706673582212205f381da2546906c21d47467cb54bd4e02bfd6b81997b4bec99f2fa296c32d26d64736f6c634300060c00330000000000000000000000000567f2323251f0aab15c8dfb1967e4e8a7d42aee00000000000000000000000056b81bff33110b7f810828ec35f0049aa9078d8f000000000000000000000000dac6f676c6c1a2c09498425ad3b2ba657ca891490000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000f00000000000000000000000000000000000000000000000000038d7ea4c68000000000000000000000000000000000000000000000000000000000000000012c

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

0000000000000000000000000567f2323251f0aab15c8dfb1967e4e8a7d42aee00000000000000000000000056b81bff33110b7f810828ec35f0049aa9078d8f000000000000000000000000dac6f676c6c1a2c09498425ad3b2ba657ca891490000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000f00000000000000000000000000000000000000000000000000038d7ea4c68000000000000000000000000000000000000000000000000000000000000000012c

-----Decoded View---------------
Arg [0] : _oracle (address): 0x0567f2323251f0aab15c8dfb1967e4e8a7d42aee
Arg [1] : _adminAddress (address): 0x56b81bff33110b7f810828ec35f0049aa9078d8f
Arg [2] : _operatorAddress (address): 0xdac6f676c6c1a2c09498425ad3b2ba657ca89149
Arg [3] : _intervalBlocks (uint256): 100
Arg [4] : _bufferBlocks (uint256): 15
Arg [5] : _minBetAmount (uint256): 1000000000000000
Arg [6] : _oracleUpdateAllowance (uint256): 300

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000567f2323251f0aab15c8dfb1967e4e8a7d42aee
Arg [1] : 00000000000000000000000056b81bff33110b7f810828ec35f0049aa9078d8f
Arg [2] : 000000000000000000000000dac6f676c6c1a2c09498425ad3b2ba657ca89149
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000064
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000f
Arg [5] : 00000000000000000000000000000000000000000000000000038d7ea4c68000
Arg [6] : 000000000000000000000000000000000000000000000000000000000000012c


Deployed ByteCode Sourcemap

14285:18740:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25167:256;;;;;;;;;;;;;:::i;:::-;;22206:851;;;:::i;15655:35::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;18631:203;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18631:203:0;;:::i;15217:30::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15113:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;15254;;;;;;;;;;;;;:::i;24017:1055::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24017:1055:0;;:::i;26448:184::-;;;;;;;;;;;;;:::i;20463:263::-;;;;;;;;;;;;;:::i;11976:86::-;;;;;;;;;;;;;:::i;15556:36::-;;;;;;;;;;;;;:::i;20225:179::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20225:179:0;;:::i;17880:180::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17880:180:0;;;;:::i;10340:148::-;;;;;;;;;;;;;:::i;14957:61::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14957:61:0;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15079:27;;;;;;;;;;;;;:::i;18918:180::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18918:180:0;;;;:::i;15432:30::-;;;;;;;;;;;;;:::i;21508:641::-;;;;;;;;;;;;;:::i;27337:295::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27337:295:0;;;;;;;;;:::i;23114:851::-;;;:::i;26138:122::-;;;;;;;;;;;;;:::i;14911:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14911:39:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9689:87;;;;;;;;;;;;;:::i;25511:535::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25511:535:0;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15149:27;;;;;;;;;;;;;:::i;19422:313::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19422:313:0;;:::i;18426:122::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18426:122:0;;:::i;26730:508::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26730:508:0;;;;;;;;;:::i;15377:40::-;;;;;;;;;;;;;:::i;18146:195::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18146:195:0;;;;:::i;19191:150::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19191:150:0;;:::i;19818:325::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19818:325:0;;:::i;20784:621::-;;;;;;;;;;;;;:::i;15025:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15025:47:0;;;;;;;;;:::i;15476:32::-;;;;;;;;;;;;;:::i;15334:34::-;;;;;;;;;;;;;:::i;10643:244::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10643:244:0;;;;:::i;15612:36::-;;;;;;;;;;;;;:::i;15522:27::-;;;;;;;;;;;;;:::i;15183:::-;;;;;;;;;;;;;:::i;25167:256::-;17274:12;;;;17260:10;:26;17252:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25254:14:::1;::::0;;25222:29:::1;25279:18:::0;;;25325:12:::1;::::0;25308:53:::1;::::0;25325:12:::1;;25254:14:::0;25308:16:::1;:53::i;:::-;25379:36;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;17313:1;25167:256::o:0;22206:851::-;12302:8;:6;:8::i;:::-;12301:9;12293:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17656:23:::1;17668:10;17656:11;:23::i;:::-;17655:24;17647:57;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;17723:10;17737:9;17723:23;17715:62;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;22287:23:::2;22297:12;;22287:9;:23::i;:::-;22279:54;;;::::0;;::::2;::::0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;22365:12;;22352:9;:25;;22344:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22452:12;::::0;22445:20:::2;::::0;;;:6:::2;:20;::::0;;;;;;;22466:10:::2;22445:32:::0;;;;;;;:39:::2;;::::0;:44;22437:84:::2;;;::::0;;::::2;::::0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;22630:12;::::0;22564:14:::2;22623:20:::0;;;:6:::2;:20;::::0;;;;22674:17:::2;::::0;::::2;::::0;22581:9:::2;::::0;22623:20;22674:29:::2;::::0;22581:9;22674:21:::2;:29::i;:::-;22654:17;::::0;::::2;:49:::0;22733:16:::2;::::0;::::2;::::0;:28:::2;::::0;22754:6;22733:20:::2;:28::i;:::-;22714:16;::::0;::::2;:47:::0;22836:12:::2;::::0;;22803:23:::2;22829:20:::0;;;:6:::2;:20;::::0;;;;;;;22850:10:::2;22829:32:::0;;;;;;;;;22872;;;::::2;22891:13;22872:32:::0;;::::2;::::0;;22915:14;;::::2;:23:::0;;;22949:10:::2;:22:::0;;;;;22977:12;;22949:41;;;;::::2;::::0;;;;;;;;;::::2;::::0;;;;23028:12;;23008:41;;;;;;;22829:32;;23028:12;;22850:10;;23008:41:::2;::::0;;;;;;::::2;17788:1;;;22206:851::o:0;15655:35::-;;;;;;;;;:::o;18631:203::-;17274:12;;;;17260:10;:26;17252:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18734:14:::1;;18717:13;:31;;18709:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18798:12;:28:::0;18631:203::o;15217:30::-;;;;;;:::o;15113:29::-;;;;:::o;15254:::-;;;;:::o;24017:1055::-;17656:23;17668:10;17656:11;:23::i;:::-;17655:24;17647:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17723:10;17737:9;17723:23;17715:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24087:13:::1;::::0;;;:6:::1;:13;::::0;;;;;;;:24:::1;::::0;24079:63:::1;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;24176:13;::::0;;;:6:::1;:13;::::0;;;;:22:::1;;::::0;24161:12:::1;:37;24153:69;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;24242:13;::::0;;;:6:::1;:13;::::0;;;;;;;24256:10:::1;24242:25:::0;;;;;;;;:33:::1;::::0;::::1;;24241:34;24233:62;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;24308:14;24376:13:::0;;;:6:::1;:13;::::0;;;;:26:::1;;::::0;::::1;;24372:490;;;24427:28;24437:5;24444:10;24427:9;:28::i;:::-;24419:63;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;24497:18;;:::i;:::-;-1:-1:-1::0;24518:13:0::1;::::0;;;:6:::1;:13;::::0;;;;;;;24497:34;;::::1;::::0;::::1;::::0;;;;;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;::::1;::::0;::::1;::::0;;;;;;;::::1;::::0;;::::1;::::0;::::1;;;;::::0;;;;24555:13;;;;;;;;;24569:10:::1;24555:25:::0;;;;;;;;;:32;;::::1;::::0;24497:34;;24555:87:::1;::::0;:56:::1;::::0;:36:::1;:56::i;:::-;:60:::0;::::1;:87::i;:::-;24546:96;;24372:490;;;;24737:29;24748:5;24755:10;24737;:29::i;:::-;24729:65;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;24818:13:0::1;::::0;;;:6:::1;:13;::::0;;;;;;;24832:10:::1;24818:25:::0;;;;;;;:32:::1;;::::0;24372:490:::1;24874:23;24900:13:::0;;;:6:::1;:13;::::0;;;;;;;24914:10:::1;24900:25:::0;;;;;;;;24936:15;;::::1;:22:::0;;;::::1;24954:4;24936:22;::::0;;24900:25;24969:45:::1;::::0;25007:6;24969:16:::1;:45::i;:::-;25032:32;::::0;;;;;;;25050:5;;25038:10:::1;::::0;25032:32:::1;::::0;;;;::::1;::::0;;::::1;17788:1;;24017:1055:::0;:::o;26448:184::-;17274:12;;;;17260:10;:26;17252:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12579:8:::1;:6;:8::i;:::-;12571:41;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;26506:16:::2;:24:::0;;26541:23;;;;26575:10:::2;:8;:10::i;:::-;26611:12;::::0;26603:21:::2;::::0;;;;;;::::2;::::0;;;;::::2;::::0;;::::2;26448:184::o:0;20463:263::-;17387:15;;;;17373:10;:29;17365:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12302:8:::1;:6;:8::i;:::-;12301:9;12293:38;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;20548:16:::2;::::0;::::2;;20547:17;20539:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20632:12;::::0;;20647:1:::2;20632:16;20617:31:::0;;;;20659:25:::2;::::0;:11:::2;:25::i;:::-;20695:16;:23:::0;;;::::2;20714:4;20695:23;::::0;;20463:263::o;11976:86::-;12023:4;12047:7;;;;;;;11976:86::o;15556:36::-;;;;:::o;20225:179::-;17274:12;;;;17260:10;:26;17252:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20303:12:::1;:28:::0;;;20369:12:::1;::::0;20349:47:::1;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;20225:179:::0;:::o;17880:180::-;9920:12;:10;:12::i;:::-;9909:23;;:7;:5;:7::i;:::-;:23;;;9901:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17959:27:::1;::::0;::::1;17951:62;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;18024:12;:28:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;17880:180::o;10340:148::-;9920:12;:10;:12::i;:::-;9909:23;;:7;:5;:7::i;:::-;:23;;;9901:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10447:1:::1;10431:6:::0;;10410:40:::1;::::0;::::1;10431:6:::0;;::::1;::::0;10410:40:::1;::::0;10447:1;;10410:40:::1;10478:1;10461:19:::0;;;::::1;::::0;;10340:148::o;14957:61::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15079:27::-;;;;:::o;18918:180::-;17274:12;;;;17260:10;:26;17252:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18992:21:::1;::::0;::::1;18984:56;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;19051:6;:39:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;18918:180::o;15432:30::-;;;;:::o;21508:641::-;17387:15;;;;17373:10;:29;17365:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12302:8:::1;:6;:8::i;:::-;12301:9;12293:38;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;21601:16:::2;::::0;::::2;;:35:::0;::::2;;;-1:-1:-1::0;21621:15:0::2;::::0;::::2;::::0;::::2;;;21601:35;21579:155;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21747:19;21769:21;:19;:21::i;:::-;21747:43;;21857:42;21872:12;;21886;21857:14;:42::i;:::-;21910:45;21939:1;21924:12;;:16;21942:12;21910:13;:45::i;:::-;21966:35;21999:1;21984:12;;:16;21966:17;:35::i;:::-;22085:12;::::0;;22100:1:::2;22085:16;22070:31:::0;;;;22112:29:::2;::::0;:15:::2;:29::i;:::-;12342:1;21508:641::o:0;27337:295::-;27407:4;27424:22;;:::i;:::-;27449:13;;;;:6;:13;;;;;;;;:19;;;;;;;;;;;;27424:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27479:18:0;;:::i;:::-;-1:-1:-1;27500:13:0;;;;:6;:13;;;;;;;;;27479:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27531:70;;-1:-1:-1;27588:12:0;;27569:14;;;;:32;;:18;:32::i;:::-;27554:12;:47;27531:70;:93;;;;-1:-1:-1;27605:14:0;;;;:19;;27531:93;27524:100;;;;27337:295;;;;;:::o;23114:851::-;12302:8;:6;:8::i;:::-;12301:9;12293:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17656:23:::1;17668:10;17656:11;:23::i;:::-;17655:24;17647:57;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;17723:10;17737:9;17723:23;17715:62;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;23195:23:::2;23205:12;;23195:9;:23::i;:::-;23187:54;;;::::0;;::::2;::::0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;23273:12;;23260:9;:25;;23252:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23360:12;::::0;23353:20:::2;::::0;;;:6:::2;:20;::::0;;;;;;;23374:10:::2;23353:32:::0;;;;;;;:39:::2;;::::0;:44;23345:84:::2;;;::::0;;::::2;::::0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;23538:12;::::0;23472:14:::2;23531:20:::0;;;:6:::2;:20;::::0;;;;23582:17:::2;::::0;::::2;::::0;23489:9:::2;::::0;23531:20;23582:29:::2;::::0;23489:9;23582:21:::2;:29::i;:::-;23562:17;::::0;::::2;:49:::0;23641:16:::2;::::0;::::2;::::0;:28:::2;::::0;23662:6;23641:20:::2;:28::i;:::-;23622:16;::::0;::::2;:47:::0;23744:12:::2;::::0;;23711:23:::2;23737:20:::0;;;:6:::2;:20;::::0;;;;;;;23758:10:::2;23737:32:::0;;;;;;;;;23780;;;::::2;::::0;;;23823:14;;::::2;:23:::0;;;23857:10:::2;:22:::0;;;;;23885:12;;23857:41;;;;::::2;::::0;;;;;;;;;::::2;::::0;;;;23936:12;;23916:41;;;;;;;23737:32;;23936:12;;23758:10;;23916:41:::2;::::0;;;;;;::::2;17788:1;;;23114:851::o:0;26138:122::-;17513:12;;;;17499:10;:26;;:59;;-1:-1:-1;17543:15:0;;;;17529:10;:29;17499:59;17491:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12302:8:::1;:6;:8::i;:::-;12301:9;12293:38;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;26207:8:::2;:6;:8::i;:::-;26239:12;::::0;26233:19:::2;::::0;;;;;;::::2;::::0;;;;::::2;::::0;;::::2;26138:122::o:0;14911:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9689:87::-;9735:7;9762:6;;;9689:87;:::o;25511:535::-;25718:16;;;25653:7;25718:16;;;:10;:16;;;;;:23;25635:16;;25653:7;25690:4;;25718:32;;;25709:41;;25705:115;;;-1:-1:-1;25776:16:0;;;;;;;:10;:16;;;;;:23;:32;;;25705:115;25832:23;25872:6;25858:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25858:21:0;;25832:47;;25895:9;25890:104;25914:6;25910:1;:10;25890:104;;;25954:16;;;;;;;:10;:16;;;;;:28;;25971:10;;;;25954:28;;;;;;;;;;;;;;25942:6;25949:1;25942:9;;;;;;;;;;;;;;;;;:40;25922:3;;25890:104;;;-1:-1:-1;26014:6:0;26022:15;;;-1:-1:-1;;;;25511:535:0:o;15149:27::-;;;;:::o;19422:313::-;17274:12;;;;17260:10;:26;17252:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15414:3:::1;19504:11;:25;;19496:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19580:10;:24:::0;;;19630:27:::1;15414:3;19593:11:::0;19630:14:::1;:27::i;:::-;19615:12;:42:::0;;;19688:12:::1;::::0;19702:10:::1;::::0;19675:52:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;19688:12;;19675:52:::1;::::0;;;;;;;::::1;19422:313:::0;:::o;18426:122::-;17274:12;;;;17260:10;:26;17252:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18508:14:::1;:32:::0;18426:122::o;26730:508::-;26799:4;26816:22;;:::i;:::-;26841:13;;;;:6;:13;;;;;;;;:19;;;;;;;;;;;;26816:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26871:18:0;;:::i;:::-;-1:-1:-1;26892:13:0;;;;:6;:13;;;;;;;;;26871:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26920:35;26916:80;;;26979:5;26972:12;;;;;;26916:80;27026:5;:18;;;:204;;;;;27082:5;:15;;;27063:5;:16;;;:34;:71;;;;-1:-1:-1;27121:13:0;27101:16;;:33;;;;;;;;;27063:71;27062:167;;;;27176:5;:15;;;27157:5;:16;;;:34;:71;;;;-1:-1:-1;27215:13:0;27195:16;;:33;;;;;;;;;;26730:508;-1:-1:-1;;;;;26730:508:0:o;15377:40::-;15414:3;15377:40;:::o;18146:195::-;17274:12;;;;17260:10;:26;17252:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18231:30:::1;::::0;::::1;18223:65;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;18299:15;:34:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;18146:195::o;19191:150::-;17274:12;;;;17260:10;:26;17252:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19287:21:::1;:46:::0;19191:150::o;19818:325::-;17274:12;;;;17260:10;:26;17252:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15414:3:::1;19904:13;:27;;19896:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19997:29;15414:3;20012:13:::0;19997:14:::1;:29::i;:::-;19984:10;:42:::0;;;20037:12:::1;:28:::0;;;20096:12:::1;::::0;20083:52:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;20096:12;;20083:52:::1;::::0;;;;;;;;;::::1;19818:325:::0;:::o;20784:621::-;17387:15;;;;17373:10;:29;17365:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12302:8:::1;:6;:8::i;:::-;12301:9;12293:38;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;20867:16:::2;::::0;::::2;;20859:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20957:15;::::0;::::2;::::0;::::2;;;20956:16;20948:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21095:12;::::0;21067::::2;::::0;21060:20:::2;::::0;;;:6:::2;:20;::::0;;;;:30:::2;;::::0;:48:::2;::::0;:34:::2;:48::i;:::-;21044:12;:64;;21022:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21188:19;21210:21;:19;:21::i;:::-;21188:43;;21242:42;21257:12;;21271;21242:14;:42::i;:::-;21312:12;::::0;;21327:1:::2;21312:16;21297:31:::0;;;;21339:25:::2;::::0;:11:::2;:25::i;:::-;-1:-1:-1::0;21375:15:0::2;:22:::0;;;::::2;;;::::0;;20784:621::o;15025:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15476:32::-;;;;:::o;15334:34::-;;;;:::o;10643:244::-;9920:12;:10;:12::i;:::-;9909:23;;:7;:5;:7::i;:::-;:23;;;9901:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10732:22:::1;::::0;::::1;10724:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10834:6;::::0;;10813:38:::1;::::0;::::1;::::0;;::::1;::::0;10834:6;::::1;::::0;10813:38:::1;::::0;::::1;10862:6;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;10643:244::o;15612:36::-;;;;;;:::o;15522:27::-;;;;:::o;15183:::-;;;;;;:::o;32141:203::-;32233:37;;32215:12;;32233:7;;;;32246:5;;32260;;32215:12;32233:37;32215:12;32233:37;32260:5;32233:7;32246:5;32233:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32214:56;;;32289:7;32281:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32141:203;;;:::o;32352:191::-;32482:17;32527:8;;;32352:191::o;32735:287::-;32792:4;32829:13;;;:6;:13;;;;;;;:24;;:29;;;;:74;;-1:-1:-1;32875:13:0;;;;:6;:13;;;;;:23;;;:28;;32829:74;:130;;;;-1:-1:-1;32935:13:0;;;;:6;:13;;;;;;;;:24;;32920:12;:39;32829:130;:185;;;;-1:-1:-1;;32991:13:0;;;;:6;:13;;;;;:23;;;32976:12;:38;;32735:287::o;2828:179::-;2886:7;2918:5;;;2942:6;;;;2934:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2998:1;2828:179;-1:-1:-1;;;2828:179:0:o;3707:220::-;3765:7;3789:6;3785:20;;-1:-1:-1;3804:1:0;3797:8;;3785:20;3828:5;;;3832:1;3828;:5;:1;3852:5;;;;;:10;3844:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4405:153;4463:7;4495:1;4491;:5;4483:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4549:1;4545;:5;;;;;;;4405:153;-1:-1:-1;;;4405:153:0:o;13035:120::-;12579:8;:6;:8::i;:::-;12571:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13104:5:::1;13094:15:::0;;;::::1;::::0;;13125:22:::1;13134:12;:10;:12::i;:::-;13125:22;::::0;;::::1;::::0;;::::1;::::0;;;;;;;::::1;::::0;;::::1;13035:120::o:0;28118:377::-;28174:19;28196:13;;;:6;:13;;;;;;;;28239:12;28220:16;;;:31;;;28297:14;;28196:13;;28280:32;;:16;:32::i;:::-;28262:15;;;;:50;;;;28357:14;;28340:36;;:12;;28357:18;28340:16;:36::i;:::-;28323:14;;;:53;28387:19;;;:11;28417:17;;;:21;28456:31;;;28474:12;28456:31;;;;28401:5;;28456:31;;;;;;;;;;28118:377;;:::o;8229:106::-;8317:10;8229:106;:::o;31602:531::-;31651:6;31670:29;31702:42;31722:21;;31702:15;:19;;:42;;;;:::i;:::-;31670:74;;31756:14;31772:12;31788:17;31811:6;;;;;;;;;;;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31811:24:0;;;;;;;;;;;;;-1:-1:-1;31811:24:0;;-1:-1:-1;31811:24:0;-1:-1:-1;31854:34:0;;;;31846:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31968:19;;31958:7;:29;;;31950:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32086:16:0;;;;32064:19;:38;32120:5;-1:-1:-1;;31602:531:0;:::o;28545:419::-;28626:13;;;;:6;:13;;;;;;;;:24;;28618:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28738:13;;;;:6;:13;;;;;:23;;;28722:12;:39;;28714:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28864:12;;28836:13;;;;:6;:13;;;;;:23;;;:41;;:27;:41::i;:::-;28820:12;:57;;28812:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28932:24;28943:5;28950;28932:10;:24::i;:::-;28545:419;;:::o;29232:409::-;29312:13;;;;:6;:13;;;;;:23;;;29304:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29421:13;;;;:6;:13;;;;;:22;;;29405:12;:38;;29397:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29543:12;;29516:13;;;;:6;:13;;;;;:22;;;:40;;:26;:40::i;:::-;29500:12;:56;;29492:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29610:23;29620:5;29627;29610:9;:23::i;29963:1481::-;15414:3;30033:28;30048:12;;30033:10;;:14;;:28;;;;:::i;:::-;:42;30025:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30152:13;;;;:6;:13;;;;;:33;;;:38;:73;;;;-1:-1:-1;30194:13:0;;;;:6;:13;;;;;:26;;;:31;30152:73;30144:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30259:19;30281:13;;;:6;:13;;;;;30449:15;;;;30430:16;;;;30281:13;;30259:19;;;;;30430:34;30426:730;;;30503:5;:16;;;30481:38;;30549:49;15414:3;30549:33;30571:10;;30549:5;:17;;;:21;;:33;;;;:::i;:49::-;30534:64;;30627:51;15414:3;30627:35;30649:12;;30627:5;:17;;;:21;;:35;;;;:::i;:51::-;30613:65;;30426:730;;;30750:5;:15;;;30731:5;:16;;;:34;30727:429;;;30804:5;:16;;;30782:38;;30850:49;15414:3;30850:33;30872:10;;30850:5;:17;;;:21;;:33;;;;:::i;30727:429::-;-1:-1:-1;;;31127:17:0;;;;31066:1;;;;30727:429;31166:25;;;;:47;;;31224:18;;;:33;;;31315:14;:31;;31334:11;31315:18;:31::i;:::-;31298:14;:48;31364:72;;;;;;;;;;;;;;;;;;;;31382:5;;31364:72;;;;;;;;;;29963:1481;;;;;:::o;27719:391::-;27787:16;;;;27779:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27883:9;;;27876:17;;;;:6;:17;;;;;:26;;;27868:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28000:9;;;27993:17;;;;:6;:17;;;;;:26;;;27977:12;:42;;27969:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28084:18;28096:5;28084:11;:18::i;12776:118::-;12302:8;:6;:8::i;:::-;12301:9;12293:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12836:7:::1;:14:::0;;;::::1;::::0;::::1;::::0;;12866:20:::1;12873:12;:10;:12::i;3290:158::-:0;3348:7;3381:1;3376;:6;;3368:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3435:5:0;;;3290:158::o;28972:211::-;29041:19;29063:13;;;:6;:13;;;;;;;;;29087:15;;;:23;;;29128:47;;29145:12;29128:47;;;;;;;;;;29063:13;;29070:5;;29128:47;;;;;;;;;;;28972:211;;;:::o;29649:247::-;29717:19;29739:13;;;:6;:13;;;;;;;;;29763:16;;;:24;;;29798:18;;;:25;;;;;;;;;;29841:47;;29857:12;29841:47;;;;;;;;;;29739:13;;29746:5;;29841:47;;;;;;;;;;29649:247;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

ipfs://5f381da2546906c21d47467cb54bd4e02bfd6b81997b4bec99f2fa296c32d26d
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.