Contract 0x7935dcea37887b06052bab26c3411f871c4db17a

 

Contract Overview

Balance:
0.007293255328497396 BNB

BNB Value:
$3.47 (@ $476.32/BNB)

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x7835e4084529bbf0056e8512461599e76264767cf2d584daf1d4fadf8d1a93f5Clear Stuck Bala...144017472022-01-16 0:49:401 day 18 hrs ago0x2cbd8e977ee24a5c7bcf1c9eb7e869b35fa417d3 IN  0x7935dcea37887b06052bab26c3411f871c4db17a0 BNB0.00015474
0xbe9c85f7b6bc167790563056dd08b9ee0b9578e810887f2a2485003cd159deeaApprove144005802022-01-15 23:51:171 day 19 hrs ago0xec034a2603e9d987bef1fa1d629f5f3b7ef5e877 IN  0x7935dcea37887b06052bab26c3411f871c4db17a0 BNB0.000222365
0xc49d6c7eb96b6df468f71247a97e771e4c1d7d577b82cd783ed6ed06563df7b8Approve143936302022-01-15 17:59:562 days 1 hr ago0xb498f1bc75ecc2df05400ae30d48f26336a48ca9 IN  0x7935dcea37887b06052bab26c3411f871c4db17a0 BNB0.000311311
0x1e7a88630c3d1599b0c247bc960b19104cff9a053ec8900fdce8caff374afc47Approve143904952022-01-15 15:23:062 days 4 hrs ago0xfaff990e94be7fc5208f8579d21e665d7b9d2953 IN  0x7935dcea37887b06052bab26c3411f871c4db17a0 BNB0.000126365
0xae8335ed2240113560dda4e716c315970e492f7ea071390e7bac42f60fa82191Approve143904922022-01-15 15:22:572 days 4 hrs ago0xfaff990e94be7fc5208f8579d21e665d7b9d2953 IN  0x7935dcea37887b06052bab26c3411f871c4db17a0 BNB0.000222365
0x1fafc7049558def34be2b9d84a2cca10265769221d393d85552e838ff4a4724aApprove143889862022-01-15 14:07:382 days 5 hrs ago0xf088318d4179ac9d436d30de6fa152c41bca37b9 IN  0x7935dcea37887b06052bab26c3411f871c4db17a0 BNB0.000222365
0x05bf6bcf37847775b1fda469fba9b184b97e89a5e2960865d5e0e6881360c6cdApprove143783302022-01-15 5:13:472 days 14 hrs ago0xc7d1f854b54e52bf30cb03687acff939986736ad IN  0x7935dcea37887b06052bab26c3411f871c4db17a0 BNB0.000222365
0x9e1f73398f6a41d28e7e38c2164a39ea82dd537b22b580edcca3f0ac185d4302Approve143707012022-01-14 22:52:032 days 20 hrs ago0xbf1466e503c2fb32b7ca061273c0ef97cb77d4b1 IN  0x7935dcea37887b06052bab26c3411f871c4db17a0 BNB0.000222365
0x476b1e54cc569c3df137639125f5b2fd20d95c870dc3168e7c1328a55b8549d8Approve143704292022-01-14 22:38:272 days 20 hrs ago0x91e050dac2b423f5fe4c00abbf12cdc1514ff6a0 IN  0x7935dcea37887b06052bab26c3411f871c4db17a0 BNB0.000222365
0x39ea2b073e4c09e71bebcff27a790a670cf1258209c7b279ef4b2ef9a5cf7626Approve143701582022-01-14 22:24:542 days 20 hrs ago0x02020fc3107d9c9c9304d6f5589fb620c90fa922 IN  0x7935dcea37887b06052bab26c3411f871c4db17a0 BNB0.000222365
0xdae2e1a435c122c4c21713ca11c671c332b4d2a35a90e7a62e259a80bbe8d98cApprove143700602022-01-14 22:20:002 days 21 hrs ago0x55a6bd6b2f0e40a455e75479e25590b60c576617 IN  0x7935dcea37887b06052bab26c3411f871c4db17a0 BNB0.000222365
0x30ec5be9eb72042e187cd168ef689fbb331fa43c0d38413ef80e170a4607f95bApprove143691442022-01-14 21:34:122 days 21 hrs ago0x3631fcb9b3c6d1a43fa00c3133dc1a1ded25e789 IN  0x7935dcea37887b06052bab26c3411f871c4db17a0 BNB0.000222365
0xaeedea259cd57c802583a57b4528d22c91af97140057b92bf11257ec8bdab0dbApprove143691332022-01-14 21:33:392 days 21 hrs ago0x474a7d5bdc4a09d27e5bc48c9a157c0dfa979e64 IN  0x7935dcea37887b06052bab26c3411f871c4db17a0 BNB0.000222365
0x3101fbe7eac10aa38aef152e4b06b8873fb150f58b2aa102a47366474a903a4fApprove143690282022-01-14 21:28:242 days 21 hrs ago0x7b0541b1e17ea13a01f5a9f757ab294cc0370326 IN  0x7935dcea37887b06052bab26c3411f871c4db17a0 BNB0.000222365
0x290e4b97f798b169d2ffefe51b0d6d47ce4665b4ea5a39ce8ab830d570cdd98bApprove143684722022-01-14 21:00:342 days 22 hrs ago0xe64f57ae87e083e5b5a3de47ffc84fb5c06bfbd0 IN  0x7935dcea37887b06052bab26c3411f871c4db17a0 BNB0.000222365
0x69c2b8c68da2bc4b42f1f70b31d8c5f4f3ed01db15efb9924322d77240b473c8Clear Stuck Bala...143683672022-01-14 20:55:192 days 22 hrs ago0x2cbd8e977ee24a5c7bcf1c9eb7e869b35fa417d3 IN  0x7935dcea37887b06052bab26c3411f871c4db17a0 BNB0.00015474
0xc8a5ba537f45dcda3cd7d28cec26efbcd770008d9274ce638f9622fda638b9f6Approve143682432022-01-14 20:49:072 days 22 hrs ago0x0cbd79178cfffaf138e134a7cbffa6f24482a471 IN  0x7935dcea37887b06052bab26c3411f871c4db17a0 BNB0.000222365
0x81d5c4c5843e49a06970c66cfdd04086f4a2f82a45c30bc20c6b642cb27f87b4Approve143682402022-01-14 20:48:582 days 22 hrs ago0x2a8877a128f39c629ce6ac9345824e221323db5f IN  0x7935dcea37887b06052bab26c3411f871c4db17a0 BNB0.000222365
0x734b8e40e4e11f58ba3ddeabcf37254e182ec42a5ddef222fc546295302cbc64Approve143682342022-01-14 20:48:402 days 22 hrs ago0x8e76321f2d5c7403a9613cdc5126b7324b9fdf88 IN  0x7935dcea37887b06052bab26c3411f871c4db17a0 BNB0.000222365
0xa9b436090561ec7a0c1ab1d1eb0a17305dd706e655f1346bae58373b1e3d8de0Approve143682272022-01-14 20:48:192 days 22 hrs ago0xd3ad8084f704aafc98528bdd51c8c0fa5c3faf99 IN  0x7935dcea37887b06052bab26c3411f871c4db17a0 BNB0.000222365
0x340d8d312a8b9e7bf67060be1034822867bb236c40fdbf42f255808a99b9c3deApprove143680892022-01-14 20:41:252 days 22 hrs ago0xccba223439c3b1eb5838c7213476022e828eab41 IN  0x7935dcea37887b06052bab26c3411f871c4db17a0 BNB0.000222365
0xd2f5149314b5d626407a7ef381fe84c9d56f77e712adff67bd40daa999ee9b9eApprove143680352022-01-14 20:38:432 days 22 hrs ago0xbe883aa9784e3bcbd2ad5b7fcb47248e2ac6187a IN  0x7935dcea37887b06052bab26c3411f871c4db17a0 BNB0.000222365
0x0a3fd238a24c13f96df0a3e945d8e1ed482d52f7782a2ef7df990706ad6a4c85Set Sell Multipl...143680092022-01-14 20:37:252 days 22 hrs ago0x2cbd8e977ee24a5c7bcf1c9eb7e869b35fa417d3 IN  0x7935dcea37887b06052bab26c3411f871c4db17a0 BNB0.00013716
0x1753d327a79f86f7f476381d2a633414c8732edfee77882f819455a2c19b658aApprove143680042022-01-14 20:37:102 days 22 hrs ago0x6caa167b4101ed4429a2c4c96f560a95d189016c IN  0x7935dcea37887b06052bab26c3411f871c4db17a0 BNB0.000222365
0x83c4d24e3f82626bd52a8f2d6f60ce563db33b5216a67ca534734cb05497cb6bApprove143680012022-01-14 20:37:012 days 22 hrs ago0x2e6e2111fa6fbbf3f3ba0f0554e11b22d55fa4c4 IN  0x7935dcea37887b06052bab26c3411f871c4db17a0 BNB0.000311311
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x51f43cf93912a0ae869aa763adff4d5fb4ad5163cfe221251037925bdc93811a144222372022-01-16 17:58:011 day 1 hr ago 0x7935dcea37887b06052bab26c3411f871c4db17a0x2cbd8e977ee24a5c7bcf1c9eb7e869b35fa417d30.004862170218998263 BNB
0x51f43cf93912a0ae869aa763adff4d5fb4ad5163cfe221251037925bdc93811a144222372022-01-16 17:58:011 day 1 hr ago 0x7935dcea37887b06052bab26c3411f871c4db17a0x2cbd8e977ee24a5c7bcf1c9eb7e869b35fa417d30.014586510656994789 BNB
0x51f43cf93912a0ae869aa763adff4d5fb4ad5163cfe221251037925bdc93811a144222372022-01-16 17:58:011 day 1 hr ago 0x7935dcea37887b06052bab26c3411f871c4db17a 0x58b11dfa6220550ae8da4c9e0d06d9afcc7839ff0.002431085109499131 BNB
0x51f43cf93912a0ae869aa763adff4d5fb4ad5163cfe221251037925bdc93811a144222372022-01-16 17:58:011 day 1 hr ago PancakeSwap: Router v2 0x7935dcea37887b06052bab26c3411f871c4db17a0.029173021313989579 BNB
0x7835e4084529bbf0056e8512461599e76264767cf2d584daf1d4fadf8d1a93f5144017472022-01-16 0:49:401 day 18 hrs ago 0x7935dcea37887b06052bab26c3411f871c4db17a0x2cbd8e977ee24a5c7bcf1c9eb7e869b35fa417d30.053328298344690892 BNB
0x06db2d42e51c3a08c5144051c956870e2adfd10e5b5d029f52efdd13ae2bc3fc143713892022-01-14 23:26:272 days 19 hrs ago 0x7935dcea37887b06052bab26c3411f871c4db17a0x2cbd8e977ee24a5c7bcf1c9eb7e869b35fa417d30.005438111067687779 BNB
0x06db2d42e51c3a08c5144051c956870e2adfd10e5b5d029f52efdd13ae2bc3fc143713892022-01-14 23:26:272 days 19 hrs ago 0x7935dcea37887b06052bab26c3411f871c4db17a0x2cbd8e977ee24a5c7bcf1c9eb7e869b35fa417d30.016314333203063338 BNB
0x06db2d42e51c3a08c5144051c956870e2adfd10e5b5d029f52efdd13ae2bc3fc143713892022-01-14 23:26:272 days 19 hrs ago 0x7935dcea37887b06052bab26c3411f871c4db17a 0x58b11dfa6220550ae8da4c9e0d06d9afcc7839ff0.002719055533843889 BNB
0x06db2d42e51c3a08c5144051c956870e2adfd10e5b5d029f52efdd13ae2bc3fc143713892022-01-14 23:26:272 days 19 hrs ago PancakeSwap: Router v2 0x7935dcea37887b06052bab26c3411f871c4db17a0.032628666406126677 BNB
0xb3eac40d0ed8568f825dc2f5aed2fc16ff5f3b36cd92d314ce75e41f8215b8a4143701682022-01-14 22:25:242 days 20 hrs ago 0x7935dcea37887b06052bab26c3411f871c4db17a0x2cbd8e977ee24a5c7bcf1c9eb7e869b35fa417d30.006429244375682998 BNB
0xb3eac40d0ed8568f825dc2f5aed2fc16ff5f3b36cd92d314ce75e41f8215b8a4143701682022-01-14 22:25:242 days 20 hrs ago 0x7935dcea37887b06052bab26c3411f871c4db17a0x2cbd8e977ee24a5c7bcf1c9eb7e869b35fa417d30.019287733127048995 BNB
0xb3eac40d0ed8568f825dc2f5aed2fc16ff5f3b36cd92d314ce75e41f8215b8a4143701682022-01-14 22:25:242 days 20 hrs ago 0x7935dcea37887b06052bab26c3411f871c4db17a 0x58b11dfa6220550ae8da4c9e0d06d9afcc7839ff0.003214622187841499 BNB
0xb3eac40d0ed8568f825dc2f5aed2fc16ff5f3b36cd92d314ce75e41f8215b8a4143701682022-01-14 22:25:242 days 20 hrs ago PancakeSwap: Router v2 0x7935dcea37887b06052bab26c3411f871c4db17a0.03857546625409799 BNB
0xea9e079aaab7f5d90e2b31ee2192ed3b01b2173f32daac449a6e5fbbfbf80cd4143691202022-01-14 21:33:002 days 21 hrs ago 0x7935dcea37887b06052bab26c3411f871c4db17a0x2cbd8e977ee24a5c7bcf1c9eb7e869b35fa417d30.007309582475300614 BNB
0xea9e079aaab7f5d90e2b31ee2192ed3b01b2173f32daac449a6e5fbbfbf80cd4143691202022-01-14 21:33:002 days 21 hrs ago 0x7935dcea37887b06052bab26c3411f871c4db17a0x2cbd8e977ee24a5c7bcf1c9eb7e869b35fa417d30.021928747425901844 BNB
0xea9e079aaab7f5d90e2b31ee2192ed3b01b2173f32daac449a6e5fbbfbf80cd4143691202022-01-14 21:33:002 days 21 hrs ago 0x7935dcea37887b06052bab26c3411f871c4db17a 0x58b11dfa6220550ae8da4c9e0d06d9afcc7839ff0.003654791237650307 BNB
0xea9e079aaab7f5d90e2b31ee2192ed3b01b2173f32daac449a6e5fbbfbf80cd4143691202022-01-14 21:33:002 days 21 hrs ago PancakeSwap: Router v2 0x7935dcea37887b06052bab26c3411f871c4db17a0.043857494851803688 BNB
0x8655872d59d8e8dbf2d8f24edb719a89aeb42a1ef39d7744be05f7cca3fc02a1143686962022-01-14 21:11:482 days 22 hrs ago 0x7935dcea37887b06052bab26c3411f871c4db17a0x2cbd8e977ee24a5c7bcf1c9eb7e869b35fa417d30.007934019059288301 BNB
0x8655872d59d8e8dbf2d8f24edb719a89aeb42a1ef39d7744be05f7cca3fc02a1143686962022-01-14 21:11:482 days 22 hrs ago 0x7935dcea37887b06052bab26c3411f871c4db17a0x2cbd8e977ee24a5c7bcf1c9eb7e869b35fa417d30.023802057177864904 BNB
0x8655872d59d8e8dbf2d8f24edb719a89aeb42a1ef39d7744be05f7cca3fc02a1143686962022-01-14 21:11:482 days 22 hrs ago 0x7935dcea37887b06052bab26c3411f871c4db17a 0x58b11dfa6220550ae8da4c9e0d06d9afcc7839ff0.00396700952964415 BNB
0x8655872d59d8e8dbf2d8f24edb719a89aeb42a1ef39d7744be05f7cca3fc02a1143686962022-01-14 21:11:482 days 22 hrs ago PancakeSwap: Router v2 0x7935dcea37887b06052bab26c3411f871c4db17a0.047604114355729809 BNB
0x45cd9d3c1683e0e52593f1e0711a23d9f14a7ca9aa4a56899fe7e51d6ecaf275143684802022-01-14 21:00:582 days 22 hrs ago 0x7935dcea37887b06052bab26c3411f871c4db17a0x2cbd8e977ee24a5c7bcf1c9eb7e869b35fa417d30.008441241918500896 BNB
0x45cd9d3c1683e0e52593f1e0711a23d9f14a7ca9aa4a56899fe7e51d6ecaf275143684802022-01-14 21:00:582 days 22 hrs ago 0x7935dcea37887b06052bab26c3411f871c4db17a0x2cbd8e977ee24a5c7bcf1c9eb7e869b35fa417d30.02532372575550269 BNB
0x45cd9d3c1683e0e52593f1e0711a23d9f14a7ca9aa4a56899fe7e51d6ecaf275143684802022-01-14 21:00:582 days 22 hrs ago 0x7935dcea37887b06052bab26c3411f871c4db17a 0x58b11dfa6220550ae8da4c9e0d06d9afcc7839ff0.004220620959250448 BNB
0x45cd9d3c1683e0e52593f1e0711a23d9f14a7ca9aa4a56899fe7e51d6ecaf275143684802022-01-14 21:00:582 days 22 hrs ago PancakeSwap: Router v2 0x7935dcea37887b06052bab26c3411f871c4db17a0.05064745151100538 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AsheraNeko

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2022-01-14
*/

//https://t.me/Asheraneko
//Welcome to Ashera Neko - The cat meme token ready to fight off dogs

//SPDX-License-Identifier: MIT

pragma solidity ^0.8.11;


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

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

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

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

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

        return c;
    }
}

library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * C U ON THE MOON
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }
}


/**
 * BEP20 standard interface.
 */
interface IBEP20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

/**
 * Allows for contract ownership along with multi-address authorization
 */
abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal _intAddr;

    constructor(address _owner) {
        owner = _owner;
        _intAddr[_owner] = true;
    }

    /**
     * Function modifier to require caller to be contract owner
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    /**
     * Function modifier to require caller to be authorized
     */
    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    /**
     * Authorize address. Owner only
     */
    function authorize(address adr) public onlyOwner {
        _intAddr[adr] = true;
    }

    /**
     * Remove address' authorization. Owner only
     */
    
    function unauthorize(address adr) public onlyOwner {
        _intAddr[adr] = false;
    }

    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    /**
     * Return address' authorization status
     */
    function isAuthorized(address adr) internal view returns (bool) {
        return _intAddr[adr];
    }

    /**
     * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        _intAddr[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IDividendDistributor {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
    function changeToken(address newToken) external;
}

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address _token;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }
    
    // Default Token our contract
    IBEP20 rewardToken = IBEP20(address(this));
    address WBNB = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c; // MAINNET
    IDEXRouter router;

    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;

    mapping (address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;
    uint256 public minPeriod = 30 * 60;
    uint256 public minDistribution = 1 * (10 ** 12);

    uint256 currentIndex;
    
    /* Custom Events */
    event DividendsDistributed(address shareholder, uint256 value);

    bool initialized;
    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == _token); _;
    }

    constructor (address _router) {
        router = _router != address(0)
            ? IDEXRouter(_router)
            : IDEXRouter(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        _token = msg.sender;
    }
    
    function setRouterAddress(address _router) external {
        router = IDEXRouter(_router);
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
    }

    function setShare(address shareholder, uint256 amount) external override onlyToken {
        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }

        if(amount > 0 && shares[shareholder].amount == 0){
            addShareholder(shareholder);
        }else if(amount == 0 && shares[shareholder].amount > 0){
            removeShareholder(shareholder);
        }

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function deposit() external payable override onlyToken {
        uint256 balanceBefore = rewardToken.balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = WBNB;
        path[1] = address(rewardToken);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amount = rewardToken.balanceOf(address(this)).sub(balanceBefore);

        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }

    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholders.length;

        if(shareholderCount == 0) { return; }

        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();

        uint256 iterations = 0;

        while(gasUsed < gas && iterations < shareholderCount) {
            if(currentIndex >= shareholderCount){
                currentIndex = 0;
            }

            if(shouldDistribute(shareholders[currentIndex])){
                distributeDividend(shareholders[currentIndex]);
            }

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }
    
    function shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp
                && getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address _shareholder) internal {
        if(shares[_shareholder].amount == 0){ return; }

        uint256 amount = getUnpaidEarnings(_shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            rewardToken.transfer(_shareholder, amount);
            shareholderClaims[_shareholder] = block.timestamp;
            shares[_shareholder].totalRealised = shares[_shareholder].totalRealised.add(amount);
            shares[_shareholder].totalExcluded = getCumulativeDividends(shares[_shareholder].amount);
            emit DividendsDistributed(_shareholder, amount);
        }
    }
    
    function changeToken(address _newToken) external override {

        rewardToken = IBEP20(_newToken);
    }
    
    function claimDividend() public {
        distributeDividend(msg.sender);
    }

    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }

        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) public view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
    
    function getSharesAmount(address _shareholder) external view returns (uint) {
        return shares[_shareholder].amount;
    }
    
    function getSharesExcluded(address _shareholder) external view returns (uint) {
        return shares[_shareholder].totalExcluded;
    }
    
    function getSharesRealised(address _shareholder) external view returns (uint) {
        return shares[_shareholder].totalRealised;
    }
    
    function getSharesHolders() external view returns (address [] memory) {
        return shareholders;
    }
    
    function getTotalShares() external view returns (uint) {
        return totalShares;
    }
    
    function getTotalDividends() external view returns (uint) {
        return totalDividends;
    }
    
    function getDividendsPerShare() external view returns (uint) {
        return dividendsPerShare;
    }
    
    function getMinDistribution() external view returns (uint) {
        return minDistribution;
    }
    
    function getMinPeriod() external view returns (uint) {
        return minPeriod;
    }
    
}

contract AsheraNeko is IBEP20, Auth {
    using SafeMath for uint256;
    using Address for address;

    address rewardToken = address(this);
    address WBNB = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c; // MAINNET
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;    
    address routerAddress = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // MAINNET

    string constant _name = "Ashera Neko";
    string constant _symbol = "ASHERA";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1 * 10**9 * (10 ** _decimals);
    uint256 public _maxTxAmountBuy = _totalSupply * 1 / 100; // 1%
    uint256 public _maxTxAmountSell = _totalSupply * 1 / 100; // 1%

    //max wallet holding of 1% 
    uint256 public _maxWalletToken = ( _totalSupply * 3 ) / 100; // 3%
    uint256 deadBlocks = 10;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) isTimelockExempt;
    mapping (address => bool) isDividendExempt;
    

    uint256 liquidityFee    = 3;
    uint256 reflectionFee   = 1;
    uint256 marketingFee    = 6;
    uint256 devFee          = 2;
    uint256 public totalFee = 12;

    uint256 sellMultiplier  = 150;

    uint256 feeDenominator  = 100;

    address autoLiquidityReceiver;
    address marketingFeeReceiver;
    address devFeeReceiver;

    uint256 targetLiquidity = 50;
    uint256 targetLiquidityDenominator = 70;

    IDEXRouter public router;
    address public pair;
    bool public tradingOpen = false;

    uint256 public launchedAt = 0;

    DividendDistributor distributor;
    uint256 distributorGas = 500000;

    // Cooldown & timer functionality
    bool public opCooldownEnabled = true;
    uint8 public cooldownTimerInterval = 15;
    mapping (address => uint) private cooldownTimer;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 5 / 1000; // 0.5% of supply
    
    /* Custom Events */
    event SwapBackEvent(uint amountBNB, uint amountBNBLiquidity, uint amountBNBReflection, uint amountBNBMarketing);
    event AirDropEvent(address[] addresses, uint256[] tokens);
    event RouterChangedEvent(address _router);
    
    
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(routerAddress);
        pair = IDEXFactory(router.factory()).createPair(WBNB, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        distributor = new DividendDistributor(address(router));

        isFeeExempt[msg.sender] = true;
        
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[routerAddress] = true;

        // No timelock for these people
        isTimelockExempt[msg.sender] = true;
        isTimelockExempt[DEAD] = true;
        isTimelockExempt[address(this)] = true;

        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = false;
        isDividendExempt[DEAD] = true;
        isDividendExempt[ZERO] = true;

        // NICE!
        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = msg.sender;
        devFeeReceiver = msg.sender;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }
        
        if(!_intAddr[sender] && !_intAddr[recipient]){
            require(tradingOpen,"Trading not open yet");
        }
        // max wallet code
        if (!_intAddr[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != marketingFeeReceiver && recipient != autoLiquidityReceiver && recipient != devFeeReceiver){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}
        
        if (sender == pair &&
            opCooldownEnabled &&
            !isTimelockExempt[recipient]) {
            require(cooldownTimer[recipient] < block.timestamp,"Please wait for 1min between two operations");
            cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval;
        }

        // Checks max transaction limit
        if(!_intAddr[sender] && !_intAddr[recipient]){
            checkTxLimit(sender, amount);
        }
        
        // Liquidity, Maintained at 25%
        if(shouldSwapBack()){ swapBack();}


        //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);

        // Dividend tracker
        if(!isDividendExempt[sender]) {
            try distributor.setShare(sender, _balances[sender]) {} catch {}
        }

        if(!isDividendExempt[recipient]) {
            try distributor.setShare(recipient, _balances[recipient]) {} catch {} 
        }

        try distributor.process(distributorGas) {} catch {}

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    // switch Trading
    function tradingStatus(bool _status) public authorized {
        tradingOpen = _status;
        if(tradingOpen){
            launchedAt = block.number;
        }
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        if (sender == pair){
            require(amount <= _maxTxAmountBuy || isTxLimitExempt[sender], "TX Limit Exceeded");
        }else{
            require(amount <= _maxTxAmountSell || isTxLimitExempt[sender], "TX Limit Exceeded");
        }
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeFee(address sender, uint256 amount) internal returns (uint256) {
        uint256 multiplier = sender == pair ? 100 : sellMultiplier;
        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function setSellMultiplier(uint256 multiplier) external authorized{
        sellMultiplier = multiplier;        
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair 
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function clearStuckBalance(uint256 amountPercentage) external authorized {
        uint256 amountBNB = address(this).balance;
        payable(marketingFeeReceiver).transfer(amountBNB * amountPercentage / 100);
    }


    // enable cooldown between trades
    function cooldownEnabled(bool _status, uint8 _interval) public authorized {
        opCooldownEnabled = _status;
        cooldownTimerInterval = _interval;
    }

    function swapBack() internal swapping {

        uint256 dynamicliquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicliquidityFee).div(totalFee).div(2);
        
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WBNB;

        uint256 balanceBefore = address(this).balance;
    
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );
        
        uint256 amountBNB = address(this).balance.sub(balanceBefore);

        uint256 totalBNBFee = totalFee.sub(dynamicliquidityFee.div(2));
        
        uint256 amountBNBLiquidity = amountBNB.mul(dynamicliquidityFee).div(totalBNBFee).div(2);
        uint256 amountBNBReflection = amountBNB.mul(reflectionFee).div(totalBNBFee);
        uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee);
        uint256 amountBNBDev = amountBNB.mul(devFee).div(totalBNBFee);
        
        if (amountBNBReflection > 0){
            try distributor.deposit{value: amountBNBReflection}() {} catch {}
        }

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountBNBMarketing, gas: 30000}("");
        (bool tmpSuccessDev,) = payable(devFeeReceiver).call{value: amountBNBDev, gas: 30000}("");
        
        // only to supress warning msg
        tmpSuccess = false;
        tmpSuccessDev = false;
        
        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountBNBLiquidity, amountToLiquify);
        }
        
        emit SwapBackEvent(amountBNB, amountBNBLiquidity, amountBNBReflection, amountBNBMarketing);
    }

    
    // Set the maximum transaction limit
    function setTxLimit(uint256 amountBuy, uint256 amountSell) external authorized {
        _maxTxAmountBuy = amountBuy;
        _maxTxAmountSell = amountSell;
    }
    
    // Set the maximum permitted wallet holding (percent of total supply)
    function setMaxWalletPercent(uint256 maxWallPercent) external authorized() {
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 100;
    }
    
    
    // Blacklist a holder from dividends
    function setIsDividendExempt(address holder, bool exempt) external authorized {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if(exempt){
            distributor.setShare(holder, 0);
        }else{
            distributor.setShare(holder, _balances[holder]);
        }
    }
    
    // Whitelist a holder from fees
    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }
    
    
    // Whitelist a holder from transaction limits
    function setIsTxLimitExempt(address holder, bool exempt) external authorized {
        isTxLimitExempt[holder] = exempt;
    }

    // Whitelist a holder from timelocks
    function setIsTimelockExempt(address holder, bool exempt) external authorized {
        isTimelockExempt[holder] = exempt;
    }
    
    // Set an address exempt for all (use to public sale)
    function setAllExempt(address _holder, bool _exempt) external authorized {
        isFeeExempt[_holder] = _exempt;
        isTxLimitExempt[_holder] = _exempt;
        isTimelockExempt[_holder] = _exempt;
        if (_exempt){
            authorize(_holder);
        }
        
        
        else {
            unauthorize(_holder);
        }
        
        
    }

    function setFees(uint256 _liquidityFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _devFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        reflectionFee = _reflectionFee;
        marketingFee = _marketingFee;
        devFee = _devFee;
        totalFee = _liquidityFee.add(_reflectionFee).add(_marketingFee).add(_devFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator/4);
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _devFeeReceiver) external authorized {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        devFeeReceiver = _devFeeReceiver;

        isFeeExempt[_autoLiquidityReceiver];
        isFeeExempt[_marketingFeeReceiver];
        isFeeExempt[_devFeeReceiver];
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function setTargetLiquidity(uint256 _target, uint256 _denominator) external authorized {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }
    
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }

    function setDistributorSettings(uint256 gas) external authorized {
        require(gas < 750000);
        distributorGas = gas;
    }
    
    function setRewardToken(address _newToken) external authorized {
        require(_newToken.isContract(), "Enter valid contract address");
        rewardToken = _newToken;
        distributor.changeToken(_newToken);
    }
    
    function setRouterAddress(address _router) external authorized {
        router = IDEXRouter(_router);
        pair = IDEXFactory(router.factory()).createPair(WBNB, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;
        isDividendExempt[pair] = true;
        isTxLimitExempt[_router] = true;
        distributor.setRouterAddress(_router);
        emit RouterChangedEvent(_router);
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }
    

    function getContractBalances() external view authorized returns (uint) {
        return _balances[address(this)];
    }
    
    function getContractBNBBalances() external view authorized returns (uint) {
         return address(this).balance;
    }
    
    function getAmountToLiquify() external view authorized returns (uint) {
        return swapThreshold.mul(liquidityFee).div(totalFee).div(2);
    }
    
    function getAmountToSwap() external view authorized returns (uint) {
        uint256 amountToLiquify = swapThreshold.mul(liquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);
        
        return amountToSwap;
    }

    function getAmountBNBReflection() external view authorized returns (uint) {
        IBEP20 _rewardToken = IBEP20(rewardToken);
        uint256 balanceBefore = _rewardToken.balanceOf(address(this));

        uint256 amountBNB = address(this).balance.sub(balanceBefore);
    
        uint256 totalBNBFee = totalFee.sub(liquidityFee.div(2));
        
        uint256 amountBNBReflection = amountBNB.mul(reflectionFee).div(totalBNBFee);
        
        return amountBNBReflection;
    }
    
    
    /* End Debugging functions */

/* Airdrop Begins */


 function airdrop(address from, address[] calldata addresses, uint256[] calldata tokens) external authorized {

    uint256 SCCC = 0;

    require(addresses.length == tokens.length,"Mismatch between Address and token count");

    for(uint i=0; i < addresses.length; i++){
        SCCC = SCCC + tokens[i];
    }

    require(balanceOf(from) >= SCCC, "Not enough tokens in wallet for airdrop");

    for(uint i=0; i < addresses.length; i++){
        _basicTransfer(from,addresses[i],tokens[i]);
        if(!isDividendExempt[addresses[i]]) {
            try distributor.setShare(addresses[i], _balances[addresses[i]]) {} catch {} 
        }
    }

    // Dividend tracker
    if(!isDividendExempt[from]) {
        try distributor.setShare(from, _balances[from]) {} catch {}
    }
    
    emit AirDropEvent(addresses, tokens);
}

    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"addresses","type":"address[]"},{"indexed":false,"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"AirDropEvent","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":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_router","type":"address"}],"name":"RouterChangedEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBNBLiquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBNBReflection","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBNBMarketing","type":"uint256"}],"name":"SwapBackEvent","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":[],"name":"_maxTxAmountBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmountSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_interval","type":"uint8"}],"name":"cooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getAmountBNBReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAmountToLiquify","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAmountToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getContractBNBBalances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getContractBalances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","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":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"opCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_holder","type":"address"},{"internalType":"bool","name":"_exempt","type":"bool"}],"name":"setAllExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_devFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTimelockExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"setMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newToken","type":"address"}],"name":"setRewardToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"setRouterAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"multiplier","type":"uint256"}],"name":"setSellMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountBuy","type":"uint256"},{"internalType":"uint256","name":"amountSell","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b0319908116301790915560038054821673bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c17905560048054821661dead1790556005805482169055600680549091167310ed43c718714eb63d5aa57b78b54704e256024e179055620000786009600a620005a2565b6200008890633b9aca00620005ba565b600755606460075460016200009e9190620005ba565b620000aa9190620005dc565b60085560646007546001620000c09190620005ba565b620000cc9190620005dc565b60095560646007546003620000e29190620005ba565b620000ee9190620005dc565b600a908155600b5560036012556001601381905560066014556002601555600c601655609660175560646018556032601c556046601d55601f805460ff60a01b1916905560006020556207a1206022556023805461ffff1916610f011790556025805460ff191690911790556007546103e8906200016e906005620005ba565b6200017a9190620005dc565b6026553480156200018a57600080fd5b5060008054336001600160a01b031991821681178355825260016020818152604093849020805460ff1916909217909155600654601e80546001600160a01b03909216919093168117909255825163c45a015560e01b81529251919263c45a015592600480830193928290030181865afa1580156200020d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002339190620005ff565b6003546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801562000285573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ab9190620005ff565b601f80546001600160a01b0319166001600160a01b03928316179055306000908152600d60209081526040808320601e8054861685529252918290206000199055549051911690620002fd906200047f565b6001600160a01b039091168152602001604051809103906000f0801580156200032a573d6000803e3d6000fd5b50602180546001600160a01b03199081166001600160a01b0393841617909155336000818152600e60209081526040808320805460ff199081166001908117909255600f84528285208054821683179055308086528386208054831684179055600654891686528386208054831684179055868652601085528386208054831684179055600480548a16875284872080548416851790558187528487208054841685179055601f548a16875260118652848720805484168517905590865283862080548316905554881685528285208054821683179055600554909716845281842080549097161790955560198054851684179055601a8054851684179055601b80549094168317909355600754828252600c84528482208190559351938452909290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36200062a565b611353806200386583390190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004e4578160001904821115620004c857620004c86200048d565b80851615620004d657918102915b93841c9390800290620004a8565b509250929050565b600082620004fd575060016200059c565b816200050c575060006200059c565b8160018114620005255760028114620005305762000550565b60019150506200059c565b60ff8411156200054457620005446200048d565b50506001821b6200059c565b5060208310610133831016604e8410600b841016171562000575575081810a6200059c565b620005818383620004a3565b80600019048211156200059857620005986200048d565b0290505b92915050565b6000620005b360ff841683620004ec565b9392505050565b6000816000190483118215151615620005d757620005d76200048d565b500290565b600082620005fa57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200061257600080fd5b81516001600160a01b0381168114620005b357600080fd5b61322b806200063a6000396000f3fe6080604052600436106103545760003560e01c806378109e54116101c6578063bf56b371116100f7578063f2fde38b11610095578063f84ba65d1161006f578063f84ba65d146109e5578063f887ea4014610a05578063ffb54a9914610a25578063ffd2a7d314610a4657600080fd5b8063f2fde38b1461098f578063f59d047c146109af578063f708a64f146109c557600080fd5b8063d9d47d69116100d1578063d9d47d69146108f4578063dd62ed3e14610909578063df20fd491461094f578063f0b37c041461096f57600080fd5b8063bf56b3711461089e578063d51ed1c8146108b4578063d7c01032146108d457600080fd5b8063a7bc1de011610164578063aad1d0b11161013e578063aad1d0b11461082f578063b6a5d7de1461084f578063ba344dc41461086f578063bcf0c9f61461088957600080fd5b8063a7bc1de0146107cf578063a8aa1b31146107ef578063a9059cbb1461080f57600080fd5b80638aee8127116101a05780638aee81271461074b57806395d89b411461076b5780639d1944f51461079a578063a2247470146107ba57600080fd5b806378109e54146106e357806382bf293c146106f9578063893d20e81461071957600080fd5b80632b112e49116102a057806350db71fb1161023e578063658d4b7f11610218578063658d4b7f146106545780636ddd17131461067457806370a082311461068e578063722b62ad146106c457600080fd5b806350db71fb146105ff578063571ac8b01461061f57806357e8a7ff1461063f57600080fd5b80632f54bf6e1161027a5780632f54bf6e14610578578063313ce567146105a757806341cb87fc146105c957806346469ae7146105e957600080fd5b80632b112e49146105235780632d48e896146105385780632d5945671461055857600080fd5b80631161ae391161030d5780631df4ccfc116102e75780631df4ccfc146104ad5780631faf723b146104c3578063201e7991146104e357806323b872dd1461050357600080fd5b80631161ae391461045857806318160ddd146104785780631da1db5e1461048d57600080fd5b8063025ff12f146103605780630445b6671461038257806304a66b48146103ab57806306fdde03146103cb578063095ea7b3146104085780630d2959801461043857600080fd5b3661035b57005b600080fd5b34801561036c57600080fd5b5061038061037b366004612c91565b610a5b565b005b34801561038e57600080fd5b5061039860265481565b6040519081526020015b60405180910390f35b3480156103b757600080fd5b506103806103c6366004612d14565b610e19565b3480156103d757600080fd5b5060408051808201909152600b81526a417368657261204e656b6f60a81b60208201525b6040516103a29190612d4f565b34801561041457600080fd5b50610428610423366004612da4565b610e8f565b60405190151581526020016103a2565b34801561044457600080fd5b50610380610453366004612de5565b610efc565b34801561046457600080fd5b50610428610473366004612e00565b610f50565b34801561048457600080fd5b50600754610398565b34801561049957600080fd5b506103806104a8366004612e22565b610f64565b3480156104b957600080fd5b5061039860165481565b3480156104cf57600080fd5b506103806104de366004612e00565b610fdd565b3480156104ef57600080fd5b506103806104fe366004612e00565b61100d565b34801561050f57600080fd5b5061042861051e366004612e3b565b61103d565b34801561052f57600080fd5b506103986110ff565b34801561054457600080fd5b50610380610553366004612e00565b611151565b34801561056457600080fd5b50610380610573366004612e7c565b6111e0565b34801561058457600080fd5b50610428610593366004612eb9565b6000546001600160a01b0391821691161490565b3480156105b357600080fd5b5060095b60405160ff90911681526020016103a2565b3480156105d557600080fd5b506103806105e4366004612eb9565b61122c565b3480156105f557600080fd5b5061039860085481565b34801561060b57600080fd5b5061038061061a366004612ed6565b61144d565b34801561062b57600080fd5b5061042861063a366004612eb9565b61149d565b34801561064b57600080fd5b506103986114ab565b34801561066057600080fd5b5061038061066f366004612ed6565b6115a4565b34801561068057600080fd5b506025546104289060ff1681565b34801561069a57600080fd5b506103986106a9366004612eb9565b6001600160a01b03166000908152600c602052604090205490565b3480156106d057600080fd5b506023546105b790610100900460ff1681565b3480156106ef57600080fd5b50610398600a5481565b34801561070557600080fd5b50610380610714366004612e22565b6115f4565b34801561072557600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016103a2565b34801561075757600080fd5b50610380610766366004612eb9565b611639565b34801561077757600080fd5b5060408051808201909152600681526541534845524160d01b60208201526103fb565b3480156107a657600080fd5b506103806107b5366004612e22565b61172e565b3480156107c657600080fd5b50610398611767565b3480156107db57600080fd5b506103806107ea366004612e22565b611793565b3480156107fb57600080fd5b50601f54610733906001600160a01b031681565b34801561081b57600080fd5b5061042861082a366004612da4565b6117bd565b34801561083b57600080fd5b5061038061084a366004612ed6565b6117ca565b34801561085b57600080fd5b5061038061086a366004612eb9565b611858565b34801561087b57600080fd5b506023546104289060ff1681565b34801561089557600080fd5b506103986118a9565b3480156108aa57600080fd5b5061039860205481565b3480156108c057600080fd5b506103986108cf366004612e22565b6118f2565b3480156108e057600080fd5b506103806108ef366004612f0b565b611933565b34801561090057600080fd5b5061039861199f565b34801561091557600080fd5b50610398610924366004612f56565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205490565b34801561095b57600080fd5b5061038061096a366004612f84565b611a0a565b34801561097b57600080fd5b5061038061098a366004612eb9565b611a46565b34801561099b57600080fd5b506103806109aa366004612eb9565b611a91565b3480156109bb57600080fd5b5061039860095481565b3480156109d157600080fd5b506103806109e0366004612ed6565b611b21565b3480156109f157600080fd5b50610380610a00366004612ed6565b611c3a565b348015610a1157600080fd5b50601e54610733906001600160a01b031681565b348015610a3157600080fd5b50601f5461042890600160a01b900460ff1681565b348015610a5257600080fd5b50610398611c8a565b610a6433611cc5565b610a895760405162461bcd60e51b8152600401610a8090612fa0565b60405180910390fd5b6000838214610aeb5760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610a80565b60005b84811015610b2e57838382818110610b0857610b08612fc5565b9050602002013582610b1a9190612ff1565b915080610b2681613009565b915050610aee565b5080610b4f876001600160a01b03166000908152600c602052604090205490565b1015610bad5760405162461bcd60e51b815260206004820152602760248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657420666f7220604482015266061697264726f760cc1b6064820152608401610a80565b60005b84811015610d4257610c0187878784818110610bce57610bce612fc5565b9050602002016020810190610be39190612eb9565b868685818110610bf557610bf5612fc5565b90506020020135611ce3565b5060116000878784818110610c1857610c18612fc5565b9050602002016020810190610c2d9190612eb9565b6001600160a01b0316815260208101919091526040016000205460ff16610d30576021546001600160a01b03166314b6ca96878784818110610c7157610c71612fc5565b9050602002016020810190610c869190612eb9565b600c60008a8a87818110610c9c57610c9c612fc5565b9050602002016020810190610cb19190612eb9565b6001600160a01b03166001600160a01b03168152602001908152602001600020546040518363ffffffff1660e01b8152600401610d039291906001600160a01b03929092168252602082015260400190565b600060405180830381600087803b158015610d1d57600080fd5b505af1925050508015610d2e575060015b505b80610d3a81613009565b915050610bb0565b506001600160a01b03861660009081526011602052604090205460ff16610dd4576021546001600160a01b038781166000818152600c602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b158015610dc157600080fd5b505af1925050508015610dd2575060015b505b7f0f43b33bc87b60836ebef7fd4446e541f544d79b1535f91597af2cf81e7e706785858585604051610e099493929190613024565b60405180910390a1505050505050565b610e2233611cc5565b610e3e5760405162461bcd60e51b8152600401610a8090612fa0565b6012859055601384905560148390556015829055610e6882610e6285818989611dc9565b90611dc9565b6016556018819055610e7b6004826130a8565b60165410610e8857600080fd5b5050505050565b336000818152600d602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610eea9086815260200190565b60405180910390a35060015b92915050565b610f0533611cc5565b610f215760405162461bcd60e51b8152600401610a8090612fa0565b601f805460ff60a01b1916600160a01b8315158102919091179182905560ff91041615610f4d57436020555b50565b600082610f5c836118f2565b119392505050565b610f6d33611cc5565b610f895760405162461bcd60e51b8152600401610a8090612fa0565b601a5447906001600160a01b03166108fc6064610fa685856130ca565b610fb091906130a8565b6040518115909202916000818181858888f19350505050158015610fd8573d6000803e3d6000fd5b505050565b610fe633611cc5565b6110025760405162461bcd60e51b8152600401610a8090612fa0565b600891909155600955565b61101633611cc5565b6110325760405162461bcd60e51b8152600401610a8090612fa0565b601c91909155601d55565b6001600160a01b0383166000908152600d60209081526040808320338452909152812054600019146110ea576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600d825283812033825290915291909120546110c5918490611e28565b6001600160a01b0385166000908152600d602090815260408083203384529091529020555b6110f5848484611e62565b90505b9392505050565b6005546001600160a01b03166000908152600c602052604081205461114c906004546001600160a01b03166000908152600c6020526040902054611146906007549061246f565b9061246f565b905090565b61115a33611cc5565b6111765760405162461bcd60e51b8152600401610a8090612fa0565b6021546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b1580156111c457600080fd5b505af11580156111d8573d6000803e3d6000fd5b505050505050565b6111e933611cc5565b6112055760405162461bcd60e51b8152600401610a8090612fa0565b6023805461ffff191692151561ff0019169290921761010060ff9290921691909102179055565b61123533611cc5565b6112515760405162461bcd60e51b8152600401610a8090612fa0565b601e80546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156112aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ce91906130e9565b6003546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801561131f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134391906130e9565b601f80546001600160a01b0319166001600160a01b03928316178155306000908152600d60209081526040808320601e54861684528252808320600019905592548416825260118152828220805460ff199081166001908117909255868616808552600f909352928490208054909316179091556021549151631072e1ff60e21b815260048101919091529116906341cb87fc90602401600060405180830381600087803b1580156113f457600080fd5b505af1158015611408573d6000803e3d6000fd5b50506040516001600160a01b03841681527f3ae4651c500f8af8dd8c91a93c47364c4070c4dee11a2b4da20f26d8767f065f925060200190505b60405180910390a150565b61145633611cc5565b6114725760405162461bcd60e51b8152600401610a8090612fa0565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6000610ef682600019610e8f565b60006114b633611cc5565b6114d25760405162461bcd60e51b8152600401610a8090612fa0565b6002546040516370a0823160e01b81523060048201526001600160a01b039091169060009082906370a0823190602401602060405180830381865afa15801561151f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115439190613106565b90506000611551478361246f565b9050600061157761156e60026012546124b190919063ffffffff16565b6016549061246f565b9050600061159a82611594601354866124f390919063ffffffff16565b906124b1565b9550505050505090565b6115ad33611cc5565b6115c95760405162461bcd60e51b8152600401610a8090612fa0565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6115fd33611cc5565b6116195760405162461bcd60e51b8152600401610a8090612fa0565b60648160075461162991906130ca565b61163391906130a8565b600a5550565b61164233611cc5565b61165e5760405162461bcd60e51b8152600401610a8090612fa0565b611670816001600160a01b0316612572565b6116bc5760405162461bcd60e51b815260206004820152601c60248201527f456e7465722076616c696420636f6e74726163742061646472657373000000006044820152606401610a80565b600280546001600160a01b0319166001600160a01b038381169182179092556021546040516333414d8b60e11b81526004810192909252909116906366829b1690602401600060405180830381600087803b15801561171a57600080fd5b505af1158015610e88573d6000803e3d6000fd5b61173733611cc5565b6117535760405162461bcd60e51b8152600401610a8090612fa0565b620b71b0811061176257600080fd5b602255565b600061177233611cc5565b61178e5760405162461bcd60e51b8152600401610a8090612fa0565b504790565b61179c33611cc5565b6117b85760405162461bcd60e51b8152600401610a8090612fa0565b601755565b60006110f8338484611e62565b6117d333611cc5565b6117ef5760405162461bcd60e51b8152600401610a8090612fa0565b6001600160a01b0382166000908152600e6020908152604080832080548515801560ff199283168117909355600f85528386208054831684179055601090945291909320805490911690921790915561184f5761184b82611858565b5050565b61184b82611a46565b6000546001600160a01b031633146118825760405162461bcd60e51b8152600401610a809061311f565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b60006118b433611cc5565b6118d05760405162461bcd60e51b8152600401610a8090612fa0565b61114c60026115946016546115946012546026546124f390919063ffffffff16565b6000610ef66118ff6110ff565b601f546001600160a01b03166000908152600c60205260409020546115949061192c906002905b906124f3565b85906124f3565b61193c33611cc5565b6119585760405162461bcd60e51b8152600401610a8090612fa0565b601980546001600160a01b03199081166001600160a01b0395861617909155601a8054821693851693909317909255601b805490921692169182179055600e602052600052565b60006119aa33611cc5565b6119c65760405162461bcd60e51b8152600401610a8090612fa0565b60006119ea60026115946016546115946012546026546124f390919063ffffffff16565b90506000611a038260265461246f90919063ffffffff16565b9250505090565b611a1333611cc5565b611a2f5760405162461bcd60e51b8152600401610a8090612fa0565b6025805460ff191692151592909217909155602655565b6000546001600160a01b03163314611a705760405162461bcd60e51b8152600401610a809061311f565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b03163314611abb5760405162461bcd60e51b8152600401610a809061311f565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639101611442565b611b2a33611cc5565b611b465760405162461bcd60e51b8152600401610a8090612fa0565b6001600160a01b0382163014801590611b6d5750601f546001600160a01b03838116911614155b611b7657600080fd5b6001600160a01b0382166000908152601160205260409020805460ff19168215801591909117909155611bf157602154604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401600060405180830381600087803b1580156111c457600080fd5b6021546001600160a01b038381166000818152600c602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca96906044016111aa565b611c4333611cc5565b611c5f5760405162461bcd60e51b8152600401610a8090612fa0565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b6000611c9533611cc5565b611cb15760405162461bcd60e51b8152600401610a8090612fa0565b50306000908152600c602052604090205490565b6001600160a01b031660009081526001602052604090205460ff1690565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600c90915291822054611d34918490611e28565b6001600160a01b038086166000908152600c60205260408082209390935590851681522054611d639083611dc9565b6001600160a01b038085166000818152600c602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611db79086815260200190565b60405180910390a35060019392505050565b600080611dd68385612ff1565b9050838110156110f85760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a80565b60008184841115611e4c5760405162461bcd60e51b8152600401610a809190612d4f565b506000611e59848661313f565b95945050505050565b60275460009060ff1615611e8257611e7b848484611ce3565b90506110f8565b6001600160a01b03841660009081526001602052604090205460ff16158015611ec457506001600160a01b03831660009081526001602052604090205460ff16155b15611f1957601f54600160a01b900460ff16611f195760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610a80565b6001600160a01b03841660009081526001602052604090205460ff16158015611f4b57506001600160a01b0383163014155b8015611f6557506004546001600160a01b03848116911614155b8015611f7f5750601f546001600160a01b03848116911614155b8015611f995750601a546001600160a01b03848116911614155b8015611fb357506019546001600160a01b03848116911614155b8015611fcd5750601b546001600160a01b03848116911614155b1561206e576001600160a01b0383166000908152600c6020526040902054600a54611ff88483612ff1565b111561206c5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610a80565b505b601f546001600160a01b03858116911614801561208d575060235460ff165b80156120b257506001600160a01b03831660009081526010602052604090205460ff16155b15612161576001600160a01b03831660009081526024602052604090205442116121325760405162461bcd60e51b815260206004820152602b60248201527f506c65617365207761697420666f7220316d696e206265747765656e2074776f60448201526a206f7065726174696f6e7360a81b6064820152608401610a80565b60235461214790610100900460ff1642612ff1565b6001600160a01b0384166000908152602460205260409020555b6001600160a01b03841660009081526001602052604090205460ff161580156121a357506001600160a01b03831660009081526001602052604090205460ff16155b156121b2576121b284836125ae565b6121ba612695565b156121c7576121c76126e4565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600c9091529190912054612219918490611e28565b6001600160a01b0385166000908152600c6020908152604080832093909355600e90529081205460ff161561224e5782612258565b6122588584612b2e565b6001600160a01b0385166000908152600c602052604090205490915061227e9082611dc9565b6001600160a01b038086166000908152600c602090815260408083209490945591881681526011909152205460ff16612322576021546001600160a01b038681166000818152600c602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561230f57600080fd5b505af1925050508015612320575060015b505b6001600160a01b03841660009081526011602052604090205460ff166123b3576021546001600160a01b038581166000818152600c602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156123a057600080fd5b505af19250505080156123b1575060015b505b6021546022546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c479916123eb9160040190815260200190565b600060405180830381600087803b15801561240557600080fd5b505af1925050508015612416575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161245c91815260200190565b60405180910390a3506001949350505050565b60006110f883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e28565b60006110f883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c02565b60008261250257506000610ef6565b600061250e83856130ca565b90508261251b85836130a8565b146110f85760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a80565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906125a657508115155b949350505050565b601f546001600160a01b038381169116141561262d57600854811115806125ed57506001600160a01b0382166000908152600f602052604090205460ff165b61184b5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610a80565b600954811115806125ed57506001600160a01b0382166000908152600f602052604090205460ff1661184b5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610a80565b601f546000906001600160a01b031633148015906126b6575060275460ff16155b80156126c4575060255460ff165b801561114c575050602654306000908152600c6020526040902054101590565b6027805460ff19166001179055601c54601d5460009161270391610f50565b61270f57601254612712565b60005b905060006127366002611594601654611594866026546124f390919063ffffffff16565b9050600061274f8260265461246f90919063ffffffff16565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061278957612789612fc5565b6001600160a01b0392831660209182029290920101526003548251911690829060019081106127ba576127ba612fc5565b6001600160a01b039283166020918202929092010152601e5460405163791ac94760e01b81524792919091169063791ac94790612804908690600090879030904290600401613156565b600060405180830381600087803b15801561281e57600080fd5b505af1158015612832573d6000803e3d6000fd5b50505050600061284b824761246f90919063ffffffff16565b9050600061285d61156e8860026124b1565b9050600061287260026115948481878d6124f3565b9050600061288f83611594601354876124f390919063ffffffff16565b905060006128ac84611594601454886124f390919063ffffffff16565b905060006128c985611594601554896124f390919063ffffffff16565b9050821561293557602160009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b15801561292157600080fd5b505af193505050508015612933575060015b505b601a546040516000916001600160a01b03169061753090859084818181858888f193505050503d8060008114612987576040519150601f19603f3d011682016040523d82523d6000602084013e61298c565b606091505b5050601b546040519192506000916001600160a01b039091169061753090859084818181858888f193505050503d80600081146129e5576040519150601f19603f3d011682016040523d82523d6000602084013e6129ea565b606091505b5060009350839250508c159050612acd57601e5460195460405163f305d71960e01b8152306004820152602481018f905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990889060c40160606040518083038185885af1158015612a6b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612a9091906131c7565b505060408051888152602081018f90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b6040805189815260208101889052908101869052606081018590527fb7dfc4bfcb6b261acbe8d8e9b1a78ceba846061ef5926f023dab8654aa2ff0649060800160405180910390a150506027805460ff191690555050505050505050505050565b601f5460009081906001600160a01b03858116911614612b5057601754612b53565b60645b90506000612b826018546064612b6991906130ca565b61159484611926601654896124f390919063ffffffff16565b306000908152600c6020526040902054909150612b9f9082611dc9565b306000818152600c6020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612bf09085815260200190565b60405180910390a3611e59848261246f565b60008183612c235760405162461bcd60e51b8152600401610a809190612d4f565b506000611e5984866130a8565b6001600160a01b0381168114610f4d57600080fd5b60008083601f840112612c5757600080fd5b50813567ffffffffffffffff811115612c6f57600080fd5b6020830191508360208260051b8501011115612c8a57600080fd5b9250929050565b600080600080600060608688031215612ca957600080fd5b8535612cb481612c30565b9450602086013567ffffffffffffffff80821115612cd157600080fd5b612cdd89838a01612c45565b90965094506040880135915080821115612cf657600080fd5b50612d0388828901612c45565b969995985093965092949392505050565b600080600080600060a08688031215612d2c57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600060208083528351808285015260005b81811015612d7c57858101830151858201604001528201612d60565b81811115612d8e576000604083870101525b50601f01601f1916929092016040019392505050565b60008060408385031215612db757600080fd5b8235612dc281612c30565b946020939093013593505050565b80358015158114612de057600080fd5b919050565b600060208284031215612df757600080fd5b6110f882612dd0565b60008060408385031215612e1357600080fd5b50508035926020909101359150565b600060208284031215612e3457600080fd5b5035919050565b600080600060608486031215612e5057600080fd5b8335612e5b81612c30565b92506020840135612e6b81612c30565b929592945050506040919091013590565b60008060408385031215612e8f57600080fd5b612e9883612dd0565b9150602083013560ff81168114612eae57600080fd5b809150509250929050565b600060208284031215612ecb57600080fd5b81356110f881612c30565b60008060408385031215612ee957600080fd5b8235612ef481612c30565b9150612f0260208401612dd0565b90509250929050565b600080600060608486031215612f2057600080fd5b8335612f2b81612c30565b92506020840135612f3b81612c30565b91506040840135612f4b81612c30565b809150509250925092565b60008060408385031215612f6957600080fd5b8235612f7481612c30565b91506020830135612eae81612c30565b60008060408385031215612f9757600080fd5b612dc283612dd0565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561300457613004612fdb565b500190565b600060001982141561301d5761301d612fdb565b5060010190565b6040808252810184905260008560608301825b8781101561306757823561304a81612c30565b6001600160a01b0316825260209283019290910190600101613037565b5083810360208501528481526001600160fb1b0385111561308757600080fd5b8460051b915081866020830137600091016020019081529695505050505050565b6000826130c557634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156130e4576130e4612fdb565b500290565b6000602082840312156130fb57600080fd5b81516110f881612c30565b60006020828403121561311857600080fd5b5051919050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b60008282101561315157613151612fdb565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156131a65784516001600160a01b031683529383019391830191600101613181565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156131dc57600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122005c78cb96d3bc293bf49723df83b9da3a9a60f705c078f6cc6e6d1efd286c12f64736f6c634300080b00336080604052600180546001600160a01b031990811630179091556002805490911673bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c1790556ec097ce7bc90715b34b9f1000000000600c55610708600d5564e8d4a51000600e5534801561006657600080fd5b50604051611353380380611353833981016040819052610085916100df565b6001600160a01b0381166100ad577310ed43c718714eb63d5aa57b78b54704e256024e6100af565b805b600380546001600160a01b03929092166001600160a01b031992831617905560008054909116331790555061010f565b6000602082840312156100f157600080fd5b81516001600160a01b038116811461010857600080fd5b9392505050565b6112358061011e6000396000f3fe6080604052600436106101815760003560e01c8063997664d7116100d1578063e68af3ac1161008a578063f202218e11610064578063f202218e14610485578063f387a28c1461049a578063ffb2c479146104bc578063ffd49c84146104dc57600080fd5b8063e68af3ac1461043a578063efca2eed1461045a578063f0fc6bca1461047057600080fd5b8063997664d714610385578063ad5a25891461039b578063ce7c2ac2146103b0578063d0e30db014610407578063d5002f2e1461040f578063e2d2e2191461042457600080fd5b80632d48e8961161013e5780634fab0ae8116101185780634fab0ae8146102e45780635ec8c276146102fa57806366829b161461033357806367ee5f091461037057600080fd5b80632d48e896146102715780633a98ef391461029157806341cb87fc146102a757600080fd5b806302f0920f1461018657806311ce023d146101aa578063122a50ca146101c057806314b6ca96146101f957806328fd31981461021b5780632b3afb7c1461023b575b600080fd5b34801561019257600080fd5b50600e545b6040519081526020015b60405180910390f35b3480156101b657600080fd5b50610197600c5481565b3480156101cc57600080fd5b506101976101db366004610f96565b6001600160a01b031660009081526007602052604090206001015490565b34801561020557600080fd5b50610219610214366004610fb1565b6104f2565b005b34801561022757600080fd5b50610197610236366004610f96565b61066a565b34801561024757600080fd5b50610197610256366004610f96565b6001600160a01b031660009081526007602052604090205490565b34801561027d57600080fd5b5061021961028c366004610fdb565b6106f3565b34801561029d57600080fd5b5061019760085481565b3480156102b357600080fd5b506102196102c2366004610f96565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b3480156102f057600080fd5b50610197600e5481565b34801561030657600080fd5b50610197610315366004610f96565b6001600160a01b031660009081526007602052604090206002015490565b34801561033f57600080fd5b5061021961034e366004610f96565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b34801561037c57600080fd5b50600954610197565b34801561039157600080fd5b5061019760095481565b3480156103a757600080fd5b50600d54610197565b3480156103bc57600080fd5b506103ec6103cb366004610f96565b60076020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016101a1565b610219610715565b34801561041b57600080fd5b50600854610197565b34801561043057600080fd5b50610197600b5481565b34801561044657600080fd5b50610197610455366004610ffd565b610944565b34801561046657600080fd5b50610197600a5481565b34801561047c57600080fd5b50610219610967565b34801561049157600080fd5b50600b54610197565b3480156104a657600080fd5b506104af610972565b6040516101a1919061105a565b3480156104c857600080fd5b506102196104d7366004610ffd565b6109d4565b3480156104e857600080fd5b50610197600d5481565b6000546001600160a01b0316331461050957600080fd5b6001600160a01b038216600090815260076020526040902054156105305761053082610ad4565b60008111801561055657506001600160a01b038216600090815260076020526040902054155b156105bc57600480546001600160a01b0384166000818152600560205260408120839055600183018455929092527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b03191690911790556105ef565b801580156105e157506001600160a01b03821660009081526007602052604090205415155b156105ef576105ef82610c4a565b6001600160a01b03821660009081526007602052604090205460085461062091839161061a91610d5f565b90610da8565b6008556001600160a01b038216600090815260076020526040902081905561064781610944565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6001600160a01b03811660009081526007602052604081205461068f57506000919050565b6001600160a01b0382166000908152600760205260408120546106b190610944565b6001600160a01b0384166000908152600760205260409020600101549091508082116106e1575060009392505050565b6106eb8282610d5f565b949350505050565b6000546001600160a01b0316331461070a57600080fd5b600d91909155600e55565b6000546001600160a01b0316331461072c57600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610775573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610799919061106d565b6040805160028082526060820183529293506000929091602083019080368337505060025482519293506001600160a01b0316918391506000906107df576107df611086565b6001600160a01b039283166020918202929092010152600180548351921691839190811061080f5761080f611086565b6001600160a01b03928316602091820292909201015260035460405163b6f9de9560e01b815291169063b6f9de959034906108559060009086903090429060040161109c565b6000604051808303818588803b15801561086e57600080fd5b505af1158015610882573d6000803e3d6000fd5b50506001546040516370a0823160e01b81523060048201526000945061090293508692506001600160a01b03909116906370a0823190602401602060405180830381865afa1580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc919061106d565b90610d5f565b6009549091506109129082610da8565b600955600854600c5461093c916109339161092d9085610e0c565b90610e8b565b600b5490610da8565b600b55505050565b6000610961600c5461092d600b5485610e0c90919063ffffffff16565b92915050565b61097033610ad4565b565b606060048054806020026020016040519081016040528092919081815260200182805480156109ca57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109ac575b5050505050905090565b6000546001600160a01b031633146109eb57600080fd5b600454806109f7575050565b6000805a905060005b8483108015610a0e57508381105b15610acd5783600f5410610a22576000600f555b610a546004600f5481548110610a3a57610a3a611086565b6000918252602090912001546001600160a01b0316610ecd565b15610a8b57610a8b6004600f5481548110610a7157610a71611086565b6000918252602090912001546001600160a01b0316610ad4565b610aa0610a995a8490610d5f565b8490610da8565b92505a600f80549193506000610ab5836110e7565b91905055508080610ac5906110e7565b915050610a00565b5050505050565b6001600160a01b038116600090815260076020526040902054610af45750565b6000610aff8261066a565b90508015610c4657600a54610b149082610da8565b600a5560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610b6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8e9190611102565b506001600160a01b03821660009081526006602090815260408083204290556007909152902060020154610bc29082610da8565b6001600160a01b0383166000908152600760205260409020600281019190915554610bec90610944565b6001600160a01b0383166000818152600760209081526040918290206001019390935580519182529181018390527fa493a9229478c3fcd73f66d2cdeb7f94fd0f341da924d1054236d78454116511910160405180910390a15b5050565b60048054610c5a90600190611124565b81548110610c6a57610c6a611086565b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600480549290931692918110610ca857610ca8611086565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260059182905260408120546004805491939291610cf490600190611124565b81548110610d0457610d04611086565b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610d3a57610d3a61113b565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610da183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f12565b9392505050565b600080610db58385611151565b905083811015610da15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b600082610e1b57506000610961565b6000610e278385611169565b905082610e348583611188565b14610da15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610e03565b6000610da183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610f4c565b600d546001600160a01b03821660009081526006602052604081205490914291610ef79190611151565b1080156109615750600e54610f0b8361066a565b1192915050565b60008184841115610f365760405162461bcd60e51b8152600401610e0391906111aa565b506000610f438486611124565b95945050505050565b60008183610f6d5760405162461bcd60e51b8152600401610e0391906111aa565b506000610f438486611188565b80356001600160a01b0381168114610f9157600080fd5b919050565b600060208284031215610fa857600080fd5b610da182610f7a565b60008060408385031215610fc457600080fd5b610fcd83610f7a565b946020939093013593505050565b60008060408385031215610fee57600080fd5b50508035926020909101359150565b60006020828403121561100f57600080fd5b5035919050565b600081518084526020808501945080840160005b8381101561104f5781516001600160a01b03168752958201959082019060010161102a565b509495945050505050565b602081526000610da16020830184611016565b60006020828403121561107f57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b8481526080602082015260006110b56080830186611016565b6001600160a01b03949094166040830152506060015292915050565b634e487b7160e01b600052601160045260246000fd5b60006000198214156110fb576110fb6110d1565b5060010190565b60006020828403121561111457600080fd5b81518015158114610da157600080fd5b600082821015611136576111366110d1565b500390565b634e487b7160e01b600052603160045260246000fd5b60008219821115611164576111646110d1565b500190565b6000816000190483118215151615611183576111836110d1565b500290565b6000826111a557634e487b7160e01b600052601260045260246000fd5b500490565b600060208083528351808285015260005b818110156111d7578581018301518582016040015282016111bb565b818111156111e9576000604083870101525b50601f01601f191692909201604001939250505056fea264697066735822122088f654940d1daa60ceca2d9a952f442c2ae67a4f45eaa345cc7d94659bcb613d64736f6c634300080b0033

Deployed ByteCode Sourcemap

14437:18568:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32086:850;;;;;;;;;;-1:-1:-1;32086:850:0;;;;;:::i;:::-;;:::i;:::-;;16520:54;;;;;;;;;;;;;;;;;;;1581:25:1;;;1569:2;1554:18;16520:54:0;;;;;;;;28012:480;;;;;;;;;;-1:-1:-1;28012:480:0;;;;;:::i;:::-;;:::i;18378:80::-;;;;;;;;;;-1:-1:-1;18450:5:0;;;;;;;;;;;;-1:-1:-1;;;18450:5:0;;;;18378:80;;;;;;;:::i;18800:216::-;;;;;;;;;;-1:-1:-1;18800:216:0;;;;;:::i;:::-;;:::i;:::-;;;3163:14:1;;3156:22;3138:41;;3126:2;3111:18;18800:216:0;2998:187:1;22120:172:0;;;;;;;;;;-1:-1:-1;22120:172:0;;;;;:::i;:::-;;:::i;30643:150::-;;;;;;;;;;-1:-1:-1;30643:150:0;;;;;:::i;:::-;;:::i;18108:88::-;;;;;;;;;;-1:-1:-1;18181:12:0;;18108:88;;23524:218;;;;;;;;;;-1:-1:-1;23524:218:0;;;;;:::i;:::-;;:::i;15788:28::-;;;;;;;;;;;;;;;;26196:165;;;;;;;;;;-1:-1:-1;26196:165:0;;;;;:::i;:::-;;:::i;29100:183::-;;;;;;;;;;-1:-1:-1;29100:183:0;;;;;:::i;:::-;;:::i;19318:370::-;;;;;;;;;;-1:-1:-1;19318:370:0;;;;;:::i;:::-;;:::i;30318:142::-;;;;;;;;;;;;;:::i;29295:183::-;;;;;;;;;;-1:-1:-1;29295:183:0;;;;;:::i;:::-;;:::i;23791:164::-;;;;;;;;;;-1:-1:-1;23791:164:0;;;;;:::i;:::-;;:::i;4702:103::-;;;;;;;;;;-1:-1:-1;4702:103:0;;;;;:::i;:::-;4757:4;4792:5;-1:-1:-1;;;;;4781:16:0;;;4792:5;;4781:16;;4702:103;18202:80;;;;;;;;;;-1:-1:-1;14994:1:0;18202:80;;;5205:4:1;5193:17;;;5175:36;;5163:2;5148:18;18202:80:0;5033:184:1;29870:436:0;;;;;;;;;;-1:-1:-1;29870:436:0;;;;;:::i;:::-;;:::i;15063:55::-;;;;;;;;;;;;;;;;27421:130;;;;;;;;;;-1:-1:-1;27421:130:0;;;;;:::i;:::-;;:::i;19024:122::-;;;;;;;;;;-1:-1:-1;19024:122:0;;;;;:::i;:::-;;:::i;31514:494::-;;;;;;;;;;;;;:::i;27054:120::-;;;;;;;;;;-1:-1:-1;27054:120:0;;;;;:::i;:::-;;:::i;16483:30::-;;;;;;;;;;-1:-1:-1;16483:30:0;;;;;;;;18548:105;;;;;;;;;;-1:-1:-1;18548:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;18632:18:0;18614:7;18632:18;;;:9;:18;;;;;;;18548:105;16381:39;;;;;;;;;;-1:-1:-1;16381:39:0;;;;;;;;;;;15235:59;;;;;;;;;;;;;;;;26448:150;;;;;;;;;;-1:-1:-1;26448:150:0;;;;;:::i;:::-;;:::i;18464:78::-;;;;;;;;;;-1:-1:-1;18516:7:0;18534:5;-1:-1:-1;;;;;18534:5:0;18464:78;;;-1:-1:-1;;;;;5706:32:1;;;5688:51;;5676:2;5661:18;18464:78:0;5542:203:1;29634:224:0;;;;;;;;;;-1:-1:-1;29634:224:0;;;;;:::i;:::-;;:::i;18288:84::-;;;;;;;;;;-1:-1:-1;18362:7:0;;;;;;;;;;;;-1:-1:-1;;;18362:7:0;;;;18288:84;;29486:136;;;;;;;;;;-1:-1:-1;29486:136:0;;;;;:::i;:::-;;:::i;30940:122::-;;;;;;;;;;;;;:::i;23190:120::-;;;;;;;;;;-1:-1:-1;23190:120:0;;;;;:::i;:::-;;:::i;16117:19::-;;;;;;;;;;-1:-1:-1;16117:19:0;;;;-1:-1:-1;;;;;16117:19:0;;;19154:156;;;;;;;;;;-1:-1:-1;19154:156:0;;;;;:::i;:::-;;:::i;27622:382::-;;;;;;;;;;-1:-1:-1;27622:382:0;;;;;:::i;:::-;;:::i;4381:88::-;;;;;;;;;;-1:-1:-1;4381:88:0;;;;;:::i;:::-;;:::i;16338:36::-;;;;;;;;;;-1:-1:-1;16338:36:0;;;;;;;;31074:148;;;;;;;;;;;;;:::i;16183:29::-;;;;;;;;;;;;;;;;30468:167;;;;;;;;;;-1:-1:-1;30468:167:0;;;;;:::i;:::-;;:::i;28500:428::-;;;;;;;;;;-1:-1:-1;28500:428:0;;;;;:::i;:::-;;:::i;31234:272::-;;;;;;;;;;;;;:::i;18659:133::-;;;;;;;;;;-1:-1:-1;18659:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;18761:19:0;;;18743:7;18761:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;18659:133;28936:156;;;;;;;;;;-1:-1:-1;28936:156:0;;;;;:::i;:::-;;:::i;4551:91::-;;;;;;;;;;-1:-1:-1;4551:91:0;;;;;:::i;:::-;;:::i;5098:167::-;;;;;;;;;;-1:-1:-1;5098:167:0;;;;;:::i;:::-;;:::i;15131:56::-;;;;;;;;;;;;;;;;26658:347;;;;;;;;;;-1:-1:-1;26658:347:0;;;;;:::i;:::-;;:::i;27243:128::-;;;;;;;;;;-1:-1:-1;27243:128:0;;;;;:::i;:::-;;:::i;16086:24::-;;;;;;;;;;-1:-1:-1;16086:24:0;;;;-1:-1:-1;;;;;16086:24:0;;;16143:31;;;;;;;;;;-1:-1:-1;16143:31:0;;;;-1:-1:-1;;;16143:31:0;;;;;;30807:121;;;;;;;;;;;;;:::i;32086:850::-;4266:24;4279:10;4266:12;:24::i;:::-;4258:48;;;;-1:-1:-1;;;4258:48:0;;;;;;;:::i;:::-;;;;;;;;;32203:12:::1;32236:33:::0;;::::1;32228:85;;;::::0;-1:-1:-1;;;32228:85:0;;7958:2:1;32228:85:0::1;::::0;::::1;7940:21:1::0;7997:2;7977:18;;;7970:30;8036:34;8016:18;;;8009:62;-1:-1:-1;;;8087:18:1;;;8080:38;8135:19;;32228:85:0::1;7756:404:1::0;32228:85:0::1;32326:6;32322:82;32336:20:::0;;::::1;32322:82;;;32387:6;;32394:1;32387:9;;;;;;;:::i;:::-;;;;;;;32380:4;:16;;;;:::i;:::-;32373:23:::0;-1:-1:-1;32358:3:0;::::1;::::0;::::1;:::i;:::-;;;;32322:82;;;;32439:4;32420:15;32430:4;-1:-1:-1::0;;;;;18632:18:0;18614:7;18632:18;;;:9;:18;;;;;;;18548:105;32420:15:::1;:23;;32412:75;;;::::0;-1:-1:-1;;;32412:75:0;;8904:2:1;32412:75:0::1;::::0;::::1;8886:21:1::0;8943:2;8923:18;;;8916:30;8982:34;8962:18;;;8955:62;-1:-1:-1;;;9033:18:1;;;9026:37;9080:19;;32412:75:0::1;8702:403:1::0;32412:75:0::1;32500:6;32496:250;32510:20:::0;;::::1;32496:250;;;32547:43;32562:4;32567:9;;32577:1;32567:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;32580:6;;32587:1;32580:9;;;;;;;:::i;:::-;;;;;;;32547:14;:43::i;:::-;;32605:16;:30;32622:9;;32632:1;32622:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;32605:30:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;32605:30:0;;::::1;;32601:138;;32656:11;::::0;-1:-1:-1;;;;;32656:11:0::1;:20;32677:9:::0;;32687:1;32677:12;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;32691:9;:23;32701:9;;32711:1;32701:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;32691:23:0::1;-1:-1:-1::0;;;;;32691:23:0::1;;;;;;;;;;;;;32656:59;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;9302:32:1;;;;9284:51;;9366:2;9351:18;;9344:34;9272:2;9257:18;;9110:274;32656:59:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;32652:75:::0;::::1;32532:3:::0;::::1;::::0;::::1;:::i;:::-;;;;32496:250;;;-1:-1:-1::0;;;;;;32783:22:0;::::1;;::::0;;;:16:::1;:22;::::0;;;;;::::1;;32779:105;;32822:11;::::0;-1:-1:-1;;;;;32849:15:0;;::::1;32822:11;32849:15:::0;;;:9:::1;:15;::::0;;;;;;;32822:43;;-1:-1:-1;;;32822:43:0;;::::1;::::0;::::1;9284:51:1::0;;;;9351:18;;;9344:34;32822:11:0;::::1;::::0;:20:::1;::::0;9257:18:1;;32822:43:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;32818:59:::0;::::1;32901:31;32914:9;;32925:6;;32901:31;;;;;;;;;:::i;:::-;;;;;;;;32194:742;32086:850:::0;;;;;:::o;28012:480::-;4266:24;4279:10;4266:12;:24::i;:::-;4258:48;;;;-1:-1:-1;;;4258:48:0;;;;;;;:::i;:::-;28172:12:::1;:28:::0;;;28211:13:::1;:30:::0;;;28252:12:::1;:28:::0;;;28291:6:::1;:16:::0;;;28329:65:::1;28300:7:::0;28329:52:::1;28267:13:::0;28329:52;28187:13;28227:14;28329:17:::1;:33::i;:::-;:37:::0;::::1;:52::i;:65::-;28318:8;:76:::0;28405:14:::1;:32:::0;;;28467:16:::1;28482:1;28422:15:::0;28467:16:::1;:::i;:::-;28456:8;;:27;28448:36;;;::::0;::::1;;28012:480:::0;;;;;:::o;18800:216::-;18904:10;18875:4;18892:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;18892:32:0;;;;;;;;;;:41;;;18949:37;18875:4;;18892:32;;18949:37;;;;18927:6;1581:25:1;;1569:2;1554:18;;1435:177;18949:37:0;;;;;;;;-1:-1:-1;19004:4:0;18800:216;;;;;:::o;22120:172::-;4266:24;4279:10;4266:12;:24::i;:::-;4258:48;;;;-1:-1:-1;;;4258:48:0;;;;;;;:::i;:::-;22186:11:::1;:21:::0;;-1:-1:-1;;;;22186:21:0::1;-1:-1:-1::0;;;22186:21:0;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;::::1;22221:11:::0;::::1;;22218:67;;;22261:12;22248:10;:25:::0;22218:67:::1;22120:172:::0;:::o;30643:150::-;30723:4;30779:6;30747:29;30767:8;30747:19;:29::i;:::-;:38;;30643:150;-1:-1:-1;;;30643:150:0:o;23524:218::-;4266:24;4279:10;4266:12;:24::i;:::-;4258:48;;;;-1:-1:-1;;;4258:48:0;;;;;;;:::i;:::-;23668:20:::1;::::0;23628:21:::1;::::0;-1:-1:-1;;;;;23668:20:0::1;23660:74;23730:3;23699:28;23711:16:::0;23628:21;23699:28:::1;:::i;:::-;:34;;;;:::i;:::-;23660:74;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;23597:145;23524:218:::0;:::o;26196:165::-;4266:24;4279:10;4266:12;:24::i;:::-;4258:48;;;;-1:-1:-1;;;4258:48:0;;;;;;;:::i;:::-;26286:15:::1;:27:::0;;;;26324:16:::1;:29:::0;26196:165::o;29100:183::-;4266:24;4279:10;4266:12;:24::i;:::-;4258:48;;;;-1:-1:-1;;;4258:48:0;;;;;;;:::i;:::-;29198:15:::1;:25:::0;;;;29234:26:::1;:41:::0;29100:183::o;19318:370::-;-1:-1:-1;;;;;19438:19:0;;19418:4;19438:19;;;:11;:19;;;;;;;;19458:10;19438:31;;;;;;;;-1:-1:-1;;19438:52:0;19435:186;;19540:69;;;;;;;;;;;-1:-1:-1;;;19540:69:0;;;;;;;;-1:-1:-1;;;;;19540:19:0;;-1:-1:-1;19540:19:0;;;:11;:19;;;;;19560:10;19540:31;;;;;;;;;;:69;;19576:6;;19540:35;:69::i;:::-;-1:-1:-1;;;;;19506:19:0;;;;;;:11;:19;;;;;;;;19526:10;19506:31;;;;;;;:103;19435:186;19640:40;19654:6;19662:9;19673:6;19640:13;:40::i;:::-;19633:47;;19318:370;;;;;;:::o;30318:142::-;30446:4;;-1:-1:-1;;;;;30446:4:0;30371:7;18632:18;;;:9;:18;;;;;;30398:54;;30425:4;;-1:-1:-1;;;;;30425:4:0;18614:7;18632:18;;;:9;:18;;;;;;30398:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;30391:61;;30318:142;:::o;29295:183::-;4266:24;4279:10;4266:12;:24::i;:::-;4258:48;;;;-1:-1:-1;;;4258:48:0;;;;;;;:::i;:::-;29405:11:::1;::::0;:65:::1;::::0;-1:-1:-1;;;29405:65:0;;::::1;::::0;::::1;11065:25:1::0;;;11106:18;;;11099:34;;;-1:-1:-1;;;;;29405:11:0;;::::1;::::0;:35:::1;::::0;11038:18:1;;29405:65:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;29295:183:::0;;:::o;23791:164::-;4266:24;4279:10;4266:12;:24::i;:::-;4258:48;;;;-1:-1:-1;;;4258:48:0;;;;;;;:::i;:::-;23876:17:::1;:27:::0;;-1:-1:-1;;23914:33:0;23876:27;::::1;;-1:-1:-1::0;;23914:33:0;;;;;23876:27:::1;;23914:33:::0;;;::::1;::::0;;;::::1;;::::0;;23791:164::o;29870:436::-;4266:24;4279:10;4266:12;:24::i;:::-;4258:48;;;;-1:-1:-1;;;4258:48:0;;;;;;;:::i;:::-;29944:6:::1;:28:::0;;-1:-1:-1;;;;;;29944:28:0::1;-1:-1:-1::0;;;;;29944:28:0;::::1;::::0;;::::1;::::0;;;30002:16:::1;::::0;;-1:-1:-1;;;30002:16:0;;;;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;29944:28;30002:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30031:4;::::0;29990:61:::1;::::0;-1:-1:-1;;;29990:61:0;;-1:-1:-1;;;;;30031:4:0;;::::1;29990:61;::::0;::::1;11612:34:1::0;30045:4:0::1;11662:18:1::0;;;11655:43;29990:40:0;::::1;::::0;::::1;::::0;11547:18:1;;29990:61:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29983:4;:68:::0;;-1:-1:-1;;;;;;29983:68:0::1;-1:-1:-1::0;;;;;29983:68:0;;::::1;;::::0;;30082:4:::1;-1:-1:-1::0;30062:26:0;;;:11:::1;:26;::::0;;;;;;;30097:6:::1;::::0;;::::1;30062:43:::0;;;;;;;-1:-1:-1;;30062:63:0;;30153:4;;;::::1;30136:22:::0;;:16:::1;:22:::0;;;;;:29;;-1:-1:-1;;30136:29:0;;::::1;-1:-1:-1::0;30136:29:0;;::::1;::::0;;;30176:24;;::::1;::::0;;;:15:::1;:24:::0;;;;;;;:31;;;;::::1;;::::0;;;30218:11:::1;::::0;:37;;-1:-1:-1;;;30218:37:0;;::::1;::::0;::::1;5688:51:1::0;;;;30218:11:0;::::1;::::0;:28:::1;::::0;5661:18:1;;30218:37:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;30271:27:0::1;::::0;-1:-1:-1;;;;;5706:32:1;;5688:51;;30271:27:0::1;::::0;-1:-1:-1;5676:2:1;5661:18;;-1:-1:-1;30271:27:0::1;;;;;;;;29870:436:::0;:::o;27421:130::-;4266:24;4279:10;4266:12;:24::i;:::-;4258:48;;;;-1:-1:-1;;;4258:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27510:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;27510:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27421:130::o;19024:122::-;19079:4;19103:35;19111:7;-1:-1:-1;;19103:7:0;:35::i;31514:494::-;31582:4;4266:24;4279:10;4266:12;:24::i;:::-;4258:48;;;;-1:-1:-1;;;4258:48:0;;;;;;;:::i;:::-;31628:11:::1;::::0;31675:37:::1;::::0;-1:-1:-1;;;31675:37:0;;31706:4:::1;31675:37;::::0;::::1;5688:51:1::0;-1:-1:-1;;;;;31628:11:0;;::::1;::::0;31599:19:::1;::::0;31628:11;;31675:22:::1;::::0;5661:18:1;;31675:37:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31651:61:::0;-1:-1:-1;31725:17:0::1;31745:40;:21;31651:61:::0;31745:25:::1;:40::i;:::-;31725:60;;31802:19;31824:33;31837:19;31854:1;31837:12;;:16;;:19;;;;:::i;:::-;31824:8;::::0;;:12:::1;:33::i;:::-;31802:55;;31878:27;31908:45;31941:11;31908:28;31922:13;;31908:9;:13;;:28;;;;:::i;:::-;:32:::0;::::1;:45::i;:::-;31878:75:::0;-1:-1:-1;;;;;;31514:494:0;:::o;27054:120::-;4266:24;4279:10;4266:12;:24::i;:::-;4258:48;;;;-1:-1:-1;;;4258:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27138:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;27138:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27054:120::o;26448:150::-;4266:24;4279:10;4266:12;:24::i;:::-;4258:48;;;;-1:-1:-1;;;4258:48:0;;;;;;;:::i;:::-;26587:3:::1;26568:14;26553:12;;:29;;;;:::i;:::-;26552:38;;;;:::i;:::-;26534:15;:56:::0;-1:-1:-1;26448:150:0:o;29634:224::-;4266:24;4279:10;4266:12;:24::i;:::-;4258:48;;;;-1:-1:-1;;;4258:48:0;;;;;;;:::i;:::-;29716:22:::1;:9;-1:-1:-1::0;;;;;29716:20:0::1;;:22::i;:::-;29708:63;;;::::0;-1:-1:-1;;;29708:63:0;;12100:2:1;29708:63:0::1;::::0;::::1;12082:21:1::0;12139:2;12119:18;;;12112:30;12178;12158:18;;;12151:58;12226:18;;29708:63:0::1;11898:352:1::0;29708:63:0::1;29782:11;:23:::0;;-1:-1:-1;;;;;;29782:23:0::1;-1:-1:-1::0;;;;;29782:23:0;;::::1;::::0;;::::1;::::0;;;29816:11:::1;::::0;:34:::1;::::0;-1:-1:-1;;;29816:34:0;;::::1;::::0;::::1;5688:51:1::0;;;;29816:11:0;;::::1;::::0;:23:::1;::::0;5661:18:1;;29816:34:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;29486:136:::0;4266:24;4279:10;4266:12;:24::i;:::-;4258:48;;;;-1:-1:-1;;;4258:48:0;;;;;;;:::i;:::-;29576:6:::1;29570:3;:12;29562:21;;;::::0;::::1;;29594:14;:20:::0;29486:136::o;30940:122::-;31008:4;4266:24;4279:10;4266:12;:24::i;:::-;4258:48;;;;-1:-1:-1;;;4258:48:0;;;;;;;:::i;:::-;-1:-1:-1;31033:21:0::1;30940:122:::0;:::o;23190:120::-;4266:24;4279:10;4266:12;:24::i;:::-;4258:48;;;;-1:-1:-1;;;4258:48:0;;;;;;;:::i;:::-;23267:14:::1;:27:::0;23190:120::o;19154:156::-;19234:4;19258:44;19272:10;19284:9;19295:6;19258:13;:44::i;27622:382::-;4266:24;4279:10;4266:12;:24::i;:::-;4258:48;;;;-1:-1:-1;;;4258:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27706:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;;;:30;;;::::1;::::0;::::1;-1:-1:-1::0;;27706:30:0;;::::1;::::0;::::1;::::0;;;27747:15:::1;:24:::0;;;;;:34;;;::::1;::::0;::::1;::::0;;27792:16:::1;:25:::0;;;;;;;:35;;;;::::1;::::0;;::::1;::::0;;;27838:139:::1;;27865:18;27875:7;27865:9;:18::i;:::-;27622:382:::0;;:::o;27838:139::-:1;27945:20;27957:7;27945:11;:20::i;4381:88::-:0;4757:4;4792:5;-1:-1:-1;;;;;4792:5:0;4105:10;4781:16;4089:38;;;;-1:-1:-1;;;4089:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4441:13:0::1;;::::0;;;4457:4:::1;4441:13;::::0;;;;;;;:20;;-1:-1:-1;;4441:20:0::1;::::0;;::::1;::::0;;4381:88::o;31074:148::-;31138:4;4266:24;4279:10;4266:12;:24::i;:::-;4258:48;;;;-1:-1:-1;;;4258:48:0;;;;;;;:::i;:::-;31162:52:::1;31212:1;31162:45;31198:8;;31162:31;31180:12;;31162:13;;:17;;:31;;;;:::i;30468:167::-:0;30536:7;30563:64;30604:22;:20;:22::i;:::-;30586:4;;-1:-1:-1;;;;;30586:4:0;18614:7;18632:18;;;:9;:18;;;;;;30563:36;;30576:22;;30596:1;;30576:15;:19;;:22::i;:::-;30563:8;;:12;:36::i;28500:428::-;4266:24;4279:10;4266:12;:24::i;:::-;4258:48;;;;-1:-1:-1;;;4258:48:0;;;;;;;:::i;:::-;28644:21:::1;:46:::0;;-1:-1:-1;;;;;;28644:46:0;;::::1;-1:-1:-1::0;;;;;28644:46:0;;::::1;;::::0;;;28701:20:::1;:44:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;28756:14:::1;:32:::0;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;28801:11:::1;:35;::::0;-1:-1:-1;28892:28:0;28500:428::o;31234:272::-;31295:4;4266:24;4279:10;4266:12;:24::i;:::-;4258:48;;;;-1:-1:-1;;;4258:48:0;;;;;;;:::i;:::-;31312:23:::1;31338:52;31388:1;31338:45;31374:8;;31338:31;31356:12;;31338:13;;:17;;:31;;;;:::i;:52::-;31312:78;;31401:20;31424:34;31442:15;31424:13;;:17;;:34;;;;:::i;:::-;31401:57:::0;-1:-1:-1;;;31234:272:0;:::o;28936:156::-;4266:24;4279:10;4266:12;:24::i;:::-;4258:48;;;;-1:-1:-1;;;4258:48:0;;;;;;;:::i;:::-;29028:11:::1;:22:::0;;-1:-1:-1;;29028:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;29061:13:::1;:23:::0;28936:156::o;4551:91::-;4757:4;4792:5;-1:-1:-1;;;;;4792:5:0;4105:10;4781:16;4089:38;;;;-1:-1:-1;;;4089:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4613:13:0::1;4629:5;4613:13:::0;;;:8:::1;:13;::::0;;;;:21;;-1:-1:-1;;4613:21:0::1;::::0;;4551:91::o;5098:167::-;4757:4;4792:5;-1:-1:-1;;;;;4792:5:0;4105:10;4781:16;4089:38;;;;-1:-1:-1;;;4089:38:0;;;;;;;:::i;:::-;5174:5:::1;:11:::0;;-1:-1:-1;;;;;;5174:11:0::1;-1:-1:-1::0;;;;;5174:11:0;::::1;::::0;;::::1;::::0;;5196:13;;;-1:-1:-1;5196:13:0::1;::::0;;;;;;;;:20;;-1:-1:-1;;5196:20:0::1;::::0;;::::1;::::0;;;5232:25;;5688:51:1;;;5232:25:0::1;::::0;5661:18:1;5232:25:0::1;5542:203:1::0;26658:347:0;4266:24;4279:10;4266:12;:24::i;:::-;4258:48;;;;-1:-1:-1;;;4258:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26755:23:0;::::1;26773:4;26755:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;26792:4:0::1;::::0;-1:-1:-1;;;;;26782:14:0;;::::1;26792:4:::0;::::1;26782:14;;26755:41;26747:50;;;::::0;::::1;;-1:-1:-1::0;;;;;26808:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;26808:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;26852:146:::1;;26877:11;::::0;:31:::1;::::0;-1:-1:-1;;;26877:31:0;;-1:-1:-1;;;;;9302:32:1;;;26877:31:0::1;::::0;::::1;9284:51:1::0;26877:11:0::1;9351:18:1::0;;;9344:34;26877:11:0;;::::1;::::0;:20:::1;::::0;9257:18:1;;26877:31:0::1;;;;;;;;;;;;;;;;;::::0;::::1;26852:146;26939:11;::::0;-1:-1:-1;;;;;26968:17:0;;::::1;26939:11;26968:17:::0;;;:9:::1;:17;::::0;;;;;;;26939:47;;-1:-1:-1;;;26939:47:0;;::::1;::::0;::::1;9284:51:1::0;;;;9351:18;;;9344:34;26939:11:0;::::1;::::0;:20:::1;::::0;9257:18:1;;26939:47:0::1;9110:274:1::0;27243:128:0;4266:24;4279:10;4266:12;:24::i;:::-;4258:48;;;;-1:-1:-1;;;4258:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27331:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;27331:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27243:128::o;30807:121::-;30872:4;4266:24;4279:10;4266:12;:24::i;:::-;4258:48;;;;-1:-1:-1;;;4258:48:0;;;;;;;:::i;:::-;-1:-1:-1;30914:4:0::1;30896:24;::::0;;;:9:::1;:24;::::0;;;;;30807:121;:::o;4876:103::-;-1:-1:-1;;;;;4958:13:0;4934:4;4958:13;;;:8;:13;;;;;;;;;4876:103::o;21759:330::-;21889:53;;;;;;;;;;;-1:-1:-1;;;21889:53:0;;;;;;;;-1:-1:-1;;;;;21889:17:0;;21852:4;21889:17;;;:9;:17;;;;;;;:53;;21911:6;;21889:21;:53::i;:::-;-1:-1:-1;;;;;21869:17:0;;;;;;;:9;:17;;;;;;:73;;;;21976:20;;;;;;;:32;;22001:6;21976:24;:32::i;:::-;-1:-1:-1;;;;;21953:20:0;;;;;;;:9;:20;;;;;;;:55;;;;22024:35;;;;;;;;;;22052:6;1581:25:1;;1569:2;1554:18;;1435:177;22024:35:0;;;;;;;;-1:-1:-1;22077:4:0;21759:330;;;;;:::o;188:181::-;246:7;;278:5;282:1;278;:5;:::i;:::-;266:17;;307:1;302;:6;;294:46;;;;-1:-1:-1;;;294:46:0;;13294:2:1;294:46:0;;;13276:21:1;13333:2;13313:18;;;13306:30;13372:29;13352:18;;;13345:57;13419:18;;294:46:0;13092:351:1;517:192:0;603:7;639:12;631:6;;;;623:29;;;;-1:-1:-1;;;623:29:0;;;;;;;;:::i;:::-;-1:-1:-1;663:9:0;675:5;679:1;675;:5;:::i;:::-;663:17;517:192;-1:-1:-1;;;;;517:192:0:o;19696:2051::-;19808:6;;19788:4;;19808:6;;19805:63;;;19824:41;19839:6;19847:9;19858:6;19824:14;:41::i;:::-;19817:48;;;;19805:63;-1:-1:-1;;;;;19892:16:0;;;;;;:8;:16;;;;;;;;19891:17;:41;;;;-1:-1:-1;;;;;;19913:19:0;;;;;;:8;:19;;;;;;;;19912:20;19891:41;19888:115;;;19956:11;;-1:-1:-1;;;19956:11:0;;;;19948:43;;;;-1:-1:-1;;;19948:43:0;;13780:2:1;19948:43:0;;;13762:21:1;13819:2;13799:18;;;13792:30;-1:-1:-1;;;13838:18:1;;;13831:50;13898:18;;19948:43:0;13578:344:1;19948:43:0;-1:-1:-1;;;;;20046:16:0;;;;;;:8;:16;;;;;;;;20045:17;:47;;;;-1:-1:-1;;;;;;20066:26:0;;20087:4;20066:26;;20045:47;:78;;;;-1:-1:-1;20118:4:0;;-1:-1:-1;;;;;20097:26:0;;;20118:4;;20097:26;;20045:78;:99;;;;-1:-1:-1;20140:4:0;;-1:-1:-1;;;;;20127:17:0;;;20140:4;;20127:17;;20045:99;:136;;;;-1:-1:-1;20161:20:0;;-1:-1:-1;;;;;20148:33:0;;;20161:20;;20148:33;;20045:136;:174;;;;-1:-1:-1;20198:21:0;;-1:-1:-1;;;;;20185:34:0;;;20198:21;;20185:34;;20045:174;:205;;;;-1:-1:-1;20236:14:0;;-1:-1:-1;;;;;20223:27:0;;;20236:14;;20223:27;;20045:205;20041:397;;;-1:-1:-1;;;;;18632:18:0;;20266;18632;;;:9;:18;;;;;;20355:15;;20331:19;20344:6;18632:18;20331:19;:::i;:::-;20330:40;;20322:114;;;;-1:-1:-1;;;20322:114:0;;14129:2:1;20322:114:0;;;14111:21:1;14168:2;14148:18;;;14141:30;14207:34;14187:18;;;14180:62;14278:32;14258:18;;;14251:60;14328:19;;20322:114:0;13927:426:1;20322:114:0;20251:187;20041:397;20472:4;;-1:-1:-1;;;;;20462:14:0;;;20472:4;;20462:14;:48;;;;-1:-1:-1;20493:17:0;;;;20462:48;:93;;;;-1:-1:-1;;;;;;20528:27:0;;;;;;:16;:27;;;;;;;;20527:28;20462:93;20458:304;;;-1:-1:-1;;;;;20580:24:0;;;;;;:13;:24;;;;;;20607:15;-1:-1:-1;20572:97:0;;;;-1:-1:-1;;;20572:97:0;;14560:2:1;20572:97:0;;;14542:21:1;14599:2;14579:18;;;14572:30;14638:34;14618:18;;;14611:62;-1:-1:-1;;;14689:18:1;;;14682:41;14740:19;;20572:97:0;14358:407:1;20572:97:0;20729:21;;20711:39;;20729:21;;;;;20711:15;:39;:::i;:::-;-1:-1:-1;;;;;20684:24:0;;;;;;:13;:24;;;;;:66;20458:304;-1:-1:-1;;;;;20819:16:0;;;;;;:8;:16;;;;;;;;20818:17;:41;;;;-1:-1:-1;;;;;;20840:19:0;;;;;;:8;:19;;;;;;;;20839:20;20818:41;20815:100;;;20875:28;20888:6;20896;20875:12;:28::i;:::-;20979:16;:14;:16::i;:::-;20976:34;;;20998:10;:8;:10::i;:::-;21071:53;;;;;;;;;;;-1:-1:-1;;;21071:53:0;;;;;;;;-1:-1:-1;;;;;21071:17:0;;-1:-1:-1;21071:17:0;;;:9;:17;;;;;;;;:53;;21093:6;;21071:21;:53::i;:::-;-1:-1:-1;;;;;21051:17:0;;;;;;:9;:17;;;;;;;;:73;;;;22723:11;:19;;;;;;;;22722:20;21162:56;;21212:6;21162:56;;;21186:23;21194:6;21202;21186:7;:23::i;:::-;-1:-1:-1;;;;;21252:20:0;;;;;;:9;:20;;;;;;21137:81;;-1:-1:-1;21252:40:0;;21137:81;21252:24;:40::i;:::-;-1:-1:-1;;;;;21229:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;21338:24;;;;;:16;:24;;;;;;;21334:119;;21383:11;;-1:-1:-1;;;;;21412:17:0;;;21383:11;21412:17;;;:9;:17;;;;;;;;21383:47;;-1:-1:-1;;;21383:47:0;;;;;9284:51:1;;;;9351:18;;;9344:34;21383:11:0;;;:20;;9257:18:1;;21383:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21379:63;;-1:-1:-1;;;;;21469:27:0;;;;;;:16;:27;;;;;;;;21465:129;;21517:11;;-1:-1:-1;;;;;21549:20:0;;;21517:11;21549:20;;;:9;:20;;;;;;;;21517:53;;-1:-1:-1;;;21517:53:0;;;;;9284:51:1;;;;9351:18;;;9344:34;21517:11:0;;;:20;;9257:18:1;;21517:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21513:69;;21610:11;;21630:14;;21610:35;;-1:-1:-1;;;;;;21610:35:0;;-1:-1:-1;;;;;21610:11:0;;;;:19;;:35;;;;1581:25:1;;;1569:2;1554:18;;1435:177;21610:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21606:51;21691:9;-1:-1:-1;;;;;21674:43:0;21683:6;-1:-1:-1;;;;;21674:43:0;;21702:14;21674:43;;;;1581:25:1;;1569:2;1554:18;;1435:177;21674:43:0;;;;;;;;-1:-1:-1;21735:4:0;;19696:2051;-1:-1:-1;;;;19696:2051:0:o;375:136::-;433:7;460:43;464:1;467;460:43;;;;;;;;;;;;;;;;;:3;:43::i;971:132::-;1029:7;1056:39;1060:1;1063;1056:39;;;;;;;;;;;;;;;;;:3;:39::i;715:250::-;773:7;797:6;793:47;;-1:-1:-1;827:1:0;820:8;;793:47;852:9;864:5;868:1;864;:5;:::i;:::-;852:17;-1:-1:-1;897:1:0;888:5;892:1;852:17;888:5;:::i;:::-;:10;880:56;;;;-1:-1:-1;;;880:56:0;;14972:2:1;880:56:0;;;14954:21:1;15011:2;14991:18;;;14984:30;15050:34;15030:18;;;15023:62;-1:-1:-1;;;15101:18:1;;;15094:31;15142:19;;880:56:0;14770:397:1;2095:619:0;2155:4;2623:20;;2466:66;2663:23;;;;;;:42;;-1:-1:-1;2690:15:0;;;2663:42;2655:51;2095:619;-1:-1:-1;;;;2095:619:0:o;22300:328::-;22393:4;;-1:-1:-1;;;;;22383:14:0;;;22393:4;;22383:14;22379:242;;;22431:15;;22421:6;:25;;:52;;;-1:-1:-1;;;;;;22450:23:0;;;;;;:15;:23;;;;;;;;22421:52;22413:82;;;;-1:-1:-1;;;22413:82:0;;15374:2:1;22413:82:0;;;15356:21:1;15413:2;15393:18;;;15386:30;-1:-1:-1;;;15432:18:1;;;15425:47;15489:18;;22413:82:0;15172:341:1;22379:242:0;22544:16;;22534:6;:26;;:53;;;-1:-1:-1;;;;;;22564:23:0;;;;;;:15;:23;;;;;;;;22526:83;;;;-1:-1:-1;;;22526:83:0;;15374:2:1;22526:83:0;;;15356:21:1;15413:2;15393:18;;;15386:30;-1:-1:-1;;;15432:18:1;;;15425:47;15489:18;;22526:83:0;15172:341:1;23318:198:0;23405:4;;23367;;-1:-1:-1;;;;;23405:4:0;23391:10;:18;;;;:39;;-1:-1:-1;23424:6:0;;;;23423:7;23391:39;:63;;;;-1:-1:-1;23443:11:0;;;;23391:63;:117;;;;-1:-1:-1;;23495:13:0;;23485:4;23467:24;;;;:9;:24;;;;;;:41;;;23318:198::o;23963:2177::-;16912:6;:13;;-1:-1:-1;;16912:13:0;16921:4;16912:13;;;24060:15:::1;::::0;24077:26:::1;::::0;16912:6;;24044:60:::1;::::0;:15:::1;:60::i;:::-;:79;;24111:12;;24044:79;;;24107:1;24044:79;24014:109;;24134:23;24160:59;24217:1;24160:52;24203:8;;24160:38;24178:19;24160:13;;:17;;:38;;;;:::i;:59::-;24134:85;;24240:20;24263:34;24281:15;24263:13;;:17;;:34;;;;:::i;:::-;24334:16;::::0;;24348:1:::1;24334:16:::0;;;;;::::1;::::0;;24240:57;;-1:-1:-1;24310:21:0::1;::::0;24334:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;24334:16:0::1;24310:40;;24379:4;24361;24366:1;24361:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24361:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;24405:4:::1;::::0;24395:7;;24405:4;::::1;::::0;24395;;24405;;24395:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;24395:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;24484:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;24484:188:0;;24446:21:::1;::::0;24484:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;24556:12;;24422:21:::1;::::0;24599:4;;24626::::1;::::0;24646:15:::1;::::0;24484:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24693:17;24713:40;24739:13;24713:21;:25;;:40;;;;:::i;:::-;24693:60:::0;-1:-1:-1;24766:19:0::1;24788:40;24801:26;:19:::0;24825:1:::1;24801:23;:26::i;24788:40::-;24766:62:::0;-1:-1:-1;24849:26:0::1;24878:58;24934:1;24878:51;24766:62:::0;24878:51;:9;24892:19;24878:13:::1;:34::i;:58::-;24849:87;;24947:27;24977:45;25010:11;24977:28;24991:13;;24977:9;:13;;:28;;;;:::i;:45::-;24947:75;;25033:26;25062:44;25094:11;25062:27;25076:12;;25062:9;:13;;:27;;;;:::i;:44::-;25033:73;;25117:20;25140:38;25166:11;25140:21;25154:6;;25140:9;:13;;:21;;;;:::i;:38::-;25117:61:::0;-1:-1:-1;25203:23:0;;25199:119:::1;;25246:11;;;;;;;;;-1:-1:-1::0;;;;;25246:11:0::1;-1:-1:-1::0;;;;;25246:19:0::1;;25273;25246:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;25242:65:::0;::::1;25359:20;::::0;25351:77:::1;::::0;25331:15:::1;::::0;-1:-1:-1;;;;;25359:20:0::1;::::0;25418:5:::1;::::0;25393:18;;25331:15;25351:77;25331:15;25351:77;25393:18;25359:20;25418:5;25351:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;25471:14:0::1;::::0;25463:65:::1;::::0;25330:98;;-1:-1:-1;25440:18:0::1;::::0;-1:-1:-1;;;;;25471:14:0;;::::1;::::0;25518:5:::1;::::0;25499:12;;25440:18;25463:65;25440:18;25463:65;25499:12;25471:14;25518:5;25463:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;25602:5:0::1;::::0;-1:-1:-1;25602:5:0;;-1:-1:-1;;25663:19:0;;;-1:-1:-1;25660:362:0::1;;25698:6;::::0;25872:21:::1;::::0;25698:244:::1;::::0;-1:-1:-1;;;25698:244:0;;25774:4:::1;25698:244;::::0;::::1;17186:34:1::0;17236:18;;;17229:34;;;25698:6:0::1;17279:18:1::0;;;17272:34;;;17322:18;;;17315:34;-1:-1:-1;;;;;25872:21:0;;::::1;17365:19:1::0;;;17358:44;25912:15:0::1;17418:19:1::0;;;17411:35;25698:6:0;::::1;::::0;:22:::1;::::0;25728:18;;17120:19:1;;25698:244:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;25962:48:0::1;::::0;;11065:25:1;;;11121:2;11106:18;;11099:34;;;25962:48:0::1;::::0;-1:-1:-1;11038:18:1;25962:48:0::1;;;;;;;25660:362;26047:85;::::0;;17999:25:1;;;18055:2;18040:18;;18033:34;;;18083:18;;;18076:34;;;18141:2;18126:18;;18119:34;;;26047:85:0::1;::::0;17986:3:1;17971:19;26047:85:0::1;;;;;;;-1:-1:-1::0;;16930:6:0;:14;;-1:-1:-1;;16930:14:0;;;-1:-1:-1;;;;;;;;;;;23963:2177:0:o;22758:424::-;22876:4;;22825:7;;;;-1:-1:-1;;;;;22866:14:0;;;22876:4;;22866:14;:37;;22889:14;;22866:37;;;22883:3;22866:37;22845:58;;22914:17;22934:62;22975:14;;22992:3;22975:20;;;;:::i;:::-;22934:36;22959:10;22934:20;22945:8;;22934:6;:10;;:20;;;;:::i;:62::-;23054:4;23036:24;;;;:9;:24;;;;;;22914:82;;-1:-1:-1;23036:39:0;;22914:82;23036:28;:39::i;:::-;23027:4;23009:24;;;;:9;:24;;;;;;;:66;;;;23091:42;;-1:-1:-1;;;;;23091:42:0;;;;;;;23123:9;1581:25:1;;1569:2;1554:18;;1435:177;23091:42:0;;;;;;;;23153:21;:6;23164:9;23153:10;:21::i;1109:345::-;1195:7;1297:12;1290:5;1282:28;;;;-1:-1:-1;;;1282:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1321:9:0;1333:5;1337:1;1333;:5;:::i;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;150:367;213:8;223:6;277:3;270:4;262:6;258:17;254:27;244:55;;295:1;292;285:12;244:55;-1:-1:-1;318:20:1;;361:18;350:30;;347:50;;;393:1;390;383:12;347:50;430:4;422:6;418:17;406:29;;490:3;483:4;473:6;470:1;466:14;458:6;454:27;450:38;447:47;444:67;;;507:1;504;497:12;444:67;150:367;;;;;:::o;522:908::-;653:6;661;669;677;685;738:2;726:9;717:7;713:23;709:32;706:52;;;754:1;751;744:12;706:52;793:9;780:23;812:31;837:5;812:31;:::i;:::-;862:5;-1:-1:-1;918:2:1;903:18;;890:32;941:18;971:14;;;968:34;;;998:1;995;988:12;968:34;1037:70;1099:7;1090:6;1079:9;1075:22;1037:70;:::i;:::-;1126:8;;-1:-1:-1;1011:96:1;-1:-1:-1;1214:2:1;1199:18;;1186:32;;-1:-1:-1;1230:16:1;;;1227:36;;;1259:1;1256;1249:12;1227:36;;1298:72;1362:7;1351:8;1340:9;1336:24;1298:72;:::i;:::-;522:908;;;;-1:-1:-1;522:908:1;;-1:-1:-1;1389:8:1;;1272:98;522:908;-1:-1:-1;;;522:908:1:o;1617:454::-;1712:6;1720;1728;1736;1744;1797:3;1785:9;1776:7;1772:23;1768:33;1765:53;;;1814:1;1811;1804:12;1765:53;-1:-1:-1;;1837:23:1;;;1907:2;1892:18;;1879:32;;-1:-1:-1;1958:2:1;1943:18;;1930:32;;2009:2;1994:18;;1981:32;;-1:-1:-1;2060:3:1;2045:19;2032:33;;-1:-1:-1;1617:454:1;-1:-1:-1;1617:454:1:o;2076:597::-;2188:4;2217:2;2246;2235:9;2228:21;2278:6;2272:13;2321:6;2316:2;2305:9;2301:18;2294:34;2346:1;2356:140;2370:6;2367:1;2364:13;2356:140;;;2465:14;;;2461:23;;2455:30;2431:17;;;2450:2;2427:26;2420:66;2385:10;;2356:140;;;2514:6;2511:1;2508:13;2505:91;;;2584:1;2579:2;2570:6;2559:9;2555:22;2551:31;2544:42;2505:91;-1:-1:-1;2657:2:1;2636:15;-1:-1:-1;;2632:29:1;2617:45;;;;2664:2;2613:54;;2076:597;-1:-1:-1;;;2076:597:1:o;2678:315::-;2746:6;2754;2807:2;2795:9;2786:7;2782:23;2778:32;2775:52;;;2823:1;2820;2813:12;2775:52;2862:9;2849:23;2881:31;2906:5;2881:31;:::i;:::-;2931:5;2983:2;2968:18;;;;2955:32;;-1:-1:-1;;;2678:315:1:o;3190:160::-;3255:20;;3311:13;;3304:21;3294:32;;3284:60;;3340:1;3337;3330:12;3284:60;3190:160;;;:::o;3355:180::-;3411:6;3464:2;3452:9;3443:7;3439:23;3435:32;3432:52;;;3480:1;3477;3470:12;3432:52;3503:26;3519:9;3503:26;:::i;3540:248::-;3608:6;3616;3669:2;3657:9;3648:7;3644:23;3640:32;3637:52;;;3685:1;3682;3675:12;3637:52;-1:-1:-1;;3708:23:1;;;3778:2;3763:18;;;3750:32;;-1:-1:-1;3540:248:1:o;3793:180::-;3852:6;3905:2;3893:9;3884:7;3880:23;3876:32;3873:52;;;3921:1;3918;3911:12;3873:52;-1:-1:-1;3944:23:1;;3793:180;-1:-1:-1;3793:180:1:o;3978:456::-;4055:6;4063;4071;4124:2;4112:9;4103:7;4099:23;4095:32;4092:52;;;4140:1;4137;4130:12;4092:52;4179:9;4166:23;4198:31;4223:5;4198:31;:::i;:::-;4248:5;-1:-1:-1;4305:2:1;4290:18;;4277:32;4318:33;4277:32;4318:33;:::i;:::-;3978:456;;4370:7;;-1:-1:-1;;;4424:2:1;4409:18;;;;4396:32;;3978:456::o;4439:337::-;4502:6;4510;4563:2;4551:9;4542:7;4538:23;4534:32;4531:52;;;4579:1;4576;4569:12;4531:52;4602:26;4618:9;4602:26;:::i;:::-;4592:36;;4678:2;4667:9;4663:18;4650:32;4722:4;4715:5;4711:16;4704:5;4701:27;4691:55;;4742:1;4739;4732:12;4691:55;4765:5;4755:15;;;4439:337;;;;;:::o;4781:247::-;4840:6;4893:2;4881:9;4872:7;4868:23;4864:32;4861:52;;;4909:1;4906;4899:12;4861:52;4948:9;4935:23;4967:31;4992:5;4967:31;:::i;5222:315::-;5287:6;5295;5348:2;5336:9;5327:7;5323:23;5319:32;5316:52;;;5364:1;5361;5354:12;5316:52;5403:9;5390:23;5422:31;5447:5;5422:31;:::i;:::-;5472:5;-1:-1:-1;5496:35:1;5527:2;5512:18;;5496:35;:::i;:::-;5486:45;;5222:315;;;;;:::o;5750:529::-;5827:6;5835;5843;5896:2;5884:9;5875:7;5871:23;5867:32;5864:52;;;5912:1;5909;5902:12;5864:52;5951:9;5938:23;5970:31;5995:5;5970:31;:::i;:::-;6020:5;-1:-1:-1;6077:2:1;6062:18;;6049:32;6090:33;6049:32;6090:33;:::i;:::-;6142:7;-1:-1:-1;6201:2:1;6186:18;;6173:32;6214:33;6173:32;6214:33;:::i;:::-;6266:7;6256:17;;;5750:529;;;;;:::o;6284:388::-;6352:6;6360;6413:2;6401:9;6392:7;6388:23;6384:32;6381:52;;;6429:1;6426;6419:12;6381:52;6468:9;6455:23;6487:31;6512:5;6487:31;:::i;:::-;6537:5;-1:-1:-1;6594:2:1;6579:18;;6566:32;6607:33;6566:32;6607:33;:::i;6677:248::-;6742:6;6750;6803:2;6791:9;6782:7;6778:23;6774:32;6771:52;;;6819:1;6816;6809:12;6771:52;6842:26;6858:9;6842:26;:::i;7416:335::-;7618:2;7600:21;;;7657:2;7637:18;;;7630:30;-1:-1:-1;;;7691:2:1;7676:18;;7669:41;7742:2;7727:18;;7416:335::o;8165:127::-;8226:10;8221:3;8217:20;8214:1;8207:31;8257:4;8254:1;8247:15;8281:4;8278:1;8271:15;8297:127;8358:10;8353:3;8349:20;8346:1;8339:31;8389:4;8386:1;8379:15;8413:4;8410:1;8403:15;8429:128;8469:3;8500:1;8496:6;8493:1;8490:13;8487:39;;;8506:18;;:::i;:::-;-1:-1:-1;8542:9:1;;8429:128::o;8562:135::-;8601:3;-1:-1:-1;;8622:17:1;;8619:43;;;8642:18;;:::i;:::-;-1:-1:-1;8689:1:1;8678:13;;8562:135::o;9389:1102::-;9677:2;9689:21;;;9662:18;;9745:22;;;9629:4;9824:6;9798:2;9783:18;;9629:4;9858:304;9872:6;9869:1;9866:13;9858:304;;;9947:6;9934:20;9967:31;9992:5;9967:31;:::i;:::-;-1:-1:-1;;;;;10023:31:1;10011:44;;10078:4;10137:15;;;;10102:12;;;;10051:1;9887:9;9858:304;;;-1:-1:-1;10200:19:1;;;10193:4;10178:20;;10171:49;10229:19;;;-1:-1:-1;;;;;10260:31:1;;10257:51;;;10304:1;10301;10294:12;10257:51;10338:6;10335:1;10331:14;10317:28;;10391:6;10383;10376:4;10371:3;10367:14;10354:44;10464:1;10421:16;;10439:4;10417:27;10453:13;;;10417:27;9389:1102;-1:-1:-1;;;;;;9389:1102:1:o;10496:217::-;10536:1;10562;10552:132;;10606:10;10601:3;10597:20;10594:1;10587:31;10641:4;10638:1;10631:15;10669:4;10666:1;10659:15;10552:132;-1:-1:-1;10698:9:1;;10496:217::o;10718:168::-;10758:7;10824:1;10820;10816:6;10812:14;10809:1;10806:21;10801:1;10794:9;10787:17;10783:45;10780:71;;;10831:18;;:::i;:::-;-1:-1:-1;10871:9:1;;10718:168::o;11144:251::-;11214:6;11267:2;11255:9;11246:7;11242:23;11238:32;11235:52;;;11283:1;11280;11273:12;11235:52;11315:9;11309:16;11334:31;11359:5;11334:31;:::i;11709:184::-;11779:6;11832:2;11820:9;11811:7;11807:23;11803:32;11800:52;;;11848:1;11845;11838:12;11800:52;-1:-1:-1;11871:16:1;;11709:184;-1:-1:-1;11709:184:1:o;12255:329::-;12457:2;12439:21;;;12496:1;12476:18;;;12469:29;-1:-1:-1;;;12529:2:1;12514:18;;12507:36;12575:2;12560:18;;12255:329::o;13448:125::-;13488:4;13516:1;13513;13510:8;13507:34;;;13521:18;;:::i;:::-;-1:-1:-1;13558:9:1;;13448:125::o;15650:980::-;15912:4;15960:3;15949:9;15945:19;15991:6;15980:9;15973:25;16017:2;16055:6;16050:2;16039:9;16035:18;16028:34;16098:3;16093:2;16082:9;16078:18;16071:31;16122:6;16157;16151:13;16188:6;16180;16173:22;16226:3;16215:9;16211:19;16204:26;;16265:2;16257:6;16253:15;16239:29;;16286:1;16296:195;16310:6;16307:1;16304:13;16296:195;;;16375:13;;-1:-1:-1;;;;;16371:39:1;16359:52;;16466:15;;;;16431:12;;;;16407:1;16325:9;16296:195;;;-1:-1:-1;;;;;;;16547:32:1;;;;16542:2;16527:18;;16520:60;-1:-1:-1;;;16611:3:1;16596:19;16589:35;16508:3;15650:980;-1:-1:-1;;;15650:980:1:o;17457:306::-;17545:6;17553;17561;17614:2;17602:9;17593:7;17589:23;17585:32;17582:52;;;17630:1;17627;17620:12;17582:52;17659:9;17653:16;17643:26;;17709:2;17698:9;17694:18;17688:25;17678:35;;17753:2;17742:9;17738:18;17732:25;17722:35;;17457:306;;;;;:::o

Swarm Source

ipfs://88f654940d1daa60ceca2d9a952f442c2ae67a4f45eaa345cc7d94659bcb613d
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.