Contract 0xdCbA3fbd7BBc28abD18A472D28358089467A8a74

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xb05107040ff3e60b80b52b859184b48d18e52b85e7c6c47102582f00ba9581baConvert To Rise112691712021-09-27 3:58:186 mins ago0xed6366d3d98d6259f0eb611224776eaad55eb3d8 IN  Centric: CNR Token0 BNB0.00045354
0x4431283176400bc02a2db8097892e6b0d948cdd5d903492c39281d2a92cc4112Convert To Swap112691292021-09-27 3:56:128 mins ago0x5fc64a19f41d3eaa2ab1b0f819ddc4314d505941 IN  Centric: CNR Token0 BNB0.000402165
0xa0f94f6954e22c437456f39887b2cde5a31e7facbe1eabf9545a3dc49cc6ae64Convert To Rise112686292021-09-27 3:30:3833 mins ago0xad66e53ff84708811422cbd788fa2b7afba165ad IN  Centric: CNR Token0 BNB0.00037848
0xf5b87cab4f0ec7ccef1c18053c811ff9a2122609e95e71d072e7a5d3a13c7877Convert To Swap112684832021-09-27 3:23:1841 mins ago0x5fc64a19f41d3eaa2ab1b0f819ddc4314d505941 IN  Centric: CNR Token0 BNB0.000402165
0x3100c710314215326079d678565cd2217dd6d152f69051102f0f6c3a504f310dDo Balance112684462021-09-27 3:21:2743 mins ago0xeade8e053df745ee3b9f834e0ac8b4732f2eb79c IN  Centric: CNR Token0 BNB0.000313925
0x186b0e033eb9f9ad8049dff3ea1de568a604f7bd946bc28cc9bd954c477dff2dConvert To Rise112682002021-09-27 3:09:0955 mins ago0xe1311bfcc25c3b0283e2d2f31752ca6926c86554 IN  Centric: CNR Token0 BNB0.00030354
0x294f49188585fd7b3a10f63609ad7c37bb94c5ed8576adc1764713142f252a84Convert To Rise112675092021-09-27 2:32:341 hr 31 mins ago0x97d1187791e332e9f7a720f712f2c92b6385bd26 IN  Centric: CNR Token0 BNB0.00037848
0x2948ede63017cef86362240cc3a7fff9e942a58d4da726956bdffc76df4b87e7Do Balance112673182021-09-27 2:21:301 hr 43 mins ago0xeade8e053df745ee3b9f834e0ac8b4732f2eb79c IN  Centric: CNR Token0 BNB0.000313925
0x716c3b488605e1a8346a1aeebfa9d5cddb4147c29cfa3614e1a77550d067cb03Transfer112661292021-09-27 1:22:022 hrs 42 mins ago0x40223c67483d478d03e26674c3fcc29de6fa376d IN  Centric: CNR Token0 BNB0.000179935
0x963ef4c849ba594895cd8b419c5e9fc9b597a290ef09f9f7d57ad9026f632750Do Balance112661182021-09-27 1:21:292 hrs 43 mins ago0xeade8e053df745ee3b9f834e0ac8b4732f2eb79c IN  Centric: CNR Token0 BNB0.000313925
0x5063cec81f48d11039b91241dedec2f1c9e06e159f9c1d3486b39ce4b7347c4aTransfer112661132021-09-27 1:21:142 hrs 43 mins ago0x40223c67483d478d03e26674c3fcc29de6fa376d IN  Centric: CNR Token0 BNB0.000254875
0x3df1135cc4efba703de2861d0244ac8dd43dd8727009ddbb7f95658c2bfe7293Transfer112659372021-09-27 1:12:252 hrs 52 mins ago0xcfdeac54fa8df859d397d57f742323da5c0d1576 IN  Centric: CNR Token0 BNB0.000179875
0xd55fbfbab5d221be81737f12c9e2c6867226a5f4e73a44f823cdf206e98cbdfbConvert To Swap112659352021-09-27 1:12:192 hrs 52 mins ago0xcfdeac54fa8df859d397d57f742323da5c0d1576 IN  Centric: CNR Token0 BNB0.000402165
0xad73c4aee08dcf2022c9d46f279e621bfd1075b2d0d23776cf2e9b196177c17aConvert To Rise112657952021-09-27 1:05:122 hrs 59 mins ago0x9ceaef19468348d58f6ed13569e0390a1cf64aa0 IN  Centric: CNR Token0 BNB0.00037848
0x87ca1d2362540a8e174a027959c1e8d30ae4a980c8cb5ea33c6a83132953638fTransfer112655562021-09-27 0:52:093 hrs 12 mins ago0x1538fd858ee5be1c6924b7a95e7a6359de775102 IN  Centric: CNR Token0 BNB0.000254995
0xb8e7c126a800b10f595f851590f533f3cd796fee1c098c0364f3c090f9e5ed03Transfer112654502021-09-27 0:46:513 hrs 17 mins ago0x959cb475f562a94411d2edcc22cc15e0c07b5bc2 IN  Centric: CNR Token0 BNB0.000104875
0x8a549d6b4dfc5e3958f51d9734fd15b9a148b3d219a5eab9e9eceb5c893b0068Transfer112654492021-09-27 0:46:483 hrs 17 mins ago0x959cb475f562a94411d2edcc22cc15e0c07b5bc2 IN  Centric: CNR Token0 BNB0.000180055
0x442243184eb9b31b6b2fa1d0012f2910db1beca8b7394d2e1fb041ee93c30996Transfer112654462021-09-27 0:46:393 hrs 17 mins ago0x149ff95d871716c5f31fa9b347eccc84d0faab4a IN  Centric: CNR Token0 BNB0.000179875
0x10b8e5b8424f9db496e1a7c22b400fc17f9a52c93782a55ff595a989d5b7b7d8Transfer112654442021-09-27 0:46:333 hrs 17 mins ago0x149ff95d871716c5f31fa9b347eccc84d0faab4a IN  Centric: CNR Token0 BNB0.000179935
0xdc2b0575ef5b2486b4b138f49f502f92d47aa9d01c749cab2d361e017d34f0f5Transfer112654042021-09-27 0:44:333 hrs 19 mins ago0x959cb475f562a94411d2edcc22cc15e0c07b5bc2 IN  Centric: CNR Token0 BNB0.000179875
0x7de95870e9bf5ffd9d6ab8617606b719f1d98351547266401a3e796fafe91a79Transfer112654032021-09-27 0:44:303 hrs 20 mins ago0x959cb475f562a94411d2edcc22cc15e0c07b5bc2 IN  Centric: CNR Token0 BNB0.000254875
0x4ac1766b8730e89ab99a26185914e3fd1f15f23687b8f0420cc6221f8425faa0Transfer112653462021-09-27 0:41:393 hrs 22 mins ago0x959cb475f562a94411d2edcc22cc15e0c07b5bc2 IN  Centric: CNR Token0 BNB0.000179875
0xb4b4f05c15357bf125b49100d39421d2f7f861da63cf1ce75b4b3b57f9ab62d4Transfer112653452021-09-27 0:41:363 hrs 22 mins ago0x959cb475f562a94411d2edcc22cc15e0c07b5bc2 IN  Centric: CNR Token0 BNB0.000254875
0x18cce2eb2701f94af07079254f3e2333d5291a68e6ecd5eb4fe72573c74f5b15Convert To Rise112653022021-09-27 0:39:273 hrs 25 mins ago0x149ff95d871716c5f31fa9b347eccc84d0faab4a IN  Centric: CNR Token0 BNB0.00037854
0x9bfa8e626ed57e5ff5825d873a683e07cd0b00f66544ddac40a9bcd9ae6887c2Do Balance112649442021-09-27 0:21:303 hrs 43 mins ago0xeade8e053df745ee3b9f834e0ac8b4732f2eb79c IN  Centric: CNR Token0 BNB0.000313925
[ Download CSV Export 

OVERVIEW

Centric is an innovative dual-token digital currency and decentralized blockchain protocol built on sound economics. The dual-token model rewards adoption with a fixed hourly yield, and stabilizes over time as it self-regulates token supply to meet ongoing changes in demand.

Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CentricRise

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity Multiple files format)

File 1 of 7: CentricRise.sol
//SPDX-License-Identifier: Unlicense
pragma solidity 0.7.6;

import './BEP20.sol';
import './RoundMath.sol';
import './DateLib.sol';
import './SafeMath.sol';

abstract contract SwapInterface {
    function totalSupply() public view virtual returns (uint256);

    function balanceOf(address who) external view virtual returns (uint256);

    function mintFromRise(address to, uint256 value) public virtual returns (bool);

    function burnFromRise(address tokensOwner, uint256 value) external virtual returns (bool);
}

contract CentricRise is BEP20 {
    using RoundMath for uint256;
    using DateLib for uint256;
    using SafeMath for uint256;

    /**
     * STATE VARIABLES
     */
    address public swapContract;
    uint256 public quarantineBalance;
    uint256 public lastBlockNumber; // number of last created block
    uint256 public lastBalancedHour;

    // Price of Rise in USD has base of PRICE_BASE
    uint256 constant PRICE_BASE = 10**8;

    // Inital price of Rise in USD
    uint256 constant INITIAL_PRICE = 8302083331; // first block to mint is 450895 - $83.04040810

    // Structure of a Price Block
    struct Block {
        uint256 risePrice; // USD price of Rise for the block
        uint256 growthRate; // FutureGrowthRate value at the time of block creation
        //solium-disable-next-line max-len
        uint256 change; // percentage (base of PRICE_BASE), RisePrice change relative to prev. block
        uint256 created; // hours, Unix epoch time
    }

    // Price Blocks for a given hour (number of hours since epoch time)
    mapping(uint256 => Block) public hoursToBlock;

    /**
     * Price factors for months with [28, 29, 30, 31] days,
     * price factors determine compounding hourly growth
     * from the headling monthly growthRate,
     * calculated as (1+r)^(1/t)-1
     * where:
     * r - growthRate,
     * t - number of hours in a given month
     *
     * e.g.: for growthRate=2850 (2850/GROWTH_RATE_BASE=0.285=28.5%)
     * price factors are (considering PRICE_FACTOR_BASE): [37322249, 36035043, 34833666, 33709810]
     */
    mapping(uint256 => uint256[4]) public growthRateToPriceFactors;
    uint256 constant GROWTH_RATE_BASE = 10**4;
    uint256 constant PRICE_FACTOR_BASE = 10**11;

    bool public priceFactorsLocked = false;

    event DoBalance(uint256 indexed currentHour, uint256 riseAmountBurnt);

    event ConvertToSwap(
        address indexed converter,
        uint256 riseAmountSent,
        uint256 swapAmountReceived
    );

    event ConvertToRise(
        address indexed converter,
        uint256 swapAmountSent,
        uint256 riseAmountReceived
    );

    event MintSwap(address receiver, uint256 amount);

    event BurnSwap(uint256 amountBurnt);

    event PriceFactorSet(
        uint256 growthRate,
        uint256 priceFactor0,
        uint256 priceFactor1,
        uint256 priceFactor2,
        uint256 priceFactor3
    );

    event BlockCreated(
        uint256 blockNumber,
        uint256 risePrice,
        uint256 growthRate,
        uint256 change,
        uint256 created
    );

    event QuarantineBalanceBurnt(uint256 amount);

    event LostTokensBurnt(uint256 amount);

    /**
     * Creates Rise contract. Also sets the Swap address
     * to the contract storage to be able to interact with it.
     * Mints 1 billion tokens to _mintSaver address.
     */
    constructor(address _mintSaver, address _swapContract) BEP20('Centric RISE', 'CNR', 8) {
        _mint(_mintSaver, 100000000000000000); // 1 Billion
        swapContract = _swapContract;
    }

    // Returns price of Rise for the current hour
    function getCurrentPrice() external view returns (uint256) {
        require(hoursToBlock[getCurrentHour()].risePrice > 0, 'BLOCK_NOT_DEFINED');
        return hoursToBlock[getCurrentHour()].risePrice;
    }

    // Returns price of Rise at a specified hour
    function getPrice(uint256 _hour) external view returns (uint256) {
        require(hoursToBlock[_hour].risePrice > 0, 'BLOCK_NOT_DEFINED');
        return hoursToBlock[_hour].risePrice;
    }

    /**
     *  Returns Price Block data
     *  uint256 risePrice;     // USD price of Rise for the block
     *  uint256 growthRate;    // growthRate value of the risePrice
     *  uint256 change;        // percentage (base of PRICE_BASE), RisePrice change relative to prev. block
     *  uint256 created;       // hours, unix epoch time
     */
    function getBlockData(uint256 _hoursEpoch)
        external
        view
        returns (
            uint256 _risePrice,
            uint256 _growthRate,
            uint256 _change,
            uint256 _created
        )
    {
        require(_hoursEpoch > 0, 'EMPTY_HOURS_VALUE');
        require(hoursToBlock[_hoursEpoch].risePrice > 0, 'BLOCK_NOT_DEFINED');

        _risePrice = hoursToBlock[_hoursEpoch].risePrice;
        _growthRate = hoursToBlock[_hoursEpoch].growthRate;
        _change = hoursToBlock[_hoursEpoch].change;
        _created = hoursToBlock[_hoursEpoch].created;

        return (_risePrice, _growthRate, _change, _created);
    }

    /**
     * Single call creates ONE Price Block with specified monthly _growthRate.
     * For creating a batch of blocks function needs to be run according amount of times.
     * Admin should always make sure that there is a block for the currentHour
     * and if not - create it. Otherwise users will not be able to convert tokens
     * until a new block is created.
     * _blockNumber - always has to be lastBlockNumber + 1 (works only as a security check)
     * _growthRate - must be specified in growthRateToPriceFactors
     * percentage (fraction of 1, e.g.: 0.3)
     * presented as integer with base of GROWTH_RATE_BASE (to be divided by GROWTH_RATE_BASE to get a fraction of 1)
     */
    function doCreateBlock(uint256 _blockNumber, uint256 _growthRate)
        external
        onlyAdmin()
        returns (bool _success)
    {
        require(priceFactorsLocked, 'PRICE_FACTORS_MUST_BE_LOCKED');

        require(_growthRate != 0, 'GROWTH_RATE_CAN_NOT_BE_ZERO');
        require(_growthRate < GROWTH_RATE_BASE, 'GROWTH_RATE_IS_GREATER_THAN_GROWTH_RATE_BASE');
        require(growthRateToPriceFactors[_growthRate][0] > 0, 'GROWTH_RATE_IS_NOT_SPECIFIED');

        require(_createBlock(_blockNumber, _growthRate), 'FAILED_TO_CREATE_BLOCK');
        return true;
    }

    /**
     * set growthRateToPriceFactors
     * _priceFactors - see comments for mapping growthRateToPriceFactors
     */
    function setPriceFactors(uint256 _growthRate, uint256[4] memory _priceFactors)
        external
        onlyAdmin()
        returns (bool _success)
    {
        require(priceFactorsLocked == false, 'PRICE_FACTORS_ALREADY_LOCKED');

        require(_growthRate != 0, 'GROWTH_RATE_CAN_NOT_BE_ZERO');
        require(_growthRate < GROWTH_RATE_BASE, 'GROWTH_RATE_IS_GREATER_THAN_GROWTH_RATE_BASE');

        require(_priceFactors[0] > 0, 'PRICE_FACTOR_0_CAN_NOT_BE_ZERO');
        require(_priceFactors[0] < 103200117, 'PRICE_FACTOR_0_IS_TOO_BIG');
        require(_priceFactors[1] > 0, 'PRICE_FACTOR_1_CAN_NOT_BE_ZERO');
        require(_priceFactors[1] < 99639720, 'PRICE_FACTOR_1_IS_TOO_BIG');
        require(_priceFactors[2] > 0, 'PRICE_FACTOR_2_CAN_NOT_BE_ZERO');
        require(_priceFactors[2] < 96316797, 'PRICE_FACTOR_2_IS_TOO_BIG');
        require(_priceFactors[3] > 0, 'PRICE_FACTOR_3_CAN_NOT_BE_ZERO');
        require(_priceFactors[3] < 93208356, 'PRICE_FACTOR_3_IS_TOO_BIG');

        require(
            _priceFactors[0] > _priceFactors[1] &&
                _priceFactors[1] > _priceFactors[2] &&
                _priceFactors[2] > _priceFactors[3],
            'PRICE_FACTORS_ARE_NOT_VALID'
        );

        growthRateToPriceFactors[_growthRate] = _priceFactors;

        emit PriceFactorSet(
            _growthRate,
            _priceFactors[0],
            _priceFactors[1],
            _priceFactors[2],
            _priceFactors[3]
        );
        return true;
    }

    /**
     * Call only after all priceFactors have been set
     * Call before creating first block
     */
    function lockPriceFactors() external onlyAdmin() returns (bool _success) {
        priceFactorsLocked = true;
        return true;
    }

    /**
     * Public function that burns Rise from quarantine
     * according to the burnQuarantine() formula.
     * Needed for economic logic of Rise token.
     */
    function doBalance() external returns (bool _success) {
        require(hoursToBlock[getCurrentHour()].risePrice != 0, 'CURRENT_PRICE_BLOCK_NOT_DEFINED');
        require(lastBalancedHour < getCurrentHour(), 'CHANGE_IS_ALREADY_BURNT_IN_THIS_HOUR');

        lastBalancedHour = getCurrentHour();

        uint256 _riseBurnt = _burnQuarantined();

        emit DoBalance(getCurrentHour(), _riseBurnt);
        return true;
    }

    /**
     * Public function that allows users to convert Swap tokens to Rise ones.
     * Amount of received Rise tokens depends on the risePrice of the current block.
     */
    function convertToRise(uint256 _swapAmount) external returns (bool _success) {
        require(hoursToBlock[getCurrentHour()].risePrice != 0, 'CURRENT_PRICE_BLOCK_NOT_DEFINED');

        require(
            SwapInterface(swapContract).balanceOf(msg.sender) >= _swapAmount,
            'INSUFFICIENT_SWAP_BALANCE'
        );

        require(
            SwapInterface(swapContract).burnFromRise(msg.sender, _swapAmount),
            'BURNING_SWAP_FAILED'
        );

        emit BurnSwap(_swapAmount);

        uint256 _riseToDequarantine =
            (_swapAmount.mul(PRICE_BASE)).div(hoursToBlock[getCurrentHour()].risePrice);

        quarantineBalance = quarantineBalance.sub(_riseToDequarantine);
        require(this.transfer(msg.sender, _riseToDequarantine), 'CONVERT_TO_RISE_FAILED');

        emit ConvertToRise(msg.sender, _swapAmount, _riseToDequarantine);
        return true;
    }

    /**
     * Public function that allows users to convert Rise tokens to Swap ones.
     * Amount of received Swap tokens depends on the risePrice of a current block.
     */
    function convertToSwap(uint256 _riseAmount) external returns (uint256) {
        require(hoursToBlock[getCurrentHour()].risePrice != 0, 'CURRENT_PRICE_BLOCK_NOT_DEFINED');

        require(balanceOf(msg.sender) >= _riseAmount, 'INSUFFICIENT_RISE_BALANCE');

        quarantineBalance = quarantineBalance.add(_riseAmount);
        require(transfer(address(this), _riseAmount), 'RISE_TRANSFER_FAILED');

        uint256 _swapToIssue =
            (_riseAmount.mul(hoursToBlock[getCurrentHour()].risePrice)).div(PRICE_BASE);

        require(
            SwapInterface(swapContract).mintFromRise(msg.sender, _swapToIssue),
            'SWAP_MINT_FAILED'
        );

        emit MintSwap(msg.sender, _swapToIssue);

        emit ConvertToSwap(msg.sender, _riseAmount, _swapToIssue);
        return _swapToIssue;
    }

    /**
     * Function is needed to burn lost tokens that probably were sent
     * to the contract address by mistake.
     */
    function burnLostTokens() external onlyContractOwner() returns (bool _success) {
        uint256 _amount = balanceOf(address(this)).sub(quarantineBalance);

        _burn(address(this), _amount);

        emit LostTokensBurnt(_amount);
        return true;
    }

    /**
     * Internal function that implements logic to burn a part of Rise tokens on quarantine.
     * Formula is based on network capitalization rules -
     * Network capitalization of quarantined Rise must be equal to
     * network capitalization of Swap
     * calculated as (q * pRISE - c * pSWAP) / pRISE
     * where:
     * q - quarantined Rise,
     * pRISE - current risePrice
     * c - current swap supply
     * pSwap - Swap pegged price ($1 USD fixed conversion price)
     */
    function _burnQuarantined() internal returns (uint256) {
        uint256 _quarantined = quarantineBalance;
        uint256 _currentPrice = hoursToBlock[getCurrentHour()].risePrice;
        uint256 _swapSupply = SwapInterface(swapContract).totalSupply();

        uint256 _riseToBurn =
            ((((_quarantined.mul(_currentPrice)).div(PRICE_BASE)).sub(_swapSupply)).mul(PRICE_BASE))
                .div(_currentPrice);

        quarantineBalance = quarantineBalance.sub(_riseToBurn);
        _burn(address(this), _riseToBurn);

        emit QuarantineBalanceBurnt(_riseToBurn);
        return _riseToBurn;
    }

    /**
     * Internal function for creating a new Price Block.
     */
    function _createBlock(uint256 _expectedBlockNumber, uint256 _growthRate)
        internal
        returns (bool _success)
    {
        uint256 _lastPrice;
        uint256 _nextBlockNumber;

        if (lastBlockNumber == 0) {
            require(_expectedBlockNumber > getCurrentHour(), 'FIRST_BLOCK_MUST_BE_IN_THE_FUTURE');
            require(
                _expectedBlockNumber < getCurrentHour() + 365 * 24,
                'FIRST_BLOCK_MUST_BE_WITHIN_ONE_YEAR'
            );
            _lastPrice = INITIAL_PRICE;
            _nextBlockNumber = _expectedBlockNumber;
        } else {
            _lastPrice = hoursToBlock[lastBlockNumber].risePrice;
            _nextBlockNumber = lastBlockNumber.add(1);
        }

        require(_nextBlockNumber == _expectedBlockNumber, 'WRONG_BLOCK_NUMBER');

        uint256 _risePriceFactor;

        uint256 _monthBlocks = (_nextBlockNumber * 60 * 60 * 1000).getHoursInMonth();
        if (_monthBlocks == 28 * 24) _risePriceFactor = growthRateToPriceFactors[_growthRate][0];
        else if (_monthBlocks == 29 * 24)
            _risePriceFactor = growthRateToPriceFactors[_growthRate][1];
        else if (_monthBlocks == 30 * 24)
            _risePriceFactor = growthRateToPriceFactors[_growthRate][2];
        else _risePriceFactor = growthRateToPriceFactors[_growthRate][3];

        uint256 _risePrice =
            ((_risePriceFactor.mul(_lastPrice)).add(_lastPrice.mul(PRICE_FACTOR_BASE))).ceilDiv(
                PRICE_FACTOR_BASE
            );

        uint256 _change = (_risePrice.sub(_lastPrice)).mul(PRICE_BASE).roundDiv(_lastPrice);
        uint256 _created = getCurrentHour();

        hoursToBlock[_nextBlockNumber] = Block({
            risePrice: _risePrice,
            growthRate: _growthRate,
            change: _change,
            created: _created
        });

        lastBlockNumber = _nextBlockNumber;

        emit BlockCreated(_nextBlockNumber, _risePrice, _growthRate, _change, _created);
        return true;
    }

    // For testing purposes
    function getCurrentTime() public view virtual returns (uint256) {
        return block.timestamp;
    }

    // Helper function
    function getCurrentHour() public view returns (uint256) {
        return getCurrentTime().div(1 hours);
    }
}

File 2 of 7: Administrable.sol
//SPDX-License-Identifier: Unlicense
pragma solidity 0.7.6;

import './Claimable.sol';

contract Administrable is Claimable {
    mapping(address => bool) public isAdmin;

    event AdminAppointed(address admin);
    event AdminDismissed(address admin);

    constructor() {
        isAdmin[owner] = true;

        emit AdminAppointed(owner);
    }

    modifier onlyAdmin() {
        require(isAdmin[msg.sender], 'NOT_AN_ADMIN');
        _;
    }

    function appointAdmin(address _newAdmin) public onlyContractOwner() returns (bool success) {
        if (isAdmin[_newAdmin] == false) {
            isAdmin[_newAdmin] = true;
        }

        emit AdminAppointed(_newAdmin);
        return true;
    }

    function dismissAdmin(address _admin) public onlyContractOwner() returns (bool success) {
        isAdmin[_admin] = false;

        emit AdminDismissed(_admin);
        return true;
    }
}

File 3 of 7: BEP20.sol
//SPDX-License-Identifier: Unlicense
pragma solidity 0.7.6;

import './SafeMath.sol';
import './Administrable.sol';

interface IBEP20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the token decimals.
     */
    function decimals() external view returns (uint8);

    /**
     * @dev Returns the token symbol.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the token name.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the bep token owner.
     */
    function getOwner() external view returns (address);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address _owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract BEP20 is IBEP20, Administrable {
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    using SafeMath for uint256;

    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowed;

    uint256 private _totalSupply;

    uint256 private _totalBurnt;

    constructor(
        string memory name_,
        string memory symbol_,
        uint8 decimals_
    ) {
        _name = name_;
        _symbol = symbol_;
        _decimals = decimals_;
    }

    function name() public view override returns (string memory) {
        return _name;
    }

    function symbol() public view override returns (string memory) {
        return _symbol;
    }

    function decimals() public view override returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

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

    function totalBurnt() public view returns (uint256) {
        return _totalBurnt;
    }

    function balanceOf(address owner) public view override returns (uint256) {
        return _balances[owner];
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowed[owner][spender];
    }

    function transfer(address to, uint256 value) public virtual override returns (bool) {
        _transfer(msg.sender, to, value);
        return true;
    }

    function approve(address spender, uint256 value) public override returns (bool) {
        require(spender != address(0), 'spender cannot be address(0)');

        _allowed[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) public override returns (bool) {
        _allowed[from][msg.sender] = _allowed[from][msg.sender].sub(value);
        _transfer(from, to, value);
        emit Approval(from, msg.sender, _allowed[from][msg.sender]);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        require(spender != address(0), 'spender cannot be address(0)');

        _allowed[msg.sender][spender] = (_allowed[msg.sender][spender].add(addedValue));
        emit Approval(msg.sender, spender, _allowed[msg.sender][spender]);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        require(spender != address(0), 'spender cannot be address(0)');

        _allowed[msg.sender][spender] = (_allowed[msg.sender][spender].sub(subtractedValue));
        emit Approval(msg.sender, spender, _allowed[msg.sender][spender]);
        return true;
    }

    function _transfer(
        address from,
        address to,
        uint256 value
    ) internal {
        require(from != address(0), 'from cannot be address(0)');
        require(to != address(0), 'to cannot be address(0)');

        _balances[from] = _balances[from].sub(value);
        _balances[to] = _balances[to].add(value);
        emit Transfer(from, to, value);
    }

    function _mint(address account, uint256 value) internal {
        require(account != address(0), 'account cannot be address(0)');

        _totalSupply = _totalSupply.add(value);
        _balances[account] = _balances[account].add(value);
        emit Transfer(address(0), account, value);
    }

    function _burn(address account, uint256 value) internal {
        require(account != address(0), 'account cannot be address(0)');

        _totalSupply = _totalSupply.sub(value);
        _balances[account] = _balances[account].sub(value);

        _totalBurnt = _totalBurnt.add(value);

        emit Transfer(account, address(0), value);
    }

    function _burnFrom(address account, uint256 value) internal {
        _allowed[account][msg.sender] = _allowed[account][msg.sender].sub(value);
        _burn(account, value);
    }
}

File 4 of 7: Claimable.sol
//SPDX-License-Identifier: Unlicense
pragma solidity 0.7.6;

abstract contract Ownable {
    address public owner;

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

    /**
     * @dev The Ownable constructor sets the original `owner` of the contract to the sender
     * account.
     */
    constructor() {
        owner = msg.sender;
        emit OwnershipTransferred(address(0), owner);
    }

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

    modifier onlyContractOwner() {
        require(isOwner(), 'Not a contract owner');
        _;
    }
}

contract Claimable is Ownable {
    address public pendingOwner;

    function transferOwnership(address _newOwner) public onlyContractOwner() {
        pendingOwner = _newOwner;
    }

    function claimOwnership() public {
        require(msg.sender == pendingOwner, 'Not a pending owner');

        address previousOwner = owner;
        owner = msg.sender;
        pendingOwner = address(0);

        emit OwnershipTransferred(previousOwner, msg.sender);
    }
}

File 5 of 7: DateLib.sol
//SPDX-License-Identifier: Unlicense
pragma solidity 0.7.6;

library DateLib {
    uint256 constant DAY_IN_SECONDS = 86400;
    uint256 constant YEAR_IN_SECONDS = 31536000;
    uint256 constant LEAP_YEAR_IN_SECONDS = 31622400;

    uint16 constant ORIGIN_YEAR = 1970;

    function getHoursInMonth(uint256 _timestamp) internal pure returns (uint256) {
        uint256 timestamp = _timestamp / 1000;

        uint256 secondsAccountedFor = 0;
        uint256 buf;
        uint8 i;

        uint16 year;
        uint8 month;

        // Year
        year = _getYear(timestamp);
        buf = leapYearsBefore(year) - leapYearsBefore(ORIGIN_YEAR);

        secondsAccountedFor += LEAP_YEAR_IN_SECONDS * buf;
        secondsAccountedFor += YEAR_IN_SECONDS * (year - ORIGIN_YEAR - buf);

        // Month
        uint256 secondsInMonth;
        for (i = 1; i <= 12; i++) {
            secondsInMonth = DAY_IN_SECONDS * _getDaysInMonth(i, year);
            if (secondsInMonth + secondsAccountedFor > timestamp) {
                month = i;
                break;
            }
            secondsAccountedFor += secondsInMonth;
        }

        return (_getDaysInMonth(month, year) * 24);
    }

    function _getDaysInMonth(uint8 _month, uint16 _year) private pure returns (uint256) {
        if (
            _month == 1 ||
            _month == 3 ||
            _month == 5 ||
            _month == 7 ||
            _month == 8 ||
            _month == 10 ||
            _month == 12
        ) {
            return 31;
        } else if (_month == 4 || _month == 6 || _month == 9 || _month == 11) {
            return 30;
        } else if (isLeapYear(_year)) {
            return 29;
        } else {
            return 28;
        }
    }

    function _getYear(uint256 _timestamp) private pure returns (uint16) {
        uint256 secondsAccountedFor = 0;
        uint16 year;
        uint256 numLeapYears;

        // Year
        year = uint16(ORIGIN_YEAR + _timestamp / YEAR_IN_SECONDS);
        numLeapYears = leapYearsBefore(year) - leapYearsBefore(ORIGIN_YEAR);

        secondsAccountedFor += LEAP_YEAR_IN_SECONDS * numLeapYears;
        secondsAccountedFor += YEAR_IN_SECONDS * (year - ORIGIN_YEAR - numLeapYears);

        while (secondsAccountedFor > _timestamp) {
            if (isLeapYear(uint16(year - 1))) {
                secondsAccountedFor -= LEAP_YEAR_IN_SECONDS;
            } else {
                secondsAccountedFor -= YEAR_IN_SECONDS;
            }
            year -= 1;
        }
        return year;
    }

    function isLeapYear(uint16 _year) private pure returns (bool) {
        if (_year % 4 != 0) {
            return false;
        }
        if (_year % 100 != 0) {
            return true;
        }
        if (_year % 400 != 0) {
            return false;
        }
        return true;
    }

    function leapYearsBefore(uint256 _year) private pure returns (uint256) {
        uint256 year = _year - 1;
        return year / 4 - year / 100 + year / 400;
    }
}

File 6 of 7: RoundMath.sol
//SPDX-License-Identifier: Unlicense
pragma solidity 0.7.6;

/// @dev Math operations with safety checks that revert on error
library RoundMath {
    /// @dev Integer division of two numbers rounding the quotient, reverts on division by zero.
    function roundDiv(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, 'DIVIDING_ERROR');
        uint256 c = (((a * 10) / b) + 5) / 10;
        return c;
    }

    /// @dev Integer division of two numbers ceiling the quotient, reverts on division by zero.
    function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, 'DIVIDING_ERROR');
        uint256 c = a / b;
        if (a % b > 0) {
            c = c + 1;
        }
        return c;
    }
}

File 7 of 7: SafeMath.sol
//SPDX-License-Identifier: Unlicense
pragma solidity 0.7.6;

/// @dev Math operations with safety checks that revert on error
library SafeMath {
    /// @dev Multiplies two numbers, reverts on overflow.
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, 'MUL_ERROR');

        return c;
    }

    /// @dev Integer division of two numbers truncating the quotient, reverts on division by zero.
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, 'DIVIDING_ERROR');
        uint256 c = a / b;
        return c;
    }

    /// @dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, 'SUB_ERROR');
        uint256 c = a - b;
        return c;
    }

    /// @dev Adds two numbers, reverts on overflow.
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, 'ADD_ERROR');
        return c;
    }

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_mintSaver","type":"address"},{"internalType":"address","name":"_swapContract","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"admin","type":"address"}],"name":"AdminAppointed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"admin","type":"address"}],"name":"AdminDismissed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"blockNumber","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"risePrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"growthRate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"change","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"created","type":"uint256"}],"name":"BlockCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBurnt","type":"uint256"}],"name":"BurnSwap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"converter","type":"address"},{"indexed":false,"internalType":"uint256","name":"swapAmountSent","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"riseAmountReceived","type":"uint256"}],"name":"ConvertToRise","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"converter","type":"address"},{"indexed":false,"internalType":"uint256","name":"riseAmountSent","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"swapAmountReceived","type":"uint256"}],"name":"ConvertToSwap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"currentHour","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"riseAmountBurnt","type":"uint256"}],"name":"DoBalance","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LostTokensBurnt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"MintSwap","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":"growthRate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"priceFactor0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"priceFactor1","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"priceFactor2","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"priceFactor3","type":"uint256"}],"name":"PriceFactorSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"QuarantineBalanceBurnt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newAdmin","type":"address"}],"name":"appointAdmin","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnLostTokens","outputs":[{"internalType":"bool","name":"_success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"}],"name":"convertToRise","outputs":[{"internalType":"bool","name":"_success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_riseAmount","type":"uint256"}],"name":"convertToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_admin","type":"address"}],"name":"dismissAdmin","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"doBalance","outputs":[{"internalType":"bool","name":"_success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_blockNumber","type":"uint256"},{"internalType":"uint256","name":"_growthRate","type":"uint256"}],"name":"doCreateBlock","outputs":[{"internalType":"bool","name":"_success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_hoursEpoch","type":"uint256"}],"name":"getBlockData","outputs":[{"internalType":"uint256","name":"_risePrice","type":"uint256"},{"internalType":"uint256","name":"_growthRate","type":"uint256"},{"internalType":"uint256","name":"_change","type":"uint256"},{"internalType":"uint256","name":"_created","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentHour","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_hour","type":"uint256"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"growthRateToPriceFactors","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"hoursToBlock","outputs":[{"internalType":"uint256","name":"risePrice","type":"uint256"},{"internalType":"uint256","name":"growthRate","type":"uint256"},{"internalType":"uint256","name":"change","type":"uint256"},{"internalType":"uint256","name":"created","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastBalancedHour","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockPriceFactors","outputs":[{"internalType":"bool","name":"_success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceFactorsLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quarantineBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_growthRate","type":"uint256"},{"internalType":"uint256[4]","name":"_priceFactors","type":"uint256[4]"}],"name":"setPriceFactors","outputs":[{"internalType":"bool","name":"_success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurnt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526010805460ff191690553480156200001b57600080fd5b5060405162002f7038038062002f70833981810160405260408110156200004157600080fd5b508051602091820151604080518082018252600c81526b43656e74726963205249534560a01b8186015281518083018352600381526221a72960e91b95810195909552600080546001600160a01b03191633178082559251949593949193926008926001600160a01b039190911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600080546001600160a01b039081168252600260209081526040808420805460ff19166001179055925483519216825291517f14a1a2d641f8bd1a49a31f4fd8b2e951f722e0207f936a64b44411340a52a4e6929181900390910190a182516200014890600390602086019062000304565b5081516200015e90600490602085019062000304565b506005805460ff191660ff92909216919091179055506200018a90508267016345785d8a0000620001b1565b600a80546001600160a01b0319166001600160a01b039290921691909117905550620003b0565b6001600160a01b0382166200020d576040805162461bcd60e51b815260206004820152601c60248201527f6163636f756e742063616e6e6f74206265206164647265737328302900000000604482015290519081900360640190fd5b6200022981600854620002b660201b62001fd81790919060201c565b6008556001600160a01b0382166000908152600660209081526040909120546200025e91839062001fd8620002b6821b17901c565b6001600160a01b03831660008181526006602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600082820183811015620002fd576040805162461bcd60e51b815260206004820152600960248201526820a2222fa2a92927a960b91b604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200033c576000855562000387565b82601f106200035757805160ff191683800117855562000387565b8280016001018555821562000387579182015b82811115620003875782518255916020019190600101906200036a565b506200039592915062000399565b5090565b5b808211156200039557600081556001016200039a565b612bb080620003c06000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c8063893d20e81161013b578063a9059cbb116100b8578063dd62ed3e1161007c578063dd62ed3e14610668578063e30c397814610696578063e75722301461069e578063eb91d37e146106bb578063f2fde38b146106c357610248565b8063a9059cbb146105ec578063ac06b63d14610618578063b63589a114610620578063b9a3cbc814610628578063c9a889ff1461064557610248565b8063966ff650116100ff578063966ff65014610516578063982356631461051e578063a333260e14610544578063a457c2d71461059a578063a69adc2c146105c657610248565b8063893d20e8146104d25780638da5cb5b146104f65780638ea83031146104fe5780638f32d59b1461050657806395d89b411461050e57610248565b80632552317c116101c95780634e71e0c81161018d5780634e71e0c81461045a57806352c09f441461046457806364ff2d061461048157806370a08231146104a457806386a04466146104ca57610248565b80632552317c146103e357806329cb924d146103eb578063311885ef146103f3578063313ce56714610410578063395093511461042e57610248565b806318160ddd1161021057806318160ddd146103345780631c9ab3ad1461033c57806322368a081461037f57806323b872dd1461038757806324d7806c146103bd57610248565b806306fdde031461024d578063095ea7b3146102ca5780630c72e02a1461030a5780630d48e8d0146103125780631387e5db1461031a575b600080fd5b6102556106e9565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561028f578181015183820152602001610277565b50505050905090810190601f1680156102bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102f6600480360360408110156102e057600080fd5b506001600160a01b03813516906020013561077f565b604080519115158252519081900360200190f35b6102f6610844565b6102f66108ab565b6103226109bc565b60408051918252519081900360200190f35b6103226109c2565b6103596004803603602081101561035257600080fd5b50356109c8565b604080519485526020850193909352838301919091526060830152519081900360800190f35b6102f6610a97565b6102f66004803603606081101561039d57600080fd5b506001600160a01b03813581169160208101359091169060400135610b47565b6102f6600480360360208110156103d357600080fd5b50356001600160a01b0316610c0a565b610322610c1f565b610322610c25565b6103596004803603602081101561040957600080fd5b5035610c29565b610418610c50565b6040805160ff9092168252519081900360200190f35b6102f66004803603604081101561044457600080fd5b506001600160a01b038135169060200135610c59565b610462610d49565b005b6103226004803603602081101561047a57600080fd5b5035610df5565b6103226004803603604081101561049757600080fd5b508035906020013561109f565b610322600480360360208110156104ba57600080fd5b50356001600160a01b03166110c4565b6102f66110df565b6104da6110e8565b604080516001600160a01b039092168252519081900360200190f35b6104da6110f7565b6104da611106565b6102f6611115565b610255611126565b610322611187565b6102f66004803603602081101561053457600080fd5b50356001600160a01b031661118d565b6102f6600480360360a081101561055a57600080fd5b604080516080818101909252833593928301929160a083019190602084019060049083908390808284376000920191909152509194506112679350505050565b6102f6600480360360408110156105b057600080fd5b506001600160a01b03813516906020013561176b565b6102f6600480360360208110156105dc57600080fd5b50356001600160a01b03166117f6565b6102f66004803603604081101561060257600080fd5b506001600160a01b0381351690602001356118a5565b6103226118bb565b6103226118c1565b6102f66004803603602081101561063e57600080fd5b50356118d6565b6102f66004803603604081101561065b57600080fd5b5080359060200135611c4b565b6103226004803603604081101561067e57600080fd5b506001600160a01b0381358116916020013516611e3b565b6104da611e66565b610322600480360360208110156106b457600080fd5b5035611e75565b610322611edc565b610462600480360360208110156106d957600080fd5b50356001600160a01b0316611f66565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107755780601f1061074a57610100808354040283529160200191610775565b820191906000526020600020905b81548152906001019060200180831161075857829003601f168201915b5050505050905090565b60006001600160a01b0383166107dc576040805162461bcd60e51b815260206004820152601c60248201527f7370656e6465722063616e6e6f74206265206164647265737328302900000000604482015290519081900360640190fd5b3360008181526007602090815260408083206001600160a01b03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b3360009081526002602052604081205460ff16610897576040805162461bcd60e51b815260206004820152600c60248201526b2727aa2fa0a72fa0a226a4a760a11b604482015290519081900360640190fd5b506010805460ff1916600190811790915590565b6000600e60006108b96118c1565b815260208101919091526040016000205461091b576040805162461bcd60e51b815260206004820152601f60248201527f43555252454e545f50524943455f424c4f434b5f4e4f545f444546494e454400604482015290519081900360640190fd5b6109236118c1565b600d54106109625760405162461bcd60e51b8152600401808060200182810382526024815260200180612ae76024913960400191505060405180910390fd5b61096a6118c1565b600d556000610977612025565b90506109816118c1565b6040805183815290517fcfc8f88f661f6fa5306396344004096db3c6bfd1c99877a70ceeeb2bc484170b9181900360200190a2600191505090565b600b5481565b60085490565b60008060008060008511610a17576040805162461bcd60e51b8152602060048201526011602482015270454d5054595f484f5552535f56414c554560781b604482015290519081900360640190fd5b6000858152600e6020526040902054610a6b576040805162461bcd60e51b8152602060048201526011602482015270109313d0d2d7d393d517d1115192539151607a1b604482015290519081900360640190fd5b505050600091825250600e60205260409020805460018201546002830154600390930154919390929190565b6000610aa1611115565b610ae9576040805162461bcd60e51b81526020600482015260146024820152732737ba10309031b7b73a3930b1ba1037bbb732b960611b604482015290519081900360640190fd5b6000610b00600b54610afa306110c4565b90612145565b9050610b0c308261218e565b6040805182815290517f7c2140a4c400880893146fd082efc43b05e1c5812f289ed41a42b92c0f8d17d89181900360200190a1600191505090565b6001600160a01b0383166000908152600760209081526040808320338452909152812054610b759083612145565b6001600160a01b0385166000908152600760209081526040808320338452909152902055610ba484848461228a565b6001600160a01b0384166000818152600760209081526040808320338085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b60026020526000908152604090205460ff1681565b600c5481565b4290565b600e6020526000908152604090208054600182015460028301546003909301549192909184565b60055460ff1690565b60006001600160a01b038316610cb6576040805162461bcd60e51b815260206004820152601c60248201527f7370656e6465722063616e6e6f74206265206164647265737328302900000000604482015290519081900360640190fd5b3360009081526007602090815260408083206001600160a01b0387168452909152902054610ce49083611fd8565b3360008181526007602090815260408083206001600160a01b0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b6001546001600160a01b03163314610d9e576040805162461bcd60e51b81526020600482015260136024820152722737ba1030903832b73234b7339037bbb732b960691b604482015290519081900360640190fd5b60008054336001600160a01b0319808316821784556001805490911690556040516001600160a01b0390921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b6000600e6000610e036118c1565b8152602081019190915260400160002054610e65576040805162461bcd60e51b815260206004820152601f60248201527f43555252454e545f50524943455f424c4f434b5f4e4f545f444546494e454400604482015290519081900360640190fd5b81610e6f336110c4565b1015610ec2576040805162461bcd60e51b815260206004820152601960248201527f494e53554646494349454e545f524953455f42414c414e434500000000000000604482015290519081900360640190fd5b600b54610ecf9083611fd8565b600b55610edc30836118a5565b610f24576040805162461bcd60e51b8152602060048201526014602482015273149254d157d514905394d1915497d1905253115160621b604482015290519081900360640190fd5b6000610f5b6305f5e100610f55600e6000610f3d6118c1565b815260208101919091526040016000205486906123ee565b90612449565b600a546040805163a176916b60e01b81523360048201526024810184905290519293506001600160a01b039091169163a176916b916044808201926020929091908290030181600087803b158015610fb257600080fd5b505af1158015610fc6573d6000803e3d6000fd5b505050506040513d6020811015610fdc57600080fd5b5051611022576040805162461bcd60e51b815260206004820152601060248201526f14d5d05417d352539517d1905253115160821b604482015290519081900360640190fd5b604080513381526020810183905281517f04cd4face8a34b2ceb0227f3bad19e597a2174777b8a2ab1250589c48f1e2898929181900390910190a16040805184815260208101839052815133927f7212dc9a3a3345e3a3dba50467d6c334bbe02a41403ebf3de8c498b8ecfd687d928290030190a290505b919050565b600f60205281600052604060002081600481106110bb57600080fd5b01549150829050565b6001600160a01b031660009081526006602052604090205490565b60105460ff1681565b6000546001600160a01b031690565b6000546001600160a01b031681565b600a546001600160a01b031681565b6000546001600160a01b0316331490565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107755780601f1061074a57610100808354040283529160200191610775565b60095490565b6000611197611115565b6111df576040805162461bcd60e51b81526020600482015260146024820152732737ba10309031b7b73a3930b1ba1037bbb732b960611b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090205460ff16611223576001600160a01b0382166000908152600260205260409020805460ff191660011790555b604080516001600160a01b038416815290517f14a1a2d641f8bd1a49a31f4fd8b2e951f722e0207f936a64b44411340a52a4e69181900360200190a1506001919050565b3360009081526002602052604081205460ff166112ba576040805162461bcd60e51b815260206004820152600c60248201526b2727aa2fa0a72fa0a226a4a760a11b604482015290519081900360640190fd5b60105460ff1615611312576040805162461bcd60e51b815260206004820152601c60248201527f50524943455f464143544f52535f414c52454144595f4c4f434b454400000000604482015290519081900360640190fd5b82611364576040805162461bcd60e51b815260206004820152601b60248201527f47524f5754485f524154455f43414e5f4e4f545f42455f5a45524f0000000000604482015290519081900360640190fd5b61271083106113a45760405162461bcd60e51b815260040180806020018281038252602c815260200180612b0b602c913960400191505060405180910390fd5b81516113f7576040805162461bcd60e51b815260206004820152601e60248201527f50524943455f464143544f525f305f43414e5f4e4f545f42455f5a45524f0000604482015290519081900360640190fd5b8151630626b57511611450576040805162461bcd60e51b815260206004820152601960248201527f50524943455f464143544f525f305f49535f544f4f5f42494700000000000000604482015290519081900360640190fd5b60208201516114a6576040805162461bcd60e51b815260206004820152601e60248201527f50524943455f464143544f525f315f43414e5f4e4f545f42455f5a45524f0000604482015290519081900360640190fd5b60208201516305f061a811611502576040805162461bcd60e51b815260206004820152601960248201527f50524943455f464143544f525f315f49535f544f4f5f42494700000000000000604482015290519081900360640190fd5b6040820151611558576040805162461bcd60e51b815260206004820152601e60248201527f50524943455f464143544f525f325f43414e5f4e4f545f42455f5a45524f0000604482015290519081900360640190fd5b60408201516305bdad7d116115b4576040805162461bcd60e51b815260206004820152601960248201527f50524943455f464143544f525f325f49535f544f4f5f42494700000000000000604482015290519081900360640190fd5b606082015161160a576040805162461bcd60e51b815260206004820152601e60248201527f50524943455f464143544f525f335f43414e5f4e4f545f42455f5a45524f0000604482015290519081900360640190fd5b606082015163058e3f2411611666576040805162461bcd60e51b815260206004820152601960248201527f50524943455f464143544f525f335f49535f544f4f5f42494700000000000000604482015290519081900360640190fd5b60208201518251118015611681575060408201516020830151115b8015611694575060608201516040830151115b6116e5576040805162461bcd60e51b815260206004820152601b60248201527f50524943455f464143544f52535f4152455f4e4f545f56414c49440000000000604482015290519081900360640190fd5b6000838152600f602052604090206116ff90836004612a93565b50815160208084015160408086015160608088015183518a8152958601969096528483019390935291830191909152608082019290925290517fc31c7597a83d26a1f8b6e9045fb8dfbc314325f0d5371642fed1ef3b9e18db7f9181900360a00190a150600192915050565b60006001600160a01b0383166117c8576040805162461bcd60e51b815260206004820152601c60248201527f7370656e6465722063616e6e6f74206265206164647265737328302900000000604482015290519081900360640190fd5b3360009081526007602090815260408083206001600160a01b0387168452909152902054610ce49083612145565b6000611800611115565b611848576040805162461bcd60e51b81526020600482015260146024820152732737ba10309031b7b73a3930b1ba1037bbb732b960611b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020805460ff19169055815192835290517f8cb585df559166007784fccdddbb80e0efd7c7b40a2d015a911a595825f74b109281900390910190a1506001919050565b60006118b233848461228a565b50600192915050565b600d5481565b60006118d1610e10610f55610c25565b905090565b6000600e60006118e46118c1565b8152602081019190915260400160002054611946576040805162461bcd60e51b815260206004820152601f60248201527f43555252454e545f50524943455f424c4f434b5f4e4f545f444546494e454400604482015290519081900360640190fd5b600a54604080516370a0823160e01b8152336004820152905184926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561199057600080fd5b505afa1580156119a4573d6000803e3d6000fd5b505050506040513d60208110156119ba57600080fd5b50511015611a0f576040805162461bcd60e51b815260206004820152601960248201527f494e53554646494349454e545f535741505f42414c414e434500000000000000604482015290519081900360640190fd5b600a54604080516308dc8e7d60e21b81523360048201526024810185905290516001600160a01b039092169163237239f4916044808201926020929091908290030181600087803b158015611a6357600080fd5b505af1158015611a77573d6000803e3d6000fd5b505050506040513d6020811015611a8d57600080fd5b5051611ad6576040805162461bcd60e51b815260206004820152601360248201527210955493925391d7d4d5d05417d19052531151606a1b604482015290519081900360640190fd5b6040805183815290517f36455e2cba4ff48f7e41a95b21ae92f3d46fa026373a259c77d8b7b7675948c79181900360200190a16000611b39600e6000611b1a6118c1565b8152602081019190915260400160002054610f55856305f5e1006123ee565b600b54909150611b499082612145565b600b556040805163a9059cbb60e01b8152336004820152602481018390529051309163a9059cbb9160448083019260209291908290030181600087803b158015611b9257600080fd5b505af1158015611ba6573d6000803e3d6000fd5b505050506040513d6020811015611bbc57600080fd5b5051611c08576040805162461bcd60e51b815260206004820152601660248201527510d3d39591549517d513d7d49254d157d1905253115160521b604482015290519081900360640190fd5b6040805184815260208101839052815133927f669be87e03baf0da599f35a61f0aaea8c03245e49ec95a64d9084906ccb19bfc928290030190a250600192915050565b3360009081526002602052604081205460ff16611c9e576040805162461bcd60e51b815260206004820152600c60248201526b2727aa2fa0a72fa0a226a4a760a11b604482015290519081900360640190fd5b60105460ff16611cf5576040805162461bcd60e51b815260206004820152601c60248201527f50524943455f464143544f52535f4d5553545f42455f4c4f434b454400000000604482015290519081900360640190fd5b81611d47576040805162461bcd60e51b815260206004820152601b60248201527f47524f5754485f524154455f43414e5f4e4f545f42455f5a45524f0000000000604482015290519081900360640190fd5b6127108210611d875760405162461bcd60e51b815260040180806020018281038252602c815260200180612b0b602c913960400191505060405180910390fd5b6000828152600f6020526040902054611de7576040805162461bcd60e51b815260206004820152601c60248201527f47524f5754485f524154455f49535f4e4f545f53504543494649454400000000604482015290519081900360640190fd5b611df183836124a4565b6118b2576040805162461bcd60e51b81526020600482015260166024820152754641494c45445f544f5f4352454154455f424c4f434b60501b604482015290519081900360640190fd5b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b6001546001600160a01b031681565b6000818152600e6020526040812054611ec9576040805162461bcd60e51b8152602060048201526011602482015270109313d0d2d7d393d517d1115192539151607a1b604482015290519081900360640190fd5b506000908152600e602052604090205490565b600080600e6000611eeb6118c1565b81526020019081526020016000206000015411611f43576040805162461bcd60e51b8152602060048201526011602482015270109313d0d2d7d393d517d1115192539151607a1b604482015290519081900360640190fd5b600e6000611f4f6118c1565b815260200190815260200160002060000154905090565b611f6e611115565b611fb6576040805162461bcd60e51b81526020600482015260146024820152732737ba10309031b7b73a3930b1ba1037bbb732b960611b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60008282018381101561201e576040805162461bcd60e51b815260206004820152600960248201526820a2222fa2a92927a960b91b604482015290519081900360640190fd5b9392505050565b600b5460009081600e816120376118c1565b81526020019081526020016000206000015490506000600a60009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561209b57600080fd5b505afa1580156120af573d6000803e3d6000fd5b505050506040513d60208110156120c557600080fd5b5051905060006120ed83610f556305f5e1006120e786610afa83858c886123ee565b906123ee565b600b549091506120fd9082612145565b600b5561210a308261218e565b6040805182815290517f500611c1ea597c6f7dd72cb19aba6c59446307fd4bb497065d0c1cebfebebd629181900360200190a1935050505090565b600082821115612188576040805162461bcd60e51b815260206004820152600960248201526829aaa12fa2a92927a960b91b604482015290519081900360640190fd5b50900390565b6001600160a01b0382166121e9576040805162461bcd60e51b815260206004820152601c60248201527f6163636f756e742063616e6e6f74206265206164647265737328302900000000604482015290519081900360640190fd5b6008546121f69082612145565b6008556001600160a01b03821660009081526006602052604090205461221c9082612145565b6001600160a01b0383166000908152600660205260409020556009546122429082611fd8565b6009556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6001600160a01b0383166122e5576040805162461bcd60e51b815260206004820152601960248201527f66726f6d2063616e6e6f74206265206164647265737328302900000000000000604482015290519081900360640190fd5b6001600160a01b038216612340576040805162461bcd60e51b815260206004820152601760248201527f746f2063616e6e6f742062652061646472657373283029000000000000000000604482015290519081900360640190fd5b6001600160a01b0383166000908152600660205260409020546123639082612145565b6001600160a01b0380851660009081526006602052604080822093909355908416815220546123929082611fd8565b6001600160a01b0380841660008181526006602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000826123fd5750600061083e565b8282028284828161240a57fe5b041461201e576040805162461bcd60e51b815260206004820152600960248201526826aaa62fa2a92927a960b91b604482015290519081900360640190fd5b6000808211612490576040805162461bcd60e51b815260206004820152600e60248201526d2224ab24a224a723afa2a92927a960911b604482015290519081900360640190fd5b600082848161249b57fe5b04949350505050565b6000806000600c5460001415612551576124bc6118c1565b85116124f95760405162461bcd60e51b8152600401808060200182810382526021815260200180612b376021913960400191505060405180910390fd5b6125016118c1565b6122380185106125425760405162461bcd60e51b8152600401808060200182810382526023815260200180612b586023913960400191505060405180910390fd5b506401eed7bd03905083612573565b600c546000818152600e60205260409020549250612570906001611fd8565b90505b8481146125bc576040805162461bcd60e51b81526020600482015260126024820152712ba927a723afa12627a1a5afa72aa6a122a960711b604482015290519081900360640190fd5b6000806125cd6236ee80840261274d565b9050806102a014156125f2576000868152600f60205260408120905b01549150612645565b806102b81415612611576000868152600f6020526040902060016125e9565b806102d01415612630576000868152600f6020526040902060026125e9565b6000868152600f602052604090206003015491505b600061267364174876e80061266d61265d88836123ee565b612667878a6123ee565b90611fd8565b906127fd565b905060006126938661268d6305f5e1006120e78684612145565b9061286e565b9050600061269f6118c1565b604080516080808201835286825260208083018e8152838501888152606080860188815260008f8152600e86528890209651875592516001870155905160028601559051600390940193909355600c8b905583518b81529081018890528084018e9052918201869052810183905290519192507fe78c1dc87ccf4c793111073c71a3e26c2029f793091e0db3fb3c6409a00c6224919081900360a00190a15060019998505050505050505050565b60006103e882048180808080612762866128d0565b915061276f6107b2612960565b61277c8361ffff16612960565b039350836301e285000285019450836107b2830361ffff16036301e1338002850194506000600193505b600c8460ff16116127e3576127bb848461297b565b620151800290508686820111156127d4578391506127e3565b948501946001909301926127a6565b6127ed828461297b565b6018029998505050505050505050565b6000808211612844576040805162461bcd60e51b815260206004820152600e60248201526d2224ab24a224a723afa2a92927a960911b604482015290519081900360640190fd5b600082848161284f57fe5b049050600083858161285d57fe5b06111561201e576001019392505050565b60008082116128b5576040805162461bcd60e51b815260206004820152600e60248201526d2224ab24a224a723afa2a92927a960911b604482015290519081900360640190fd5b6000600a8385600a02816128c557fe5b046005018161249b57fe5b6000806107b26301e13380840481019082906128eb90612960565b6128f88361ffff16612960565b039050806301e285000283019250806107b2830361ffff16036301e1338002830192505b848311156129585761293060018303612a41565b15612943576301e285008303925061294d565b6301e13380830392505b60018203915061291c565b509392505050565b60646000199190910190810460048204036101909091040190565b60008260ff166001148061299257508260ff166003145b806129a057508260ff166005145b806129ae57508260ff166007145b806129bc57508260ff166008145b806129ca57508260ff16600a145b806129d857508260ff16600c145b156129e55750601f61083e565b8260ff16600414806129fa57508260ff166006145b80612a0857508260ff166009145b80612a1657508260ff16600b145b15612a235750601e61083e565b612a2c82612a41565b15612a395750601d61083e565b50601c61083e565b60006003821615612a545750600061109a565b606461ffff83160661ffff16600014612a6f5750600161109a565b61019061ffff83160661ffff16600014612a8b5750600061109a565b506001919050565b8260048101928215612ac1579160200282015b82811115612ac1578251825591602001919060010190612aa6565b50612acd929150612ad1565b5090565b5b80821115612acd5760008155600101612ad256fe4348414e47455f49535f414c52454144595f4255524e545f494e5f544849535f484f555247524f5754485f524154455f49535f475245415445525f5448414e5f47524f5754485f524154455f4241534546495253545f424c4f434b5f4d5553545f42455f494e5f5448455f46555455524546495253545f424c4f434b5f4d5553545f42455f57495448494e5f4f4e455f59454152a2646970667358221220562cef5fb22f35271316dfd581aa36d0385add4d1743ee293c29f17ef247baa964736f6c634300070600330000000000000000000000001ea71306849a189e17d00668eea81416e2f6d19d000000000000000000000000f6cb4ad242bab681effc5de40f7c8ff921a12d63

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

0000000000000000000000001ea71306849a189e17d00668eea81416e2f6d19d000000000000000000000000f6cb4ad242bab681effc5de40f7c8ff921a12d63

-----Decoded View---------------
Arg [0] : _mintSaver (address): 0x1ea71306849a189e17d00668eea81416e2f6d19d
Arg [1] : _swapContract (address): 0xf6cb4ad242bab681effc5de40f7c8ff921a12d63

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000001ea71306849a189e17d00668eea81416e2f6d19d
Arg [1] : 000000000000000000000000f6cb4ad242bab681effc5de40f7c8ff921a12d63


Deployed ByteCode Sourcemap

521:14280:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3723:90:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4729:279;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4729:279:1;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;8115:136:2;;;:::i;8426:426::-;;;:::i;726:32::-;;;:::i;:::-;;;;;;;;;;;;;;;;4015:98:1;;;:::i;4427:656:2:-;;;;;;;;;;;;;;;;-1:-1:-1;4427:656:2;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11066:262;;;:::i;5014:333:1:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5014:333:1;;;;;;;;;;;;;;;;;:::i;130:39:0:-;;;;;;;;;;;;;;;;-1:-1:-1;130:39:0;-1:-1:-1;;;;;130:39:0;;:::i;764:30:2:-;;;:::i;14558:103::-;;;:::i;1569:45::-;;;;;;;;;;;;;;;;-1:-1:-1;1569:45:2;;:::i;3919:90:1:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5353:351;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5353:351:1;;;;;;;;:::i;833:274:3:-;;;:::i;:::-;;10117:814:2;;;;;;;;;;;;;;;;-1:-1:-1;10117:814:2;;:::i;2090:62::-;;;;;;;;;;;;;;;;-1:-1:-1;2090:62:2;;;;;;;:::i;4306:113:1:-;;;;;;;;;;;;;;;;-1:-1:-1;4306:113:1;-1:-1:-1;;;;;4306:113:1;;:::i;2255:38:2:-;;;:::i;4119:88:1:-;;;:::i;:::-;;;;-1:-1:-1;;;;;4119:88:1;;;;;;;;;;;;;;93:20:3;;;:::i;693:27:2:-;;;:::i;443:91:3:-;;;:::i;3819:94:1:-;;;:::i;4213:87::-;;;:::i;453:252:0:-;;;;;;;;;;;;;;;;-1:-1:-1;453:252:0;-1:-1:-1;;;;;453:252:0;;:::i;6504:1495:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6504:1495:2;;-1:-1:-1;6504:1495:2;;-1:-1:-1;;;;6504:1495:2:i;5710:361:1:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5710:361:1;;;;;;;;:::i;711:187:0:-;;;;;;;;;;;;;;;;-1:-1:-1;711:187:0;-1:-1:-1;;;;;711:187:0;;:::i;4569:154:1:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4569:154:1;;;;;;;;:::i;832:31:2:-;;;:::i;14690:109::-;;;:::i;9037:897::-;;;;;;;;;;;;;;;;-1:-1:-1;9037:897:2;;:::i;5793:580::-;;;;;;;;;;;;;;;;-1:-1:-1;5793:580:2;;;;;;;:::i;4425:138:1:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4425:138:1;;;;;;;;;;:::i;679:27:3:-;;;:::i;3882:191:2:-;;;;;;;;;;;;;;;;-1:-1:-1;3882:191:2;;:::i;3620:207::-;;;:::i;713:114:3:-;;;;;;;;;;;;;;;;-1:-1:-1;713:114:3;-1:-1:-1;;;;;713:114:3;;:::i;3723:90:1:-;3801:5;3794:12;;;;;;;;-1:-1:-1;;3794:12:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3769:13;;3794:12;;3801:5;;3794:12;;3801:5;3794:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3723:90;:::o;4729:279::-;4803:4;-1:-1:-1;;;;;4827:21:1;;4819:62;;;;;-1:-1:-1;;;4819:62:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;4901:10;4892:20;;;;:8;:20;;;;;;;;-1:-1:-1;;;;;4892:29:1;;;;;;;;;;;;:37;;;4944:36;;;;;;;4892:29;;4901:10;4944:36;;;;;;;;;;;-1:-1:-1;4997:4:1;4729:279;;;;;:::o;8115:136:2:-;401:10:0;8173:13:2;393:19:0;;;:7;:19;;;;;;;;385:44;;;;;-1:-1:-1;;;385:44:0;;;;;;;;;;;;-1:-1:-1;;;385:44:0;;;;;;;;;;;;;;;-1:-1:-1;8198:18:2::1;:25:::0;;-1:-1:-1;;8198:25:2::1;8219:4;8198:25:::0;;::::1;::::0;;;8115:136;:::o;8426:426::-;8465:13;8498:12;:30;8511:16;:14;:16::i;:::-;8498:30;;;;;;;;;;;-1:-1:-1;8498:30:2;:40;8490:89;;;;;-1:-1:-1;;;8490:89:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;8616:16;:14;:16::i;:::-;8597;;:35;8589:84;;;;-1:-1:-1;;;8589:84:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8703:16;:14;:16::i;:::-;8684;:35;8730:18;8751;:16;:18::i;:::-;8730:39;;8795:16;:14;:16::i;:::-;8785:39;;;;;;;;;;;;;;;;;8841:4;8834:11;;;8426:426;:::o;726:32::-;;;;:::o;4015:98:1:-;4094:12;;4015:98;:::o;4427:656:2:-;4530:18;4562:19;4595:15;4624:16;4687:1;4673:11;:15;4665:45;;;;;-1:-1:-1;;;4665:45:2;;;;;;;;;;;;-1:-1:-1;;;4665:45:2;;;;;;;;;;;;;;;4766:1;4728:25;;;:12;:25;;;;;:35;4720:69;;;;;-1:-1:-1;;;4720:69:2;;;;;;;;;;;;-1:-1:-1;;;4720:69:2;;;;;;;;;;;;;;;-1:-1:-1;;;4813:25:2;;;;-1:-1:-1;4813:12:2;:25;;;;;:35;;4872:36;;;;4928:32;;;;4981:33;;;;;4813:35;;4872:36;;4928:32;4981:33;4427:656::o;11066:262::-;11130:13;587:9:3;:7;:9::i;:::-;579:42;;;;;-1:-1:-1;;;579:42:3;;;;;;;;;;;;-1:-1:-1;;;579:42:3;;;;;;;;;;;;;;;11155:15:2::1;11173:47;11202:17;;11173:24;11191:4;11173:9;:24::i;:::-;:28:::0;::::1;:47::i;:::-;11155:65;;11231:29;11245:4;11252:7;11231:5;:29::i;:::-;11276:24;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;11317:4;11310:11;;;11066:262:::0;:::o;5014:333:1:-;-1:-1:-1;;;;;5177:14:1;;5132:4;5177:14;;;:8;:14;;;;;;;;5192:10;5177:26;;;;;;;;:37;;5208:5;5177:30;:37::i;:::-;-1:-1:-1;;;;;5148:14:1;;;;;;:8;:14;;;;;;;;5163:10;5148:26;;;;;;;:66;5224:26;5157:4;5240:2;5244:5;5224:9;:26::i;:::-;-1:-1:-1;;;;;5265:54:1;;5292:14;;;;:8;:14;;;;;;;;5280:10;5292:26;;;;;;;;;;;5265:54;;;;;;;5280:10;;5265:54;;;;;;;;;;;;-1:-1:-1;5336:4:1;5014:333;;;;;:::o;130:39:0:-;;;;;;;;;;;;;;;:::o;764:30:2:-;;;;:::o;14558:103::-;14639:15;14558:103;:::o;1569:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3919:90:1:-;3993:9;;;;3919:90;:::o;5353:351::-;5433:4;-1:-1:-1;;;;;5457:21:1;;5449:62;;;;;-1:-1:-1;;;5449:62:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;5564:10;5555:20;;;;:8;:20;;;;;;;;-1:-1:-1;;;;;5555:29:1;;;;;;;;;;:45;;5589:10;5555:33;:45::i;:::-;5531:10;5522:20;;;;:8;:20;;;;;;;;-1:-1:-1;;;;;5522:29:1;;;;;;;;;;;;:79;;;5616:60;;;;;;5522:29;;5616:60;;;;;;;;;;;-1:-1:-1;5693:4:1;5353:351;;;;:::o;833:274:3:-;898:12;;-1:-1:-1;;;;;898:12:3;884:10;:26;876:58;;;;;-1:-1:-1;;;876:58:3;;;;;;;;;;;;-1:-1:-1;;;876:58:3;;;;;;;;;;;;;;;945:21;969:5;;992:10;-1:-1:-1;;;;;;984:18:3;;;;;;;-1:-1:-1;1012:25:3;;;;;;;1053:47;;-1:-1:-1;;;;;969:5:3;;;;992:10;;969:5;;1053:47;;;833:274;:::o;10117:814:2:-;10179:7;10206:12;:30;10219:16;:14;:16::i;:::-;10206:30;;;;;;;;;;;-1:-1:-1;10206:30:2;:40;10198:89;;;;;-1:-1:-1;;;10198:89:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;10331:11;10306:21;10316:10;10306:9;:21::i;:::-;:36;;10298:74;;;;;-1:-1:-1;;;10298:74:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;10403:17;;:34;;10425:11;10403:21;:34::i;:::-;10383:17;:54;10455:36;10472:4;10479:11;10455:8;:36::i;:::-;10447:69;;;;;-1:-1:-1;;;10447:69:2;;;;;;;;;;;;-1:-1:-1;;;10447:69:2;;;;;;;;;;;;;;;10527:20;10562:75;951:5;10563:57;10579:12;:30;10592:16;:14;:16::i;:::-;10579:30;;;;;;;;;;;-1:-1:-1;10579:30:2;:40;10563:11;;:15;:57::i;:::-;10562:63;;:75::i;:::-;10683:12;;10669:66;;;-1:-1:-1;;;10669:66:2;;10710:10;10669:66;;;;;;;;;;;;10527:110;;-1:-1:-1;;;;;;10683:12:2;;;;10669:40;;:66;;;;;;;;;;;;;;;10683:12;;10669:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10669:66:2;10648:129;;;;;-1:-1:-1;;;10648:129:2;;;;;;;;;;;;-1:-1:-1;;;10648:129:2;;;;;;;;;;;;;;;10793:34;;;10802:10;10793:34;;;;;;;;;;;;;;;;;;;;;10843:52;;;;;;;;;;;;;;10857:10;;10843:52;;;;;;;;10912:12;-1:-1:-1;10117:814:2;;;;:::o;2090:62::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2090:62:2;;-1:-1:-1;2090:62:2:o;4306:113:1:-;-1:-1:-1;;;;;4396:16:1;4370:7;4396:16;;;:9;:16;;;;;;;4306:113::o;2255:38:2:-;;;;;;:::o;4119:88:1:-;4169:7;4195:5;-1:-1:-1;;;;;4195:5:1;4119:88;:::o;93:20:3:-;;;-1:-1:-1;;;;;93:20:3;;:::o;693:27:2:-;;;-1:-1:-1;;;;;693:27:2;;:::o;443:91:3:-;483:4;507:5;-1:-1:-1;;;;;507:5:3;516:10;507:19;443:91;:::o;3819:94:1:-;3899:7;3892:14;;;;;;;;-1:-1:-1;;3892:14:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3867:13;;3892:14;;3899:7;;3892:14;;3899:7;3892:14;;;;;;;;;;;;;;;;;;;;;;;;4213:87;4282:11;;4213:87;:::o;453:252:0:-;530:12;587:9:3;:7;:9::i;:::-;579:42;;;;;-1:-1:-1;;;579:42:3;;;;;;;;;;;;-1:-1:-1;;;579:42:3;;;;;;;;;;;;;;;-1:-1:-1;;;;;558:18:0;::::1;;::::0;;;:7:::1;:18;::::0;;;;;::::1;;554:83;;-1:-1:-1::0;;;;;601:18:0;::::1;;::::0;;;:7:::1;:18;::::0;;;;:25;;-1:-1:-1;;601:25:0::1;622:4;601:25;::::0;;554:83:::1;652:25;::::0;;-1:-1:-1;;;;;652:25:0;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;::::1;-1:-1:-1::0;694:4:0::1;453:252:::0;;;:::o;6504:1495:2:-;401:10:0;6637:13:2;393:19:0;;;:7;:19;;;;;;;;385:44;;;;;-1:-1:-1;;;385:44:0;;;;;;;;;;;;-1:-1:-1;;;385:44:0;;;;;;;;;;;;;;;6674:18:2::1;::::0;::::1;;:27;6666:68;;;::::0;;-1:-1:-1;;;6666:68:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;6753:16:::0;6745:56:::1;;;::::0;;-1:-1:-1;;;6745:56:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;2194:5;6819:11;:30;6811:87;;;;-1:-1:-1::0;;;6811:87:2::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6917:16:::0;;6909:63:::1;;;::::0;;-1:-1:-1;;;6909:63:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;6990:16:::0;;7009:9:::1;-1:-1:-1::0;6982:66:2::1;;;::::0;;-1:-1:-1;;;6982:66:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;7066:16;::::0;::::1;::::0;7058:63:::1;;;::::0;;-1:-1:-1;;;7058:63:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;7139:16;::::0;::::1;::::0;7158:8:::1;-1:-1:-1::0;7131:65:2::1;;;::::0;;-1:-1:-1;;;7131:65:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;7214:16:::0;;::::1;::::0;7206:63:::1;;;::::0;;-1:-1:-1;;;7206:63:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;7287:16:::0;;::::1;::::0;7306:8:::1;-1:-1:-1::0;7279:65:2::1;;;::::0;;-1:-1:-1;;;7279:65:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;7362:16:::0;;::::1;::::0;7354:63:::1;;;::::0;;-1:-1:-1;;;7354:63:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;7435:16:::0;;::::1;::::0;7454:8:::1;-1:-1:-1::0;7427:65:2::1;;;::::0;;-1:-1:-1;;;7427:65:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;7543:16;::::0;::::1;::::0;7524;;:35:::1;:90:::0;::::1;;;-1:-1:-1::0;7598:16:2;;::::1;::::0;::::1;7579::::0;::::1;::::0;:35:::1;7524:90;:145;;;;-1:-1:-1::0;7653:16:2;;::::1;::::0;7634;;::::1;::::0;:35:::1;7524:145;7503:219;;;::::0;;-1:-1:-1;;;7503:219:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;7733:37;::::0;;;:24:::1;:37;::::0;;;;:53:::1;::::0;7773:13;7733:53:::1;;:::i;:::-;-1:-1:-1::0;7855:16:2;;::::1;7885::::0;;::::1;::::0;7915;;;::::1;::::0;7945;;;::::1;::::0;7802:169;;;;;;;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;;;;;;::::1;::::0;;;;;;;::::1;-1:-1:-1::0;7988:4:2::1;6504:1495:::0;;;;:::o;5710:361:1:-;5795:4;-1:-1:-1;;;;;5819:21:1;;5811:62;;;;;-1:-1:-1;;;5811:62:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;5926:10;5917:20;;;;:8;:20;;;;;;;;-1:-1:-1;;;;;5917:29:1;;;;;;;;;;:50;;5951:15;5917:33;:50::i;711:187:0:-;785:12;587:9:3;:7;:9::i;:::-;579:42;;;;;-1:-1:-1;;;579:42:3;;;;;;;;;;;;-1:-1:-1;;;579:42:3;;;;;;;;;;;;;;;-1:-1:-1;;;;;809:15:0;::::1;827:5;809:15:::0;;;:7:::1;:15;::::0;;;;;;;;:23;;-1:-1:-1;;809:23:0::1;::::0;;848:22;;;;;;;::::1;::::0;;;;;;;;::::1;-1:-1:-1::0;887:4:0::1;711:187:::0;;;:::o;4569:154:1:-;4647:4;4663:32;4673:10;4685:2;4689:5;4663:9;:32::i;:::-;-1:-1:-1;4712:4:1;4569:154;;;;:::o;832:31:2:-;;;;:::o;14690:109::-;14737:7;14763:29;14784:7;14763:16;:14;:16::i;:29::-;14756:36;;14690:109;:::o;9037:897::-;9099:13;9132:12;:30;9145:16;:14;:16::i;:::-;9132:30;;;;;;;;;;;-1:-1:-1;9132:30:2;:40;9124:89;;;;;-1:-1:-1;;;9124:89:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;9259:12;;9245:49;;;-1:-1:-1;;;9245:49:2;;9283:10;9245:49;;;;;;9298:11;;-1:-1:-1;;;;;9259:12:2;;9245:37;;:49;;;;;;;;;;;;;;9259:12;9245:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9245:49:2;:64;;9224:136;;;;;-1:-1:-1;;;9224:136:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;9406:12;;9392:65;;;-1:-1:-1;;;9392:65:2;;9433:10;9392:65;;;;;;;;;;;;-1:-1:-1;;;;;9406:12:2;;;;9392:40;;:65;;;;;;;;;;;;;;;9406:12;;9392:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9392:65:2;9371:131;;;;;-1:-1:-1;;;9371:131:2;;;;;;;;;;;;-1:-1:-1;;;9371:131:2;;;;;;;;;;;;;;;9518:21;;;;;;;;;;;;;;;;;9550:27;9592:75;9626:12;:30;9639:16;:14;:16::i;:::-;9626:30;;;;;;;;;;;-1:-1:-1;9626:30:2;:40;9593:27;:11;951:5;9593:15;:27::i;9592:75::-;9698:17;;9550:117;;-1:-1:-1;9698:42:2;;9550:117;9698:21;:42::i;:::-;9678:17;:62;9758:46;;;-1:-1:-1;;;9758:46:2;;9772:10;9758:46;;;;;;;;;;;;:4;;:13;;:46;;;;;;;;;;;;;;-1:-1:-1;9758:4:2;:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9758:46:2;9750:81;;;;;-1:-1:-1;;;9750:81:2;;;;;;;;;;;;-1:-1:-1;;;9750:81:2;;;;;;;;;;;;;;;9847:59;;;;;;;;;;;;;;9861:10;;9847:59;;;;;;;;-1:-1:-1;9923:4:2;;9037:897;-1:-1:-1;;9037:897:2:o;5793:580::-;401:10:0;5913:13:2;393:19:0;;;:7;:19;;;;;;;;385:44;;;;;-1:-1:-1;;;385:44:0;;;;;;;;;;;;-1:-1:-1;;;385:44:0;;;;;;;;;;;;;;;5950:18:2::1;::::0;::::1;;5942:59;;;::::0;;-1:-1:-1;;;5942:59:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;6020:16:::0;6012:56:::1;;;::::0;;-1:-1:-1;;;6012:56:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;2194:5;6086:11;:30;6078:87;;;;-1:-1:-1::0;;;6078:87:2::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6226:1;6183:37:::0;;;:24:::1;:37;::::0;;;;:40;6175:85:::1;;;::::0;;-1:-1:-1;;;6175:85:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;6279:39;6292:12;6306:11;6279:12;:39::i;:::-;6271:74;;;::::0;;-1:-1:-1;;;6271:74:2;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;6271:74:2;;;;;;;;;;;;;::::1;4425:138:1::0;-1:-1:-1;;;;;4532:15:1;;;4506:7;4532:15;;;:8;:15;;;;;;;;:24;;;;;;;;;;;;;4425:138::o;679:27:3:-;;;-1:-1:-1;;;;;679:27:3;;:::o;3882:191:2:-;3938:7;3965:19;;;:12;:19;;;;;:29;3957:63;;;;;-1:-1:-1;;;3957:63:2;;;;;;;;;;;;-1:-1:-1;;;3957:63:2;;;;;;;;;;;;;;;-1:-1:-1;4037:19:2;;;;:12;:19;;;;;:29;;3882:191::o;3620:207::-;3670:7;3740:1;3697:12;:30;3710:16;:14;:16::i;:::-;3697:30;;;;;;;;;;;:40;;;:44;3689:74;;;;;-1:-1:-1;;;3689:74:2;;;;;;;;;;;;-1:-1:-1;;;3689:74:2;;;;;;;;;;;;;;;3780:12;:30;3793:16;:14;:16::i;:::-;3780:30;;;;;;;;;;;:40;;;3773:47;;3620:207;:::o;713:114:3:-;587:9;:7;:9::i;:::-;579:42;;;;;-1:-1:-1;;;579:42:3;;;;;;;;;;;;-1:-1:-1;;;579:42:3;;;;;;;;;;;;;;;796:12:::1;:24:::0;;-1:-1:-1;;;;;;796:24:3::1;-1:-1:-1::0;;;;;796:24:3;;;::::1;::::0;;;::::1;::::0;;713:114::o;1013:157:6:-;1071:7;1102:5;;;1125:6;;;;1117:28;;;;;-1:-1:-1;;;1117:28:6;;;;;;;;;;;;-1:-1:-1;;;1117:28:6;;;;;;;;;;;;;;;1162:1;1013:157;-1:-1:-1;;;1013:157:6:o;11830:615:2:-;11918:17;;11876:7;;;11969:12;11876:7;11982:16;:14;:16::i;:::-;11969:30;;;;;;;;;;;:40;;;11945:64;;12019:19;12055:12;;;;;;;;;-1:-1:-1;;;;;12055:12:2;-1:-1:-1;;;;;12041:39:2;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12041:41:2;;-1:-1:-1;12093:19:2;12127:124;12237:13;12128:86;951:5;12129:68;12041:41;12130:49;951:5;12128:86;12131:12;12237:13;12131:16;:31::i;12129:68::-;12128:74;;:86::i;12127:124::-;12282:17;;12093:158;;-1:-1:-1;12282:34:2;;12093:158;12282:21;:34::i;:::-;12262:17;:54;12326:33;12340:4;12347:11;12326:5;:33::i;:::-;12375:35;;;;;;;;;;;;;;;;;12427:11;-1:-1:-1;;;;11830:615:2;:::o;798:157:6:-;856:7;888:1;883;:6;;875:28;;;;;-1:-1:-1;;;875:28:6;;;;;;;;;;;;-1:-1:-1;;;875:28:6;;;;;;;;;;;;;;;-1:-1:-1;925:5:6;;;798:157::o;6763:343:1:-;-1:-1:-1;;;;;6837:21:1;;6829:62;;;;;-1:-1:-1;;;6829:62:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;6917:12;;:23;;6934:5;6917:16;:23::i;:::-;6902:12;:38;-1:-1:-1;;;;;6971:18:1;;;;;;:9;:18;;;;;;:29;;6994:5;6971:22;:29::i;:::-;-1:-1:-1;;;;;6950:18:1;;;;;;:9;:18;;;;;:50;7025:11;;:22;;7041:5;7025:15;:22::i;:::-;7011:11;:36;7063;;;;;;;;7089:1;;-1:-1:-1;;;;;7063:36:1;;;;;;;;;;;;6763:343;;:::o;6077:379::-;-1:-1:-1;;;;;6194:18:1;;6186:56;;;;;-1:-1:-1;;;6186:56:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6260:16:1;;6252:52;;;;;-1:-1:-1;;;6252:52:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6333:15:1;;;;;;:9;:15;;;;;;:26;;6353:5;6333:19;:26::i;:::-;-1:-1:-1;;;;;6315:15:1;;;;;;;:9;:15;;;;;;:44;;;;6385:13;;;;;;;:24;;6403:5;6385:17;:24::i;:::-;-1:-1:-1;;;;;6369:13:1;;;;;;;:9;:13;;;;;;;;;:40;;;;6424:25;;;;;;;6369:13;;6424:25;;;;;;;;;;;;;6077:379;;;:::o;207:217:6:-;265:7;288:6;284:45;;-1:-1:-1;317:1:6;310:8;;284:45;351:5;;;355:1;351;:5;:1;374:5;;;;;:10;366:32;;;;;-1:-1:-1;;;366:32:6;;;;;;;;;;;;-1:-1:-1;;;366:32:6;;;;;;;;;;;;;;529:161;587:7;618:1;614;:5;606:32;;;;;-1:-1:-1;;;606:32:6;;;;;;;;;;;;-1:-1:-1;;;606:32:6;;;;;;;;;;;;;;;648:9;664:1;660;:5;;;;;;;529:161;-1:-1:-1;;;;529:161:6:o;12524:2000:2:-;12631:13;12660:18;12688:24;12727:15;;12746:1;12727:20;12723:525;;;12794:16;:14;:16::i;:::-;12771:20;:39;12763:85;;;;-1:-1:-1;;;12763:85:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12910:16;:14;:16::i;:::-;12929:8;12910:27;12887:20;:50;12862:144;;;;-1:-1:-1;;;12862:144:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1031:10:2;;-1:-1:-1;13079:20:2;12723:525;;;13156:15;;13143:29;;;;:12;:29;;;;;:39;;-1:-1:-1;13215:22:2;;13235:1;13215:19;:22::i;:::-;13196:41;;12723:525;13286:20;13266:16;:40;13258:71;;;;;-1:-1:-1;;;13258:71:2;;;;;;;;;;;;-1:-1:-1;;;13258:71:2;;;;;;;;;;;;;;;13340:24;;13398:53;13399:33;;;13398:51;:53::i;:::-;13375:76;;13465:12;13481:7;13465:23;13461:392;;;13509:37;;;;:24;:37;;;;;;:40;;;13490:59;;13461:392;;;13568:12;13584:7;13568:23;13564:289;;;13624:37;;;;:24;:37;;;;;13662:1;13624:40;;13564:289;13683:12;13699:7;13683:23;13679:174;;;13739:37;;;;:24;:37;;;;;13777:1;13739:40;;13679:174;13813:37;;;;:24;:37;;;;;13851:1;13813:40;;13794:59;;13679:174;13864:18;13897:132;2242:6;13898:73;13937:33;:10;2242:6;13937:14;:33::i;:::-;13899:32;:16;13920:10;13899:20;:32::i;:::-;13898:38;;:73::i;:::-;13897:83;;:132::i;:::-;13864:165;-1:-1:-1;14040:15:2;14058:65;14112:10;14058:44;951:5;14059:26;13864:165;14112:10;14059:14;:26::i;14058:44::-;:53;;:65::i;:::-;14040:83;;14133:16;14152;:14;:16::i;:::-;14212:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14179:30:2;;;:12;:30;;;;;:182;;;;;;;;;;;;;;;;;;;;;;;;;;14372:15;:34;;;14422:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14133:35;;-1:-1:-1;14422:74:2;;;;;;;;;;-1:-1:-1;14513:4:2;;12524:2000;-1:-1:-1;;;;;;;;;12524:2000:2:o;273:916:4:-;341:7;393:4;380:17;;341:7;;;;;554:19;380:17;554:8;:19::i;:::-;547:26;-1:-1:-1;613:28:4;262:4;613:15;:28::i;:::-;589:21;605:4;589:21;;:15;:21::i;:::-;:52;583:58;;698:3;217:8;675:26;652:49;;;;774:3;262:4;753;:18;:24;;;163:8;734:44;711:67;;;;806:22;847:1;843:5;;838:292;855:2;850:1;:7;;;838:292;;912:24;928:1;931:4;912:15;:24::i;:::-;117:5;895:41;878:58;;993:9;971:19;954:14;:36;:48;950:119;;;1030:1;1022:9;;1049:5;;950:119;1082:37;;;;859:3;;;;;838:292;;;1148:28;1164:5;1171:4;1148:15;:28::i;:::-;1179:2;1148:33;;273:916;-1:-1:-1;;;;;;;;;273:916:4:o;535:223:5:-;597:7;628:1;624;:5;616:32;;;;;-1:-1:-1;;;616:32:5;;;;;;;;;;;;-1:-1:-1;;;616:32:5;;;;;;;;;;;;;;;658:9;674:1;670;:5;;;;;;658:17;;697:1;693;689;:5;;;;;;:9;685:49;;;722:1;718:5;;535:223;-1:-1:-1;;;535:223:5:o;247:186::-;310:7;341:1;337;:5;329:32;;;;;-1:-1:-1;;;329:32:5;;;;;;;;;;;;-1:-1:-1;;;329:32:5;;;;;;;;;;;;;;;371:9;406:2;396:1;386;390:2;386:6;385:12;;;;;;401:1;384:18;383:25;;;;1744:789:4;1804:6;;262:4;163:8;1959:28;;1945:42;;;1804:6;;2037:28;;:15;:28::i;:::-;2013:21;2029:4;2013:21;;:15;:21::i;:::-;:52;1998:67;;2122:12;217:8;2099:35;2076:58;;;;2207:12;262:4;2186;:18;:33;;;163:8;2167:53;2144:76;;;;2231:275;2260:10;2238:19;:32;2231:275;;;2290:28;2315:1;2308:4;:8;2290:10;:28::i;:::-;2286:187;;;217:8;2338:43;;;;2286:187;;;163:8;2420:38;;;;2286:187;2494:1;2486:9;;;;2231:275;;;-1:-1:-1;2522:4:4;1744:789;-1:-1:-1;;;1744:789:4:o;2836:163::-;2976:3;-1:-1:-1;;2932:9:4;;;;2969:10;;;2965:1;2958:8;;:21;2989:3;2982:10;;;2958:34;;2836:163::o;1195:543::-;1270:7;1306:6;:11;;1316:1;1306:11;:38;;;;1333:6;:11;;1343:1;1333:11;1306:38;:65;;;;1360:6;:11;;1370:1;1360:11;1306:65;:92;;;;1387:6;:11;;1397:1;1387:11;1306:92;:119;;;;1414:6;:11;;1424:1;1414:11;1306:119;:147;;;;1441:6;:12;;1451:2;1441:12;1306:147;:175;;;;1469:6;:12;;1479:2;1469:12;1306:175;1289:443;;;-1:-1:-1;1513:2:4;1506:9;;1289:443;1536:6;:11;;1546:1;1536:11;:26;;;;1551:6;:11;;1561:1;1551:11;1536:26;:41;;;;1566:6;:11;;1576:1;1566:11;1536:41;:57;;;;1581:6;:12;;1591:2;1581:12;1536:57;1532:200;;;-1:-1:-1;1616:2:4;1609:9;;1532:200;1639:17;1650:5;1639:10;:17::i;:::-;1635:97;;;-1:-1:-1;1679:2:4;1672:9;;1635:97;-1:-1:-1;1719:2:4;1712:9;;2539:291;2595:4;2615:9;;;:14;2611:57;;-1:-1:-1;2652:5:4;2645:12;;2611:57;2689:3;2681:11;;;;:16;;2696:1;2681:16;2677:58;;-1:-1:-1;2720:4:4;2713:11;;2677:58;2756:3;2748:11;;;;:16;;2763:1;2748:16;2744:59;;-1:-1:-1;2787:5:4;2780:12;;2744:59;-1:-1:-1;2819:4:4;2539:291;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;

Swarm Source

ipfs://562cef5fb22f35271316dfd581aa36d0385add4d1743ee293c29f17ef247baa9
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.