Contract 0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb10

 

Contract Overview

Balance:
2.566441794047576652 BNB

BNB Value:
$1,588.04 (@ $618.77/BNB)

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x0247fae7746cfe987fc6ace6ebf9f1cf334498e8fb8294cb6cd6e2ee32ea229bApprove130596662021-11-29 21:23:5718 hrs 39 mins ago0x3913ad21492c35a2e446046a6976bb2c54246406 IN  0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100 BNB0.00022214
0x8d4945e70910f79049a5204873aee1842484868b104681112a2c2c9d360c53e0Approve130529102021-11-29 15:18:441 day 44 mins ago0x9779beed9de02a782362d96a495a3351322571fd IN  0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100 BNB0.00022214
0x8ce3a58f6e99147a17de35b38f181c5614f7f481320b3492afde44fdbd202f2fApprove130519072021-11-29 14:24:501 day 1 hr ago0xe442f2d89090b087293ff03e902b4bf8c9d25a93 IN  0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100 BNB0.00012422
0x4ded6d36dbe774f5208fda03ae2b2bec726f3fcc18da054ac76bfc93fae44d61Approve130518872021-11-29 14:23:471 day 1 hr ago0xe442f2d89090b087293ff03e902b4bf8c9d25a93 IN  0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100 BNB0.00007261
0xf358b77829a024034afe870863e8527a36f9257bf99d6c97a8d5e12c2fccd39bApprove130518272021-11-29 14:20:351 day 1 hr ago0xe442f2d89090b087293ff03e902b4bf8c9d25a93 IN  0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100 BNB0.000266568
0x66bb9ba3ce1fcbc0941fa09f8583daeb1ef87b3a79f3fc72a1a0a445198a0a95Approve130422172021-11-29 5:16:291 day 10 hrs ago0xb323d9ce2853a89e3cd6d8ea228806cd3f0edc8c IN  0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100 BNB0.00012614
0xd321177b35872d7ce001879f5527bf2d64beea54dd53f26532bf604ee646193aApprove130422072021-11-29 5:15:561 day 10 hrs ago0xb323d9ce2853a89e3cd6d8ea228806cd3f0edc8c IN  0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100 BNB0.00022214
0x56dd062f40cd94b9b79144afed967f3ce3eaa098bdeba2c95fa5a70789cb12b6Approve130416582021-11-29 4:45:391 day 11 hrs ago0x677b1903ed2b59f5d77ef9a1d1929828d6138d5a IN  0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100 BNB0.00022214
0x83a02025d880a65924afd5ac161e76f997a1212a999de4812a2976d53aa8fa59Approve130411932021-11-29 4:20:051 day 11 hrs ago0x295e99c93104cde5afaa2bc1f51982fcef901671 IN  0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100 BNB0.000310996
0xcf051608796b3ed7171a19504ac6000041ec4f83b01d492204ea3872a8c0afb8Approve130408452021-11-29 3:59:251 day 12 hrs ago0xdac8198fba9958f045a0848b5bbcf7e0a068c067 IN  0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100 BNB0.000310996
0xa557572ad0567b73163c7abc3b5d653772f2230fa3c5d8a9438cbfdd6b1516f2Approve130404702021-11-29 3:39:201 day 12 hrs ago0xd9db9894c75dca0188257dfe5c15ca888a015c4b IN  0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100 BNB0.000310996
0xa2e3afeae396a98fa41a817dd91793b3ee7ef52e3fd5f75dad234eebd796e7a6Approve130387172021-11-29 2:02:551 day 14 hrs ago0x35ca90a2d603d33f581943c591f3e78398c42f7b IN  0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100 BNB0.00022214
0x7ada4ef8f42ca118b989bf3e93353a1a0cbda1048bd4dca614d27141ed307b48Transfer130335742021-11-28 21:27:361 day 18 hrs ago0x1f9a2c104c4ce87598519fd7e7e2e1de009be3ac IN  0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100 BNB0.00450765
0xfda09dde15287979b842ec29e687fae84901b51400af83f97b62104e430436cfApprove130331192021-11-28 21:03:371 day 18 hrs ago0xeaef206a51042b758c3c682702d6c9b6b2871e83 IN  0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100 BNB0.00022214
0x41481c9a8ab8ddbdad21bb47392df697e5c7b1c6b966e2147f814c18b03fc41fApprove130324792021-11-28 20:28:441 day 19 hrs ago0xd6c8ee420547379a177a827a190c457e5c9d4b1d IN  0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100 BNB0.00022214
0x7e2a17fb51029b33d1a9265031e385628c4ce8ab474691f4d5806f7355d8d738Approve130316302021-11-28 19:41:111 day 20 hrs ago0x206fc68aeb8e270fa3b1c77fedb84a0a27713c37 IN  0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100 BNB0.00022214
0xd1cb933b661ec2ca558082e02c08fcb4c189a3bb87e7db113a1534de6fac2d17Approve130291202021-11-28 17:26:161 day 22 hrs ago0x62108b8a8b46c0aa081b2223f6cd1d29de8edbfb IN  0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100 BNB0.00022214
0x17e165d03cbdd73937cff9cc4443792f4ccd39074215c61080007cda32fee9afApprove130284582021-11-28 16:50:351 day 23 hrs ago0xef3bb8e75e4d5828de16f38d8d2832704122034c IN  0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100 BNB0.00012614
0xbd21fc69b0a5b93dfa0917bb9b7e06a59d49ca17b11f073a3ef926f4a6b7e868Approve130284052021-11-28 16:47:561 day 23 hrs ago0xef3bb8e75e4d5828de16f38d8d2832704122034c IN  0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100 BNB0.00022214
0xab6b9f9ae7d927f33af5c80330dfb49d9fd8433ad5072f5fe341b8e2e039e2ffApprove130276492021-11-28 16:07:171 day 23 hrs ago0xf76a9dea21b10111e320f70116ad856a43b05e35 IN  0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100 BNB0.00022214
0x08aa0ec2531f6b710133b7a9bb8f914500c7a51860e110ffb68ab0dc3fa009bbApprove130268922021-11-28 15:26:262 days 36 mins ago0x075cf6cb9f7c35eb97ec89459b119303448edfc3 IN  0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100 BNB0.00022214
0x1fc77d13d4e81358552c9067aad40e22ca00705b11f424135198fb14923be3ceApprove130268762021-11-28 15:25:372 days 37 mins ago0x075cf6cb9f7c35eb97ec89459b119303448edfc3 IN  0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100 BNB0.00022214
0x6a7e49924f7ced2e691e2bc69d7b930f73e254b0ae93233d58c60fe989b4cef2Approve130266762021-11-28 15:14:242 days 48 mins ago0x1f9a2c104c4ce87598519fd7e7e2e1de009be3ac IN  0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100 BNB0.00012614
0x2720395548ac4c20c293c8c7607dfdc87c7df8f6ab13d6347f640dbf316e9404Approve130266472021-11-28 15:12:542 days 50 mins ago0x1f9a2c104c4ce87598519fd7e7e2e1de009be3ac IN  0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100 BNB0.00022214
0xd31b9e2e80a0de65dd6e67e68e48e3531f463b559397a5460e3da2acca78afbdApprove130231602021-11-28 12:00:572 days 4 hrs ago0xfc40e8416ecec194d50043c91a2f9f0f5ba0beb6 IN  0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100 BNB0.00022214
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x2b8ab4055274ddcde1873b378146c2508af3286ba0d9b0a360934ac8956aa37b130577422021-11-29 19:42:1120 hrs 21 mins ago 0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100x15ba8127bcc7b1859ca6c44b73235a189edb68c90.000919643924498683 BNB
0x2b8ab4055274ddcde1873b378146c2508af3286ba0d9b0a360934ac8956aa37b130577422021-11-29 19:42:1120 hrs 21 mins ago 0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb10 0x480f9cf0631c241124c698964101876bc3bda4040.002452383798663157 BNB
0x2b8ab4055274ddcde1873b378146c2508af3286ba0d9b0a360934ac8956aa37b130577422021-11-29 19:42:1120 hrs 21 mins ago PancakeSwap: Router v2 0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100.004291671647660525 BNB
0x36d50877a0c38e44d55ab7a4ffb8e77a5c7b9c4216bdec1d99634ad64801c911130574122021-11-29 19:25:0020 hrs 38 mins ago 0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100x15ba8127bcc7b1859ca6c44b73235a189edb68c90.000931210818972733 BNB
0x36d50877a0c38e44d55ab7a4ffb8e77a5c7b9c4216bdec1d99634ad64801c911130574122021-11-29 19:25:0020 hrs 38 mins ago 0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb10 0x480f9cf0631c241124c698964101876bc3bda4040.002483228850593954 BNB
0x36d50877a0c38e44d55ab7a4ffb8e77a5c7b9c4216bdec1d99634ad64801c911130574122021-11-29 19:25:0020 hrs 38 mins ago PancakeSwap: Router v2 0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100.004345650488539421 BNB
0x6bd0a9b2f801a27d6d561d58844e88d3ffce26238e77055a8a2ca17266c841c4130563792021-11-29 18:30:1021 hrs 33 mins ago 0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100x15ba8127bcc7b1859ca6c44b73235a189edb68c90.000942107291510143 BNB
0x6bd0a9b2f801a27d6d561d58844e88d3ffce26238e77055a8a2ca17266c841c4130563792021-11-29 18:30:1021 hrs 33 mins ago 0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb10 0x480f9cf0631c241124c698964101876bc3bda4040.002512286110693714 BNB
0x6bd0a9b2f801a27d6d561d58844e88d3ffce26238e77055a8a2ca17266c841c4130563792021-11-29 18:30:1021 hrs 33 mins ago PancakeSwap: Router v2 0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100.004396500693714001 BNB
0x6346787bff6b427418e369efb4882a98089dda06148092a0663c7db85357b6d3130550382021-11-29 17:14:3322 hrs 48 mins ago 0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100x15ba8127bcc7b1859ca6c44b73235a189edb68c90.000940773465413594 BNB
0x6346787bff6b427418e369efb4882a98089dda06148092a0663c7db85357b6d3130550382021-11-29 17:14:3322 hrs 48 mins ago 0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb10 0x480f9cf0631c241124c698964101876bc3bda4040.002508729241102917 BNB
0x6346787bff6b427418e369efb4882a98089dda06148092a0663c7db85357b6d3130550382021-11-29 17:14:3322 hrs 48 mins ago PancakeSwap: Router v2 0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100.004390276171930106 BNB
0xbb054d9458a65a615f31251af15d583322937d6596378fcc8cdcdefbdee48198130527212021-11-29 15:08:521 day 54 mins ago 0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100x15ba8127bcc7b1859ca6c44b73235a189edb68c90.000960622929350721 BNB
0xbb054d9458a65a615f31251af15d583322937d6596378fcc8cdcdefbdee48198130527212021-11-29 15:08:521 day 54 mins ago 0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb10 0x480f9cf0631c241124c698964101876bc3bda4040.002561661144935257 BNB
0xbb054d9458a65a615f31251af15d583322937d6596378fcc8cdcdefbdee48198130527212021-11-29 15:08:521 day 54 mins ago PancakeSwap: Router v2 0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100.004482907003636701 BNB
0xb098c75915dfab4209413b95c8dc657347c949c2bcf2856dc43854c318bc8047130527002021-11-29 15:07:491 day 55 mins ago 0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100x15ba8127bcc7b1859ca6c44b73235a189edb68c90.000983401831153324 BNB
0xb098c75915dfab4209413b95c8dc657347c949c2bcf2856dc43854c318bc8047130527002021-11-29 15:07:491 day 55 mins ago 0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb10 0x480f9cf0631c241124c698964101876bc3bda4040.00262240488307553 BNB
0xb098c75915dfab4209413b95c8dc657347c949c2bcf2856dc43854c318bc8047130527002021-11-29 15:07:491 day 55 mins ago PancakeSwap: Router v2 0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100.004589208545382179 BNB
0x320cf6199ca6707c9716d4ed405121de6c05611ef56c9c699c0f4955fa36a3ea130518452021-11-29 14:21:291 day 1 hr ago 0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100x15ba8127bcc7b1859ca6c44b73235a189edb68c90.001008235230838664 BNB
0x320cf6199ca6707c9716d4ed405121de6c05611ef56c9c699c0f4955fa36a3ea130518452021-11-29 14:21:291 day 1 hr ago 0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb10 0x480f9cf0631c241124c698964101876bc3bda4040.002688627282236439 BNB
0x320cf6199ca6707c9716d4ed405121de6c05611ef56c9c699c0f4955fa36a3ea130518452021-11-29 14:21:291 day 1 hr ago PancakeSwap: Router v2 0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100.004705097743913769 BNB
0x83e53481a7deac9d1ee18fcfce62faab4c45f13c79b4cc7b4cb478cd8763cb8f130432772021-11-29 6:13:211 day 9 hrs ago 0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100x15ba8127bcc7b1859ca6c44b73235a189edb68c90.001023559038583526 BNB
0x83e53481a7deac9d1ee18fcfce62faab4c45f13c79b4cc7b4cb478cd8763cb8f130432772021-11-29 6:13:211 day 9 hrs ago 0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb10 0x480f9cf0631c241124c698964101876bc3bda4040.00272949076955607 BNB
0x83e53481a7deac9d1ee18fcfce62faab4c45f13c79b4cc7b4cb478cd8763cb8f130432772021-11-29 6:13:211 day 9 hrs ago PancakeSwap: Router v2 0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100.004776608846723123 BNB
0x28209e5735dfee6031d42f2cff646682599561398158ab39e14a9d7a1180c383130412172021-11-29 4:21:281 day 11 hrs ago 0x7c9fede5f4c0666dca9056e9aed20de1d7d8bb100x15ba8127bcc7b1859ca6c44b73235a189edb68c90.001030575927165976 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
babyChristmasElf

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-11-25
*/

/**
 
*/

/**
    
    8% BUSD Rewards
    3% Liquidity
    3% Marketing
*/
 
//SPDX-License-Identifier: Unlicensed
 
pragma solidity ^0.8.4;
 
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }
 
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }
 
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }
 
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }
}
 
/**
 * 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 authorizations;
 
    constructor(address _owner) {
        owner = _owner;
        authorizations[_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 {
        authorizations[adr] = true;
    }
 
 
 
    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }
 
    /**
     * Return address' authorization status
     */
    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }
 
    /**
     * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[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;
}
 
contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;
 
    address _token;
 
    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }
 
    IBEP20 REWARDS = IBEP20(0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56); // BUSD
    address WBNB = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c;
 
    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 = 60 minutes;
    uint256 public minDistribution = 1 * (10 ** 16);
 
    uint256 currentIndex;
 
    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 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 = REWARDS.balanceOf(address(this));
 
        address[] memory path = new address[](2);
        path[0] = WBNB;
        path[1] = address(REWARDS);
 
        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(
            0,
            path,
            address(this),
            block.timestamp
        );
 
        uint256 amount = REWARDS.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);
            REWARDS.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
    function claimDividend() external {
        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) internal 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();
    }
}
 
contract babyChristmasElf is IBEP20, Auth {
    using SafeMath for uint256;
 
    address REWARDS = 0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56;  //Mainnet
    address WBNB = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c;  //Mainnet
    address routerv2 = 0x10ED43C718714eb63d5aA57B78B54704E256024E; //Mainnet
 
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
 
    address _marketingAdr = 0x15Ba8127bCc7b1859ca6c44b73235a189Edb68C9;
 
    string constant _name = "Rudolph Bonk";
    string constant _symbol = "RBONK";
    uint8 constant _decimals = 6;
 
    uint256 _totalSupply = 1 * 10**16 * (10 ** _decimals);
    uint256 public _maxTxAmount = _totalSupply * 1 / 100;
 
    //max wallet holding of 3%
    uint256 public _maxWalletToken = ( _totalSupply * 3 ) / 100;
 
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;
 
    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) isDividendExempt;
 
 
    uint256 liquidityFee    = 300;
    uint256 reflectionFee   = 800;
    uint256 marketingFee    = 300;
    uint256 public totalFee = 1400;
    uint256 feeDenominator  = 10000;
 
    address public autoLiquidityReceiver;
    address public marketingFeeReceiver;
 
    uint256 targetLiquidity = 25;
    uint256 targetLiquidityDenominator = 100;
 
    IDEXRouter public router;
    address public pair;
 
    DividendDistributor distributor;
    uint256 distributorGas = 500000;
 
    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 10 / 10000;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
 
    constructor () Auth(msg.sender) {
        router = IDEXRouter(routerv2);
        pair = IDEXFactory(router.factory()).createPair(WBNB, address(this));
        _allowances[address(this)][address(router)] = _totalSupply;
 
        distributor = new DividendDistributor(address(router));
 
        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;
 
 
        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;
 
        autoLiquidityReceiver = DEAD;
        marketingFeeReceiver = _marketingAdr;
 
        approve(routerv2, _totalSupply);
        approve(address(pair), _totalSupply);
        _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, _totalSupply);
    }
 
    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] != _totalSupply){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }
 
        return _transferFrom(sender, recipient, amount);
    }
 
    //settting the maximum permitted wallet holding (percent of total supply)
     function setMaxWalletPercent(uint256 maxWallPercent) external onlyOwner() {
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 100;
    }
 
    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }
 
        // max wallet code
        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != marketingFeeReceiver && recipient != autoLiquidityReceiver){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}
 
        // Checks max transaction limit
        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;
    }
 
    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || 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 feeAmount = amount.mul(totalFee).div(feeDenominator);
 
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
 
        return amount.sub(feeAmount);
    }
 
    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }
 
    function clearStuckBalance(uint256 amountPercentage) external onlyOwner {
        uint256 amountBNB = address(this).balance;
        payable(marketingFeeReceiver).transfer(amountBNB * amountPercentage / 100);
    }
 
    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);
 
        try distributor.deposit{value: amountBNBReflection}() {} catch {}
        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountBNBMarketing, gas: 30000}("");
 
        tmpSuccess = false;
 
        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
 
            emit AutoLiquify(amountBNBLiquidity, amountToLiquify);
        }
    }
 
    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]);
        }
    }
 
    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }
 
    function setIsTxLimitExempt(address holder, bool exempt) external authorized {
        isTxLimitExempt[holder] = exempt;
    }
 
    
 
    function setMarketingReciver(address _marketingFeeReceiver) external authorized {
        marketingFeeReceiver = _marketingFeeReceiver;
    }
    function setLiquidityReciver(address _autoLiquidityReceiver) external authorized {
        autoLiquidityReceiver = _autoLiquidityReceiver;
    }
 
    function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }
 
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }
 
    function setDistributorSettings(uint256 gas) external authorized {
        require(gas < 750000);
        distributorGas = gas;
    }
 
    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;
    }
 
 
    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"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":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":"_maxTxAmount","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":"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":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","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":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":"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":"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":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"}],"name":"setLiquidityReciver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setMarketingReciver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"setMaxWalletPercent","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":[],"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":[{"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"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b031990811673e9e7cea3dedca5984780bafc599bd69add087d561790915560038054821673bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c1790556004805482167310ed43c718714eb63d5aa57b78b54704e256024e17905560058054821661dead1790556006805482168155600780549092167315ba8127bcc7b1859ca6c44b73235a189edb68c917909155620000aa90600a6200057a565b620000bd90662386f26fc1000062000639565b60085560646008546001620000d3919062000639565b620000df919062000510565b60095560646008546003620000f5919062000639565b62000101919062000510565b600a90815561012c60108190556103206011556012556105786013556127106014819055601960175560646018556207a120601c55601d805460ff19166001179055600854909162000154919062000639565b62000160919062000510565b601e553480156200017057600080fd5b5060008054336001600160a01b031991821681178355825260016020818152604093849020805460ff191690921790915560048054601980546001600160a01b03909216919094168117909355835163c45a015560e01b81529351929363c45a01559381830193929091829003018186803b158015620001ef57600080fd5b505afa15801562000204573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022a9190620004e0565b6003546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c6539690604401602060405180830381600087803b1580156200027757600080fd5b505af11580156200028c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b29190620004e0565b601a80546001600160a01b0319166001600160a01b03928316179055600854306000908152600c60209081526040808320601980548716855292529182902092909255905490519116906200030790620004d2565b6001600160a01b039091168152602001604051809103906000f08015801562000334573d6000803e3d6000fd5b50601b80546001600160a01b039283166001600160a01b031991821617909155336000908152600d60209081526040808320805460ff199081166001908117909255600e84528285208054821683179055601a5487168552600f90935281842080548416821790553084528184208054841682179055600580548716855291909320805490921690921790555460158054831691841691909117905560075460168054909216908316179055600454600854620003f692919091169062000464565b50601a5460085462000412916001600160a01b03169062000464565b50600854336000818152600b6020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000671565b336000818152600c602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590620004c09086815260200190565b60405180910390a35060015b92915050565b610e8f806200229083390190565b600060208284031215620004f2578081fd5b81516001600160a01b038116811462000509578182fd5b9392505050565b6000826200052c57634e487b7160e01b81526012600452602481fd5b500490565b600181815b80851115620005725781600019048211156200055657620005566200065b565b808516156200056457918102915b93841c939080029062000536565b509250929050565b60006200050960ff8416836000826200059657506001620004cc565b81620005a557506000620004cc565b8160018114620005be5760028114620005c957620005e9565b6001915050620004cc565b60ff841115620005dd57620005dd6200065b565b50506001821b620004cc565b5060208310610133831016604e8410600b84101617156200060e575081810a620004cc565b6200061a838362000531565b80600019048211156200063157620006316200065b565b029392505050565b60008160001904831182151516156200065657620006566200065b565b500290565b634e487b7160e01b600052601160045260246000fd5b611c0f80620006816000396000f3fe60806040526004361061021e5760003560e01c80637d1db4a511610123578063ca33e64c116100ab578063f2fde38b1161006f578063f2fde38b14610690578063f708a64f146106b0578063f84ba65d146106d0578063f887ea40146106f0578063fe9fbb801461071057600080fd5b8063ca33e64c146105ca578063d51ed1c8146105ea578063dd62ed3e1461060a578063df20fd4914610650578063e96fada21461067057600080fd5b806395d89b41116100f257806395d89b411461051c5780639d1944f51461054a578063a8aa1b311461056a578063a9059cbb1461058a578063b6a5d7de146105aa57600080fd5b80637d1db4a51461049457806382bf293c146104aa578063893d20e8146104ca57806391f4315e146104fc57600080fd5b80632d48e896116101a6578063658d4b7f11610175578063658d4b7f146103ee5780636ddd17131461040e57806370a082311461042857806378109e541461045e5780637c38df211461047457600080fd5b80632d48e896146103635780632f54bf6e14610383578063313ce567146103b2578063571ac8b0146103ce57600080fd5b806318160ddd116101ed57806318160ddd146102e15780631da1db5e146102f65780631df4ccfc1461031857806323b872dd1461032e5780632b112e491461034e57600080fd5b80630445b6671461022a57806306fdde0314610253578063095ea7b3146102915780631161ae39146102c157600080fd5b3661022557005b600080fd5b34801561023657600080fd5b50610240601e5481565b6040519081526020015b60405180910390f35b34801561025f57600080fd5b5060408051808201909152600c81526b5275646f6c706820426f6e6b60a01b60208201525b60405161024a9190611a35565b34801561029d57600080fd5b506102b16102ac366004611989565b610730565b604051901515815260200161024a565b3480156102cd57600080fd5b506102b16102dc3660046119e7565b61079c565b3480156102ed57600080fd5b50600854610240565b34801561030257600080fd5b506103166103113660046119cf565b6107b0565b005b34801561032457600080fd5b5061024060135481565b34801561033a57600080fd5b506102b1610349366004611915565b610837565b34801561035a57600080fd5b506102406108fb565b34801561036f57600080fd5b5061031661037e3660046119e7565b61094d565b34801561038f57600080fd5b506102b161039e3660046118c1565b6000546001600160a01b0391821691161490565b3480156103be57600080fd5b506040516006815260200161024a565b3480156103da57600080fd5b506102b16103e93660046118c1565b6109dc565b3480156103fa57600080fd5b50610316610409366004611955565b6109f0565b34801561041a57600080fd5b50601d546102b19060ff1681565b34801561043457600080fd5b506102406104433660046118c1565b6001600160a01b03166000908152600b602052604090205490565b34801561046a57600080fd5b50610240600a5481565b34801561048057600080fd5b5061031661048f3660046118c1565b610a40565b3480156104a057600080fd5b5061024060095481565b3480156104b657600080fd5b506103166104c53660046119cf565b610a87565b3480156104d657600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161024a565b34801561050857600080fd5b506103166105173660046118c1565b610ad1565b34801561052857600080fd5b5060408051808201909152600581526452424f4e4b60d81b6020820152610284565b34801561055657600080fd5b506103166105653660046119cf565b610b18565b34801561057657600080fd5b50601a546104e4906001600160a01b031681565b34801561059657600080fd5b506102b16105a5366004611989565b610b51565b3480156105b657600080fd5b506103166105c53660046118c1565b610b5e565b3480156105d657600080fd5b506015546104e4906001600160a01b031681565b3480156105f657600080fd5b506102406106053660046119cf565b610baf565b34801561061657600080fd5b506102406106253660046118dd565b6001600160a01b039182166000908152600c6020908152604080832093909416825291909152205490565b34801561065c57600080fd5b5061031661066b3660046119b4565b610bf3565b34801561067c57600080fd5b506016546104e4906001600160a01b031681565b34801561069c57600080fd5b506103166106ab3660046118c1565b610c2f565b3480156106bc57600080fd5b506103166106cb366004611955565b610cc5565b3480156106dc57600080fd5b506103166106eb366004611955565b610dcd565b3480156106fc57600080fd5b506019546104e4906001600160a01b031681565b34801561071c57600080fd5b506102b161072b3660046118c1565b610e1d565b336000818152600c602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061078b9086815260200190565b60405180910390a350600192915050565b6000826107a883610baf565b119392505050565b6000546001600160a01b031633146107e35760405162461bcd60e51b81526004016107da90611a88565b60405180910390fd5b60165447906001600160a01b03166108fc60646108008585611b75565b61080a9190611b55565b6040518115909202916000818181858888f19350505050158015610832573d6000803e3d6000fd5b505050565b6008546001600160a01b0384166000908152600c602090815260408083203384529091528120549091146108e6576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600c825283812033825290915291909120546108c1918490610e3b565b6001600160a01b0385166000908152600c602090815260408083203384529091529020555b6108f1848484610e67565b90505b9392505050565b6006546001600160a01b03166000908152600b6020526040812054610948906005546001600160a01b03166000908152600b60205260409020546109429060085490611289565b90611289565b905090565b61095633610e1d565b6109725760405162461bcd60e51b81526004016107da90611aa8565b601b546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b1580156109c057600080fd5b505af11580156109d4573d6000803e3d6000fd5b505050505050565b60006109ea82600854610730565b92915050565b6109f933610e1d565b610a155760405162461bcd60e51b81526004016107da90611aa8565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b610a4933610e1d565b610a655760405162461bcd60e51b81526004016107da90611aa8565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610ab15760405162461bcd60e51b81526004016107da90611a88565b606481600854610ac19190611b75565b610acb9190611b55565b600a5550565b610ada33610e1d565b610af65760405162461bcd60e51b81526004016107da90611aa8565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b610b2133610e1d565b610b3d5760405162461bcd60e51b81526004016107da90611aa8565b620b71b08110610b4c57600080fd5b601c55565b60006108f4338484610e67565b6000546001600160a01b03163314610b885760405162461bcd60e51b81526004016107da90611a88565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b60006109ea610bbc6108fb565b601a546001600160a01b03166000908152600b6020526040902054610bed90610be6906002611295565b8590611295565b906112a1565b610bfc33610e1d565b610c185760405162461bcd60e51b81526004016107da90611aa8565b601d805460ff191692151592909217909155601e55565b6000546001600160a01b03163314610c595760405162461bcd60e51b81526004016107da90611a88565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b610cce33610e1d565b610cea5760405162461bcd60e51b81526004016107da90611aa8565b6001600160a01b0382163014801590610d115750601a546001600160a01b03838116911614155b610d1a57600080fd5b6001600160a01b0382166000908152600f60205260409020805460ff19168215801591909117909155610d8057601b54604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca96906044016109a6565b601b546001600160a01b038381166000818152600b602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca96906044016109a6565b5050565b610dd633610e1d565b610df25760405162461bcd60e51b81526004016107da90611aa8565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b60008184841115610e5f5760405162461bcd60e51b81526004016107da9190611a35565b505050900390565b601f5460009060ff1615610e8757610e808484846112ad565b90506108f4565b6001600160a01b03841660009081526001602052604090205460ff16158015610eb957506001600160a01b0383163014155b8015610ed357506005546001600160a01b03848116911614155b8015610eed5750601a546001600160a01b03848116911614155b8015610f0757506016546001600160a01b03848116911614155b8015610f2157506015546001600160a01b03848116911614155b15610fc2576001600160a01b0383166000908152600b6020526040902054600a54610f4c8483611b3d565b1115610fc05760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e000060648201526084016107da565b505b610fcc8483611393565b610fd46113fc565b15610fe157610fe161144b565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600b9091529190912054611033918490610e3b565b6001600160a01b0385166000908152600b6020908152604080832093909355600d90529081205460ff16156110685782611072565b61107285846117fa565b6001600160a01b0385166000908152600b602052604090205490915061109890826118a0565b6001600160a01b038086166000908152600b60209081526040808320949094559188168152600f909152205460ff1661113c57601b546001600160a01b038681166000818152600b602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561112957600080fd5b505af192505050801561113a575060015b505b6001600160a01b0384166000908152600f602052604090205460ff166111cd57601b546001600160a01b038581166000818152600b602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b1580156111ba57600080fd5b505af19250505080156111cb575060015b505b601b54601c546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c479916112059160040190815260200190565b600060405180830381600087803b15801561121f57600080fd5b505af1925050508015611230575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161127691815260200190565b60405180910390a3506001949350505050565b60006108f48284611b94565b60006108f48284611b75565b60006108f48284611b55565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600b909152918220546112fe918490610e3b565b6001600160a01b038086166000908152600b6020526040808220939093559085168152205461132d90836118a0565b6001600160a01b038085166000818152600b602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113819086815260200190565b60405180910390a35060019392505050565b600954811115806113bc57506001600160a01b0382166000908152600e602052604090205460ff165b610dc95760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016107da565b601a546000906001600160a01b0316331480159061141d5750601f5460ff16155b801561142b5750601d5460ff165b8015610948575050601e54306000908152600b6020526040902054101590565b601f805460ff1916600117905560175460185460009161146a9161079c565b61147657601054611479565b60005b9050600061149d6002610bed601354610bed86601e5461129590919063ffffffff16565b905060006114b682601e5461128990919063ffffffff16565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106114fe57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260035482519116908290600190811061153d57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260195460405163791ac94760e01b81524792919091169063791ac94790611587908690600090879030904290600401611acd565b600060405180830381600087803b1580156115a157600080fd5b505af11580156115b5573d6000803e3d6000fd5b5050505060006115ce824761128990919063ffffffff16565b905060006115e96115e08860026112a1565b60135490611289565b905060006115fe6002610bed8481878d611295565b9050600061161b83610bed6011548761129590919063ffffffff16565b9050600061163884610bed6012548861129590919063ffffffff16565b9050601b60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561168a57600080fd5b505af19350505050801561169c575060015b506016546040516000916001600160a01b03169061753090849084818181858888f193505050503d80600081146116ef576040519150601f19603f3d011682016040523d82523d6000602084013e6116f4565b606091505b5060009250508a1590506117e35760195460155460405163f305d71960e01b8152306004820152602481018d905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990869060c4016060604051808303818588803b15801561176d57600080fd5b505af1158015611781573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117a69190611a08565b505060408051868152602081018d90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601f805460ff19169055505050505050505050565b600080611818601454610bed6013548661129590919063ffffffff16565b306000908152600b602052604090205490915061183590826118a0565b306000818152600b6020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118869085815260200190565b60405180910390a36118988382611289565b949350505050565b60006108f48284611b3d565b803580151581146118bc57600080fd5b919050565b6000602082840312156118d2578081fd5b81356108f481611bc1565b600080604083850312156118ef578081fd5b82356118fa81611bc1565b9150602083013561190a81611bc1565b809150509250929050565b600080600060608486031215611929578081fd5b833561193481611bc1565b9250602084013561194481611bc1565b929592945050506040919091013590565b60008060408385031215611967578182fd5b823561197281611bc1565b9150611980602084016118ac565b90509250929050565b6000806040838503121561199b578182fd5b82356119a681611bc1565b946020939093013593505050565b600080604083850312156119c6578182fd5b6119a6836118ac565b6000602082840312156119e0578081fd5b5035919050565b600080604083850312156119f9578182fd5b50508035926020909101359150565b600080600060608486031215611a1c578283fd5b8351925060208401519150604084015190509250925092565b6000602080835283518082850152825b81811015611a6157858101830151858201604001528201611a45565b81811115611a725783604083870101525b50601f01601f1916929092016040019392505050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015611b1c5784516001600160a01b031683529383019391830191600101611af7565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611b5057611b50611bab565b500190565b600082611b7057634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615611b8f57611b8f611bab565b500290565b600082821015611ba657611ba6611bab565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114611bd657600080fd5b5056fea2646970667358221220538da624ea74aaf349a8a2d7f8da368ac29c96ad85056fc1fcdc16f2fd5f155764736f6c634300080400336080604052600180546001600160a01b031990811673e9e7cea3dedca5984780bafc599bd69add087d56179091556002805490911673bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c1790556ec097ce7bc90715b34b9f1000000000600c55610e10600d55662386f26fc10000600e5534801561007c57600080fd5b50604051610e8f380380610e8f83398101604081905261009b916100f5565b6001600160a01b0381166100c3577310ed43c718714eb63d5aa57b78b54704e256024e6100c5565b805b600380546001600160a01b03929092166001600160a01b0319928316179055600080549091163317905550610123565b600060208284031215610106578081fd5b81516001600160a01b038116811461011c578182fd5b9392505050565b610d5d806101326000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed14610224578063f0fc6bca1461023a578063ffb2c4791461024f578063ffd49c841461026f57600080fd5b8063ce7c2ac2146101af578063d0e30db014610206578063e2d2e2191461020e57600080fd5b80632d48e896116100bb5780632d48e8961461014d5780633a98ef391461016d5780634fab0ae814610183578063997664d71461019957600080fd5b806311ce023d146100e257806314b6ca961461010b57806328fd31981461012d575b600080fd5b3480156100ee57600080fd5b506100f8600c5481565b6040519081526020015b60405180910390f35b34801561011757600080fd5b5061012b610126366004610b85565b610285565b005b34801561013957600080fd5b506100f8610148366004610b6b565b6103fd565b34801561015957600080fd5b5061012b610168366004610bfe565b610486565b34801561017957600080fd5b506100f860085481565b34801561018f57600080fd5b506100f8600e5481565b3480156101a557600080fd5b506100f860095481565b3480156101bb57600080fd5b506101eb6101ca366004610b6b565b60076020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610102565b61012b6104a8565b34801561021a57600080fd5b506100f8600b5481565b34801561023057600080fd5b506100f8600a5481565b34801561024657600080fd5b5061012b610711565b34801561025b57600080fd5b5061012b61026a366004610bce565b61071c565b34801561027b57600080fd5b506100f8600d5481565b6000546001600160a01b0316331461029c57600080fd5b6001600160a01b038216600090815260076020526040902054156102c3576102c382610838565b6000811180156102e957506001600160a01b038216600090815260076020526040902054155b1561034f57600480546001600160a01b0384166000818152600560205260408120839055600183018455929092527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319169091179055610382565b8015801561037457506001600160a01b03821660009081526007602052604090205415155b156103825761038282610963565b6001600160a01b0382166000908152600760205260409020546008546103b39183916103ad91610ab0565b90610ac3565b6008556001600160a01b03821660009081526007602052604090208190556103da81610acf565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6001600160a01b03811660009081526007602052604081205461042257506000919050565b6001600160a01b03821660009081526007602052604081205461044490610acf565b6001600160a01b038416600090815260076020526040902060010154909150808211610474575060009392505050565b61047e8282610ab0565b949350505050565b6000546001600160a01b0316331461049d57600080fd5b600d91909155600e55565b6000546001600160a01b031633146104bf57600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561050357600080fd5b505afa158015610517573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053b9190610be6565b6040805160028082526060820183529293506000929091602083019080368337505060025482519293506001600160a01b03169183915060009061058f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260018054835192169183919081106105cd57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260035460405163b6f9de9560e01b815291169063b6f9de9590349061061390600090869030904290600401610c1f565b6000604051808303818588803b15801561062c57600080fd5b505af1158015610640573d6000803e3d6000fd5b50506001546040516370a0823160e01b8152306004820152600094506106cf93508692506001600160a01b03909116906370a082319060240160206040518083038186803b15801561069157600080fd5b505afa1580156106a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c99190610be6565b90610ab0565b6009549091506106df9082610ac3565b600955600854600c5461070991610700916106fa9085610af2565b90610afe565b600b5490610ac3565b600b55505050565b61071a33610838565b565b6000546001600160a01b0316331461073357600080fd5b6004548061073f575050565b6000805a905060005b848310801561075657508381105b156108315783600f541061076a576000600f555b6107aa6004600f548154811061079057634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316610b0a565b156107ef576107ef6004600f54815481106107d557634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316610838565b6108046107fd5a8490610ab0565b8490610ac3565b92505a600f8054919350600061081983610cf6565b9190505550808061082990610cf6565b915050610748565b5050505050565b6001600160a01b0381166000908152600760205260409020546108585750565b6000610863826103fd565b9050801561095f57600a546108789082610ac3565b600a5560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb90604401602060405180830381600087803b1580156108c957600080fd5b505af11580156108dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109019190610bae565b506001600160a01b038216600090815260066020908152604080832042905560079091529020600201546109359082610ac3565b6001600160a01b03831660009081526007602052604090206002810191909155546103da90610acf565b5050565b6004805461097390600190610cdf565b8154811061099157634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03848116845260059092526040909220546004805492909316929181106109dd57634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260059182905260408120546004805491939291610a2990600190610cdf565b81548110610a4757634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610a8b57634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610abc8284610cdf565b9392505050565b6000610abc8284610c88565b6000610aec600c546106fa600b5485610af290919063ffffffff16565b92915050565b6000610abc8284610cc0565b6000610abc8284610ca0565b600d546001600160a01b03821660009081526006602052604081205490914291610b349190610c88565b108015610aec5750600e54610b48836103fd565b1192915050565b80356001600160a01b0381168114610b6657600080fd5b919050565b600060208284031215610b7c578081fd5b610abc82610b4f565b60008060408385031215610b97578081fd5b610ba083610b4f565b946020939093013593505050565b600060208284031215610bbf578081fd5b81518015158114610abc578182fd5b600060208284031215610bdf578081fd5b5035919050565b600060208284031215610bf7578081fd5b5051919050565b60008060408385031215610c10578182fd5b50508035926020909101359150565b600060808201868352602060808185015281875180845260a0860191508289019350845b81811015610c685784516001600160a01b031683529383019391830191600101610c43565b50506001600160a01b039690961660408501525050506060015292915050565b60008219821115610c9b57610c9b610d11565b500190565b600082610cbb57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615610cda57610cda610d11565b500290565b600082821015610cf157610cf1610d11565b500390565b6000600019821415610d0a57610d0a610d11565b5060010190565b634e487b7160e01b600052601160045260246000fdfea264697066735822122065c99dc31ef0b12a8d268d65bbcea64f3b9ecb5dc68515cfdf68d8da98f5265764736f6c63430008040033

Deployed ByteCode Sourcemap

10852:11129:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12522:56;;;;;;;;;;;;;;;;;;;7722:25:1;;;7710:2;7695:18;12522:56:0;;;;;;;;13797:80;;;;;;;;;;-1:-1:-1;13869:5:0;;;;;;;;;;;;-1:-1:-1;;;13869:5:0;;;;13797:80;;;;;;;:::i;14220:216::-;;;;;;;;;;-1:-1:-1;14220:216:0;;;;;:::i;:::-;;:::i;:::-;;;5264:14:1;;5257:22;5239:41;;5227:2;5212:18;14220:216:0;5194:92:1;21760:150:0;;;;;;;;;;-1:-1:-1;21760:150:0;;;;;:::i;:::-;;:::i;13527:88::-;;;;;;;;;;-1:-1:-1;13600:12:0;;13527:88;;18039:217;;;;;;;;;;-1:-1:-1;18039:217:0;;;;;:::i;:::-;;:::i;:::-;;12095:30;;;;;;;;;;;;;;;;14736:366;;;;;;;;;;-1:-1:-1;14736:366:0;;;;;:::i;:::-;;:::i;21433:142::-;;;;;;;;;;;;;:::i;21096:183::-;;;;;;;;;;-1:-1:-1;21096:183:0;;;;;:::i;:::-;;:::i;2658:103::-;;;;;;;;;;-1:-1:-1;2658:103:0;;;;;:::i;:::-;2713:4;2748:5;-1:-1:-1;;;;;2737:16:0;;;2748:5;;2737:16;;2658:103;13621:80;;;;;;;;;;-1:-1:-1;13621:80:0;;11490:1;9141:36:1;;9129:2;9114:18;13621:80:0;9096:87:1;14445:117:0;;;;;;;;;;-1:-1:-1;14445:117:0;;;;;:::i;:::-;;:::i;20352:120::-;;;;;;;;;;-1:-1:-1;20352:120:0;;;;;:::i;:::-;;:::i;12485:30::-;;;;;;;;;;-1:-1:-1;12485:30:0;;;;;;;;13967:105;;;;;;;;;;-1:-1:-1;13967:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;14051:18:0;14033:7;14051:18;;;:9;:18;;;;;;;13967:105;11655:59;;;;;;;;;;;;;;;;20776:146;;;;;;;;;;-1:-1:-1;20776:146:0;;;;;:::i;:::-;;:::i;11561:52::-;;;;;;;;;;;;;;;;15191:149;;;;;;;;;;-1:-1:-1;15191:149:0;;;;;:::i;:::-;;:::i;13883:78::-;;;;;;;;;;-1:-1:-1;13935:7:0;13953:5;-1:-1:-1;;;;;13953:5:0;13883:78;;;-1:-1:-1;;;;;3661:32:1;;;3643:51;;3631:2;3616:18;13883:78:0;3598:102:1;20627:143:0;;;;;;;;;;-1:-1:-1;20627:143:0;;;;;:::i;:::-;;:::i;13707:84::-;;;;;;;;;;-1:-1:-1;13781:7:0;;;;;;;;;;;;-1:-1:-1;;;13781:7:0;;;;13707:84;;21288:136;;;;;;;;;;-1:-1:-1;21288:136:0;;;;;:::i;:::-;;:::i;12377:19::-;;;;;;;;;;-1:-1:-1;12377:19:0;;;;-1:-1:-1;;;;;12377:19:0;;;14571:156;;;;;;;;;;-1:-1:-1;14571:156:0;;;;;:::i;:::-;;:::i;2497:94::-;;;;;;;;;;-1:-1:-1;2497:94:0;;;;;:::i;:::-;;:::i;12173:36::-;;;;;;;;;;-1:-1:-1;12173:36:0;;;;-1:-1:-1;;;;;12173:36:0;;;21584:167;;;;;;;;;;-1:-1:-1;21584:167:0;;;;;:::i;:::-;;:::i;14078:133::-;;;;;;;;;;-1:-1:-1;14078:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;14180:19:0;;;14162:7;14180:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;14078:133;20931:156;;;;;;;;;;-1:-1:-1;20931:156:0;;;;;:::i;:::-;;:::i;12216:35::-;;;;;;;;;;-1:-1:-1;12216:35:0;;;;-1:-1:-1;;;;;12216:35:0;;;3060:173;;;;;;;;;;-1:-1:-1;3060:173:0;;;;;:::i;:::-;;:::i;19996:347::-;;;;;;;;;;-1:-1:-1;19996:347:0;;;;;:::i;:::-;;:::i;20481:128::-;;;;;;;;;;-1:-1:-1;20481:128:0;;;;;:::i;:::-;;:::i;12346:24::-;;;;;;;;;;-1:-1:-1;12346:24:0;;;;-1:-1:-1;;;;;12346:24:0;;;2833:107;;;;;;;;;;-1:-1:-1;2833:107:0;;;;;:::i;:::-;;:::i;14220:216::-;14324:10;14295:4;14312:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;14312:32:0;;;;;;;;;;:41;;;14369:37;14295:4;;14312:32;;14369:37;;;;14347:6;7722:25:1;;7710:2;7695:18;;7677:76;14369:37:0;;;;;;;;-1:-1:-1;14424:4:0;14220:216;;;;:::o;21760:150::-;21840:4;21896:6;21864:29;21884:8;21864:19;:29::i;:::-;:38;;21760:150;-1:-1:-1;;;21760:150:0:o;18039:217::-;2713:4;2748:5;-1:-1:-1;;;;;2748:5:0;2219:10;2737:16;2203:38;;;;-1:-1:-1;;;2203:38:0;;;;;;;:::i;:::-;;;;;;;;;18182:20:::1;::::0;18142:21:::1;::::0;-1:-1:-1;;;;;18182:20:0::1;18174:74;18244:3;18213:28;18225:16:::0;18142:21;18213:28:::1;:::i;:::-;:34;;;;:::i;:::-;18174:74;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;2243:1;18039:217:::0;:::o;14736:366::-;14891:12;;-1:-1:-1;;;;;14856:19:0;;14836:4;14856:19;;;:11;:19;;;;;;;;14876:10;14856:31;;;;;;;;14836:4;;14856:47;14853:181;;14953:69;;;;;;;;;;;-1:-1:-1;;;14953:69:0;;;;;;;;-1:-1:-1;;;;;14953:19:0;;-1:-1:-1;14953:19:0;;;:11;:19;;;;;14973:10;14953:31;;;;;;;;;;:69;;14989:6;;14953:35;:69::i;:::-;-1:-1:-1;;;;;14919:19:0;;;;;;:11;:19;;;;;;;;14939:10;14919:31;;;;;;;:103;14853:181;15054:40;15068:6;15076:9;15087:6;15054:13;:40::i;:::-;15047:47;;14736:366;;;;;;:::o;21433:142::-;21561:4;;-1:-1:-1;;;;;21561:4:0;21486:7;14051:18;;;:9;:18;;;;;;21513:54;;21540:4;;-1:-1:-1;;;;;21540:4:0;14033:7;14051:18;;;:9;:18;;;;;;21513:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;21506:61;;21433:142;:::o;21096:183::-;2381:24;2394:10;2381:12;:24::i;:::-;2373:48;;;;-1:-1:-1;;;2373:48:0;;;;;;;:::i;:::-;21206:11:::1;::::0;:65:::1;::::0;-1:-1:-1;;;21206:65:0;;::::1;::::0;::::1;8920:25:1::0;;;8961:18;;;8954:34;;;-1:-1:-1;;;;;21206:11:0;;::::1;::::0;:35:::1;::::0;8893:18:1;;21206:65:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21096:183:::0;;:::o;14445:117::-;14500:4;14524:30;14532:7;14541:12;;14524:7;:30::i;:::-;14517:37;14445:117;-1:-1:-1;;14445:117:0:o;20352:120::-;2381:24;2394:10;2381:12;:24::i;:::-;2373:48;;;;-1:-1:-1;;;2373:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20436:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;20436:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20352:120::o;20776:146::-;2381:24;2394:10;2381:12;:24::i;:::-;2373:48;;;;-1:-1:-1;;;2373:48:0;;;;;;;:::i;:::-;20868:21:::1;:46:::0;;-1:-1:-1;;;;;;20868:46:0::1;-1:-1:-1::0;;;;;20868:46:0;;;::::1;::::0;;;::::1;::::0;;20776:146::o;15191:149::-;2713:4;2748:5;-1:-1:-1;;;;;2748:5:0;2219:10;2737:16;2203:38;;;;-1:-1:-1;;;2203:38:0;;;;;;;:::i;:::-;15329:3:::1;15310:14;15295:12;;:29;;;;:::i;:::-;15294:38;;;;:::i;:::-;15276:15;:56:::0;-1:-1:-1;15191:149:0:o;20627:143::-;2381:24;2394:10;2381:12;:24::i;:::-;2373:48;;;;-1:-1:-1;;;2373:48:0;;;;;;;:::i;:::-;20718:20:::1;:44:::0;;-1:-1:-1;;;;;;20718:44:0::1;-1:-1:-1::0;;;;;20718:44:0;;;::::1;::::0;;;::::1;::::0;;20627:143::o;21288:136::-;2381:24;2394:10;2381:12;:24::i;:::-;2373:48;;;;-1:-1:-1;;;2373:48:0;;;;;;;:::i;:::-;21378:6:::1;21372:3;:12;21364:21;;;::::0;::::1;;21396:14;:20:::0;21288:136::o;14571:156::-;14651:4;14675:44;14689:10;14701:9;14712:6;14675:13;:44::i;2497:94::-;2713:4;2748:5;-1:-1:-1;;;;;2748:5:0;2219:10;2737:16;2203:38;;;;-1:-1:-1;;;2203:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2557:19:0::1;;::::0;;;2579:4:::1;2557:19;::::0;;;;;;;:26;;-1:-1:-1;;2557:26:0::1;::::0;;::::1;::::0;;2497:94::o;21584:167::-;21652:7;21679:64;21720:22;:20;:22::i;:::-;21702:4;;-1:-1:-1;;;;;21702:4:0;14033:7;14051:18;;;:9;:18;;;;;;21679:36;;21692:22;;21712:1;21692:19;:22::i;:::-;21679:8;;:12;:36::i;:::-;:40;;:64::i;20931:156::-;2381:24;2394:10;2381:12;:24::i;:::-;2373:48;;;;-1:-1:-1;;;2373:48:0;;;;;;;:::i;:::-;21023:11:::1;:22:::0;;-1:-1:-1;;21023:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;21056:13:::1;:23:::0;20931:156::o;3060:173::-;2713:4;2748:5;-1:-1:-1;;;;;2748:5:0;2219:10;2737:16;2203:38;;;;-1:-1:-1;;;2203:38:0;;;;;;;:::i;:::-;3136:5:::1;:11:::0;;-1:-1:-1;;;;;;3136:11:0::1;-1:-1:-1::0;;;;;3136:11:0;::::1;::::0;;::::1;::::0;;3158:19;;;-1:-1:-1;3158:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;3158:26:0::1;::::0;;::::1;::::0;;;3200:25;;3643:51:1;;;3200:25:0::1;::::0;3616:18:1;3200:25:0::1;;;;;;;3060:173:::0;:::o;19996:347::-;2381:24;2394:10;2381:12;:24::i;:::-;2373:48;;;;-1:-1:-1;;;2373:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20093:23:0;::::1;20111:4;20093:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;20130:4:0::1;::::0;-1:-1:-1;;;;;20120:14:0;;::::1;20130:4:::0;::::1;20120:14;;20093:41;20085:50;;;::::0;::::1;;-1:-1:-1::0;;;;;20146:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;20146:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;20190:146:::1;;20215:11;::::0;:31:::1;::::0;-1:-1:-1;;;20215:31:0;;-1:-1:-1;;;;;4121:32:1;;;20215:31:0::1;::::0;::::1;4103:51:1::0;20215:11:0::1;4170:18:1::0;;;4163:34;20215:11:0;;::::1;::::0;:20:::1;::::0;4076:18:1;;20215:31:0::1;4058:145:1::0;20190:146:0::1;20277:11;::::0;-1:-1:-1;;;;;20306:17:0;;::::1;20277:11;20306:17:::0;;;:9:::1;:17;::::0;;;;;;;20277:47;;-1:-1:-1;;;20277:47:0;;::::1;::::0;::::1;4103:51:1::0;;;;4170:18;;;4163:34;20277:11:0;::::1;::::0;:20:::1;::::0;4076:18:1;;20277:47:0::1;4058:145:1::0;20190:146:0::1;19996:347:::0;;:::o;20481:128::-;2381:24;2394:10;2381:12;:24::i;:::-;2373:48;;;;-1:-1:-1;;;2373:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20569:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;20569:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20481:128::o;2833:107::-;-1:-1:-1;;;;;2913:19:0;2889:4;2913:19;;;:14;:19;;;;;;;;;2833:107::o;608:206::-;694:7;755:12;747:6;;;;739:29;;;;-1:-1:-1;;;739:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;790:5:0;;;608:206::o;15349:1497::-;15461:6;;15441:4;;15461:6;;15458:63;;;15477:41;15492:6;15500:9;15511:6;15477:14;:41::i;:::-;15470:48;;;;15458:63;-1:-1:-1;;;;;15567:22:0;;;;;;:14;:22;;;;;;;;15566:23;:53;;;;-1:-1:-1;;;;;;15593:26:0;;15614:4;15593:26;;15566:53;:84;;;;-1:-1:-1;15645:4:0;;-1:-1:-1;;;;;15624:26:0;;;15645:4;;15624:26;;15566:84;:105;;;;-1:-1:-1;15667:4:0;;-1:-1:-1;;;;;15654:17:0;;;15667:4;;15654:17;;15566:105;:142;;;;-1:-1:-1;15688:20:0;;-1:-1:-1;;;;;15675:33:0;;;15688:20;;15675:33;;15566:142;:180;;;;-1:-1:-1;15725:21:0;;-1:-1:-1;;;;;15712:34:0;;;15725:21;;15712:34;;15566:180;15562:372;;;-1:-1:-1;;;;;14051:18:0;;15762;14051;;;:9;:18;;;;;;15851:15;;15827:19;15840:6;14051:18;15827:19;:::i;:::-;15826:40;;15818:114;;;;-1:-1:-1;;;15818:114:0;;6673:2:1;15818:114:0;;;6655:21:1;6712:2;6692:18;;;6685:30;6751:34;6731:18;;;6724:62;6822:32;6802:18;;;6795:60;6872:19;;15818:114:0;6645:252:1;15818:114:0;15562:372;;15988:28;16001:6;16009;15988:12;:28::i;:::-;16074:16;:14;:16::i;:::-;16071:35;;;16093:10;:8;:10::i;:::-;16166:53;;;;;;;;;;;-1:-1:-1;;;16166:53:0;;;;;;;;-1:-1:-1;;;;;16166:17:0;;-1:-1:-1;16166:17:0;;;:9;:17;;;;;;;;:53;;16188:6;;16166:21;:53::i;:::-;-1:-1:-1;;;;;16146:17:0;;;;;;:9;:17;;;;;;;;:73;;;;17453:11;:19;;;;;;;;17452:20;16258:56;;16308:6;16258:56;;;16282:23;16290:6;16298;16282:7;:23::i;:::-;-1:-1:-1;;;;;16348:20:0;;;;;;:9;:20;;;;;;16233:81;;-1:-1:-1;16348:40:0;;16233:81;16348:24;:40::i;:::-;-1:-1:-1;;;;;16325:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;16435:24;;;;;:16;:24;;;;;;;16431:119;;16480:11;;-1:-1:-1;;;;;16509:17:0;;;16480:11;16509:17;;;:9;:17;;;;;;;;16480:47;;-1:-1:-1;;;16480:47:0;;;;;4103:51:1;;;;4170:18;;;4163:34;16480:11:0;;;:20;;4076:18:1;;16480:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16476:63;;-1:-1:-1;;;;;16567:27:0;;;;;;:16;:27;;;;;;;;16563:128;;16615:11;;-1:-1:-1;;;;;16647:20:0;;;16615:11;16647:20;;;:9;:20;;;;;;;;16615:53;;-1:-1:-1;;;16615:53:0;;;;;4103:51:1;;;;4170:18;;;4163:34;16615:11:0;;;:20;;4076:18:1;;16615:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16611:69;;16708:11;;16728:14;;16708:35;;-1:-1:-1;;;;;;16708:35:0;;-1:-1:-1;;;;;16708:11:0;;;;:19;;:35;;;;7722:25:1;;;7710:2;7695:18;;7677:76;16708:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16704:51;16790:9;-1:-1:-1;;;;;16773:43:0;16782:6;-1:-1:-1;;;;;16773:43:0;;16801:14;16773:43;;;;7722:25:1;;7710:2;7695:18;;7677:76;16773:43:0;;;;;;;;-1:-1:-1;16834:4:0;;15349:1497;-1:-1:-1;;;;15349:1497:0:o;290:98::-;348:7;375:5;379:1;375;:5;:::i;397:98::-;455:7;482:5;486:1;482;:5;:::i;504:98::-;562:7;589:5;593:1;589;:5;:::i;16852:330::-;16982:53;;;;;;;;;;;-1:-1:-1;;;16982:53:0;;;;;;;;-1:-1:-1;;;;;16982:17:0;;16945:4;16982:17;;;:9;:17;;;;;;;:53;;17004:6;;16982:21;:53::i;:::-;-1:-1:-1;;;;;16962:17:0;;;;;;;:9;:17;;;;;;:73;;;;17069:20;;;;;;;:32;;17094:6;17069:24;:32::i;:::-;-1:-1:-1;;;;;17046:20:0;;;;;;;:9;:20;;;;;;;:55;;;;17117:35;;;;;;;;;;17145:6;7722:25:1;;7710:2;7695:18;;7677:76;17117:35:0;;;;;;;;-1:-1:-1;17170:4:0;16852:330;;;;;:::o;17191:166::-;17288:12;;17278:6;:22;;:49;;;-1:-1:-1;;;;;;17304:23:0;;;;;;:15;:23;;;;;;;;17278:49;17270:79;;;;-1:-1:-1;;;17270:79:0;;6327:2:1;17270:79:0;;;6309:21:1;6366:2;6346:18;;;6339:30;-1:-1:-1;;;6385:18:1;;;6378:47;6442:18;;17270:79:0;6299:167:1;17833:197:0;17920:4;;17882;;-1:-1:-1;;;;;17920:4:0;17906:10;:18;;;;:38;;-1:-1:-1;17938:6:0;;;;17937:7;17906:38;:62;;;;-1:-1:-1;17957:11:0;;;;17906:62;:116;;;;-1:-1:-1;;18009:13:0;;17999:4;17981:24;;;;:9;:24;;;;;;:41;;;17833:197::o;18265:1722::-;12625:6;:13;;-1:-1:-1;;12625:13:0;12634:4;12625:13;;;18360:15:::1;::::0;18377:26:::1;::::0;12625:6;;18344:60:::1;::::0;:15:::1;:60::i;:::-;:79;;18411:12;;18344:79;;;18407:1;18344:79;18314:109;;18434:23;18460:59;18517:1;18460:52;18503:8;;18460:38;18478:19;18460:13;;:17;;:38;;;;:::i;:59::-;18434:85;;18530:20;18553:34;18571:15;18553:13;;:17;;:34;;;;:::i;:::-;18625:16;::::0;;18639:1:::1;18625:16:::0;;;;;::::1;::::0;;18530:57;;-1:-1:-1;18601:21:0::1;::::0;18625:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;18625:16:0::1;18601:40;;18670:4;18652;18657:1;18652:7;;;;;;-1:-1:-1::0;;;18652:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;18652:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;18696:4:::1;::::0;18686:7;;18696:4;::::1;::::0;18686;;18696;;18686:7;::::1;;;-1:-1:-1::0;;;18686:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;18686:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;18773:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;18773:188:0;;18738:21:::1;::::0;18773:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;18845:12;;18714:21:::1;::::0;18888:4;;18915::::1;::::0;18935:15:::1;::::0;18773:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18975:17;18995:40;19021:13;18995:21;:25;;:40;;;;:::i;:::-;18975:60:::0;-1:-1:-1;19049:19:0::1;19071:40;19084:26;:19:::0;19108:1:::1;19084:23;:26::i;:::-;19071:8;::::0;;:12:::1;:40::i;:::-;19049:62:::0;-1:-1:-1;19125:26:0::1;19154:58;19210:1;19154:51;19049:62:::0;19154:51;:9;19168:19;19154:13:::1;:34::i;:58::-;19125:87;;19223:27;19253:45;19286:11;19253:28;19267:13;;19253:9;:13;;:28;;;;:::i;:45::-;19223:75;;19309:26;19338:44;19370:11;19338:27;19352:12;;19338:9;:13;;:27;;;;:::i;:44::-;19309:73;;19400:11;;;;;;;;;-1:-1:-1::0;;;;;19400:11:0::1;-1:-1:-1::0;;;;;19400:19:0::1;;19427;19400:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;19500:20:0::1;::::0;19492:77:::1;::::0;19472:15:::1;::::0;-1:-1:-1;;;;;19500:20:0::1;::::0;19559:5:::1;::::0;19534:18;;19472:15;19492:77;19472:15;19492:77;19534:18;19500:20;19559:5;19492:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;19596:5:0::1;::::0;-1:-1:-1;;19618:19:0;;;-1:-1:-1;19615:365:0::1;;19653:6;::::0;19827:21:::1;::::0;19653:244:::1;::::0;-1:-1:-1;;;19653:244:0;;19729:4:::1;19653:244;::::0;::::1;4828:34:1::0;4878:18;;;4871:34;;;19653:6:0::1;4921:18:1::0;;;4914:34;;;4964:18;;;4957:34;-1:-1:-1;;;;;19827:21:0;;::::1;5007:19:1::0;;;5000:44;19867:15:0::1;5060:19:1::0;;;5053:35;19653:6:0;::::1;::::0;:22:::1;::::0;19683:18;;4762:19:1;;19653:244:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;19920:48:0::1;::::0;;8920:25:1;;;8976:2;8961:18;;8954:34;;;19920:48:0::1;::::0;-1:-1:-1;8893:18:1;19920:48:0::1;;;;;;;19615:365;-1:-1:-1::0;;12643:6:0;:14;;-1:-1:-1;;12643:14:0;;;-1:-1:-1;;;;;;;;;18265:1722:0:o;17489:335::-;17556:7;17576:17;17596:40;17621:14;;17596:20;17607:8;;17596:6;:10;;:20;;;;:::i;:40::-;17695:4;17677:24;;;;:9;:24;;;;;;17576:60;;-1:-1:-1;17677:39:0;;17576:60;17677:28;:39::i;:::-;17668:4;17650:24;;;;:9;:24;;;;;;;:66;;;;17732:42;;-1:-1:-1;;;;;17732:42:0;;;;;;;17764:9;7722:25:1;;7710:2;7695:18;;7677:76;17732:42:0;;;;;;;;17795:21;:6;17806:9;17795:10;:21::i;:::-;17788:28;17489:335;-1:-1:-1;;;;17489:335:0:o;183:98::-;241:7;268:5;272:1;268;:5;:::i;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;108:2;60:114;;;:::o;179:257::-;238:6;291:2;279:9;270:7;266:23;262:32;259:2;;;312:6;304;297:22;259:2;356:9;343:23;375:31;400:5;375:31;:::i;711:398::-;779:6;787;840:2;828:9;819:7;815:23;811:32;808:2;;;861:6;853;846:22;808:2;905:9;892:23;924:31;949:5;924:31;:::i;:::-;974:5;-1:-1:-1;1031:2:1;1016:18;;1003:32;1044:33;1003:32;1044:33;:::i;:::-;1096:7;1086:17;;;798:311;;;;;:::o;1114:466::-;1191:6;1199;1207;1260:2;1248:9;1239:7;1235:23;1231:32;1228:2;;;1281:6;1273;1266:22;1228:2;1325:9;1312:23;1344:31;1369:5;1344:31;:::i;:::-;1394:5;-1:-1:-1;1451:2:1;1436:18;;1423:32;1464:33;1423:32;1464:33;:::i;:::-;1218:362;;1516:7;;-1:-1:-1;;;1570:2:1;1555:18;;;;1542:32;;1218:362::o;1585:325::-;1650:6;1658;1711:2;1699:9;1690:7;1686:23;1682:32;1679:2;;;1732:6;1724;1717:22;1679:2;1776:9;1763:23;1795:31;1820:5;1795:31;:::i;:::-;1845:5;-1:-1:-1;1869:35:1;1900:2;1885:18;;1869:35;:::i;:::-;1859:45;;1669:241;;;;;:::o;1915:325::-;1983:6;1991;2044:2;2032:9;2023:7;2019:23;2015:32;2012:2;;;2065:6;2057;2050:22;2012:2;2109:9;2096:23;2128:31;2153:5;2128:31;:::i;:::-;2178:5;2230:2;2215:18;;;;2202:32;;-1:-1:-1;;;2002:238:1:o;2245:258::-;2310:6;2318;2371:2;2359:9;2350:7;2346:23;2342:32;2339:2;;;2392:6;2384;2377:22;2339:2;2420:26;2436:9;2420:26;:::i;2508:190::-;2567:6;2620:2;2608:9;2599:7;2595:23;2591:32;2588:2;;;2641:6;2633;2626:22;2588:2;-1:-1:-1;2669:23:1;;2578:120;-1:-1:-1;2578:120:1:o;2703:258::-;2771:6;2779;2832:2;2820:9;2811:7;2807:23;2803:32;2800:2;;;2853:6;2845;2838:22;2800:2;-1:-1:-1;;2881:23:1;;;2951:2;2936:18;;;2923:32;;-1:-1:-1;2790:171:1:o;2966:316::-;3054:6;3062;3070;3123:2;3111:9;3102:7;3098:23;3094:32;3091:2;;;3144:6;3136;3129:22;3091:2;3178:9;3172:16;3162:26;;3228:2;3217:9;3213:18;3207:25;3197:35;;3272:2;3261:9;3257:18;3251:25;3241:35;;3081:201;;;;;:::o;5517:603::-;5629:4;5658:2;5687;5676:9;5669:21;5719:6;5713:13;5762:6;5757:2;5746:9;5742:18;5735:34;5787:4;5800:140;5814:6;5811:1;5808:13;5800:140;;;5909:14;;;5905:23;;5899:30;5875:17;;;5894:2;5871:26;5864:66;5829:10;;5800:140;;;5958:6;5955:1;5952:13;5949:2;;;6028:4;6023:2;6014:6;6003:9;5999:22;5995:31;5988:45;5949:2;-1:-1:-1;6104:2:1;6083:15;-1:-1:-1;;6079:29:1;6064:45;;;;6111:2;6060:54;;5638:482;-1:-1:-1;;;5638:482:1:o;6902:329::-;7104:2;7086:21;;;7143:1;7123:18;;;7116:29;-1:-1:-1;;;7176:2:1;7161:18;;7154:36;7222:2;7207:18;;7076:155::o;7236:335::-;7438:2;7420:21;;;7477:2;7457:18;;;7450:30;-1:-1:-1;;;7511:2:1;7496:18;;7489:41;7562:2;7547:18;;7410:161::o;7758:983::-;8020:4;8068:3;8057:9;8053:19;8099:6;8088:9;8081:25;8125:2;8163:6;8158:2;8147:9;8143:18;8136:34;8206:3;8201:2;8190:9;8186:18;8179:31;8230:6;8265;8259:13;8296:6;8288;8281:22;8334:3;8323:9;8319:19;8312:26;;8373:2;8365:6;8361:15;8347:29;;8394:4;8407:195;8421:6;8418:1;8415:13;8407:195;;;8486:13;;-1:-1:-1;;;;;8482:39:1;8470:52;;8577:15;;;;8542:12;;;;8518:1;8436:9;8407:195;;;-1:-1:-1;;;;;;;8658:32:1;;;;8653:2;8638:18;;8631:60;-1:-1:-1;;;8722:3:1;8707:19;8700:35;8619:3;8029:712;-1:-1:-1;;;8029:712:1:o;9188:128::-;9228:3;9259:1;9255:6;9252:1;9249:13;9246:2;;;9265:18;;:::i;:::-;-1:-1:-1;9301:9:1;;9236:80::o;9321:217::-;9361:1;9387;9377:2;;-1:-1:-1;;;9412:31:1;;9466:4;9463:1;9456:15;9494:4;9419:1;9484:15;9377:2;-1:-1:-1;9523:9:1;;9367:171::o;9543:168::-;9583:7;9649:1;9645;9641:6;9637:14;9634:1;9631:21;9626:1;9619:9;9612:17;9608:45;9605:2;;;9656:18;;:::i;:::-;-1:-1:-1;9696:9:1;;9595:116::o;9716:125::-;9756:4;9784:1;9781;9778:8;9775:2;;;9789:18;;:::i;:::-;-1:-1:-1;9826:9:1;;9765:76::o;9846:127::-;9907:10;9902:3;9898:20;9895:1;9888:31;9938:4;9935:1;9928:15;9962:4;9959:1;9952:15;9978:131;-1:-1:-1;;;;;10053:31:1;;10043:42;;10033:2;;10099:1;10096;10089:12;10033:2;10023:86;:::o

Swarm Source

ipfs://65c99dc31ef0b12a8d268d65bbcea64f3b9ecb5dc68515cfdf68d8da98f52657
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.