Contract 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x8d827a1a182bac3bae36def46781ae417bc2fb6f2860e1a599bba8509836e414Withdraw Sale Fu...119313902021-10-20 8:16:597 days 9 hrs ago0xe3eeaed5bc46b7902cafcf8595529486bc31ceb2 IN  0xdc6ae082b1f17453bd9396338e0e6d6114f637dc0 BNB0.00016537
0x9150d824bfc583ac3d77de45a12b463c7e546e9278ef049c9db9c9f38d442bb8Withdraw Sale Fu...119312782021-10-20 8:11:227 days 9 hrs ago0xe3eeaed5bc46b7902cafcf8595529486bc31ceb2 IN  0xdc6ae082b1f17453bd9396338e0e6d6114f637dc0 BNB0.00019756
0x3797aa7329bba561f7a388fd3341835a2be471a2b2c551cf87bb520258253f29Withdraw Sale Fu...119288222021-10-20 6:06:327 days 11 hrs ago0xe3eeaed5bc46b7902cafcf8595529486bc31ceb2 IN  0xdc6ae082b1f17453bd9396338e0e6d6114f637dc0 BNB0.00018627
0xdc5ff6e715b24e7b66496bf16ccbc4cfd3b3e95c0d04ae071ff73270d52453d8Withdraw Sale Fu...119285012021-10-20 5:50:297 days 11 hrs ago0xe3eeaed5bc46b7902cafcf8595529486bc31ceb2 IN  0xdc6ae082b1f17453bd9396338e0e6d6114f637dc0 BNB0.00019756
0x7466f0ec548468d88ec556f20ecafbe5923756bfb38a66bf1a111b49bb764208Withdraw Sale Fu...119284602021-10-20 5:48:267 days 11 hrs ago0xe3eeaed5bc46b7902cafcf8595529486bc31ceb2 IN  0xdc6ae082b1f17453bd9396338e0e6d6114f637dc0 BNB0.000116445
0xc72adac4de8b87deae7ad5de11052d130f2c7d5985203051b38bb34f17cf361dWithdraw Sale Fu...119282402021-10-20 5:37:267 days 11 hrs ago0xe3eeaed5bc46b7902cafcf8595529486bc31ceb2 IN  0xdc6ae082b1f17453bd9396338e0e6d6114f637dc0 BNB0.00019756
0x372d9efd78f10f3fb2f1f755571cb20b617ab4c15e6c36b69a8cdc5eafc4906cWithdraw Sale Fu...119282352021-10-20 5:37:117 days 11 hrs ago0xe3eeaed5bc46b7902cafcf8595529486bc31ceb2 IN  0xdc6ae082b1f17453bd9396338e0e6d6114f637dc0 BNB0.001084015
0x10a4b01604b9506b87bad604da8d53e6a9808802dbc04eff474ffd6221eed983Withdraw Unsold ...119281082021-10-20 5:30:507 days 11 hrs ago0xe3eeaed5bc46b7902cafcf8595529486bc31ceb2 IN  0xdc6ae082b1f17453bd9396338e0e6d6114f637dc0 BNB0.00012075
0xd36eb7f1f7cea4a430f058864b7d76252639ddb8f74d342a62864da321856548Update End Time119279972021-10-20 5:25:177 days 12 hrs ago0xe3eeaed5bc46b7902cafcf8595529486bc31ceb2 IN  0xdc6ae082b1f17453bd9396338e0e6d6114f637dc0 BNB0.00013722
0x73c914a41036350582c069f2e90ce6e5205942b7fe47351d49e3cd6461f7ffcdUpdate End Time119275902021-10-20 5:04:567 days 12 hrs ago0xe3eeaed5bc46b7902cafcf8595529486bc31ceb2 IN  0xdc6ae082b1f17453bd9396338e0e6d6114f637dc0 BNB0.00013722
0x07bf17bdd7e8ba4734475a69cb78b53d2cdb70acf75e2c8e0271948a544a9715Update End Time119274132021-10-20 4:56:057 days 12 hrs ago0xe3eeaed5bc46b7902cafcf8595529486bc31ceb2 IN  0xdc6ae082b1f17453bd9396338e0e6d6114f637dc0 BNB0.00013722
0xc33557a5b4641f73913c24516fa8726021333261677c1a42253d5b589a4d4005Buy Current Sale119105632021-10-19 14:21:458 days 3 hrs ago0xb3b51ee16195e1c5286474149a5b0a9727cb72cf IN  0xdc6ae082b1f17453bd9396338e0e6d6114f637dc0.5 BNB0.00229452
0x45e3ad4d98f9a97783c00ad77724394fc38f3dff5bcfe4ecfb8e7bc59ae3b3b4Buy Current Sale118285412021-10-16 17:37:4310 days 23 hrs ago0x01f47b1ab4b5d3f8c7e8e9a06eecffae7e21990d IN  0xdc6ae082b1f17453bd9396338e0e6d6114f637dc1 BNB0.00229452
0x64e25e81f672dcaf85f07d609dc67e5aabcdfc2e54938e3f407b7a52b99a18f8Buy Current Sale118091662021-10-16 1:22:5411 days 16 hrs ago0x020341b01ab573a7bd537b0b88fe8f4b4bc9bdd2 IN  0xdc6ae082b1f17453bd9396338e0e6d6114f637dc0.2 BNB0.00229452
0x09424b17351fb30d31361633e4ca6d7293810ce04819f4dec7caded42c1701c7Buy Current Sale117764452021-10-14 22:02:3312 days 19 hrs ago0xc06437610c1602dd6532b585c22f74b0f0f4e9a0 IN  0xdc6ae082b1f17453bd9396338e0e6d6114f637dc0.2 BNB0.00229452
0xcb544649731f87edf47b274bc3169c41094ee4ad3cda474f92b142f656de5f06Buy Current Sale117584882021-10-14 7:01:1413 days 10 hrs ago0x957df7eb1d1bf6b9c2d1fd732d096a43d2c60bf9 IN  0xdc6ae082b1f17453bd9396338e0e6d6114f637dc3 BNB0.0023404104
0x95bbef43cad585b8ba26cc29f4ac12981d3f88c00041ff0918b4ef41e629358bBuy Current Sale117551062021-10-14 4:11:5313 days 13 hrs ago0xe5694b2c8f5cbc1192b7171240776f212bf09427 IN  0xdc6ae082b1f17453bd9396338e0e6d6114f637dc3 BNB0.0023404104
0x5cc6734e9bf0905d15c23636955100f8676ebd4e74d6d6599ea164e11b05ac62Buy Current Sale117386982021-10-13 14:23:4314 days 3 hrs ago0xe9858619bc34ca3ebefe7842cf6c15eb0990b0cb IN  0xdc6ae082b1f17453bd9396338e0e6d6114f637dc0.4 BNB0.00229452
0xc7d8926ee8459dc636ba423e60713181f18fedbe3ebd0aa4fdbad1e7c075af19Buy Current Sale116912182021-10-11 22:19:2715 days 19 hrs ago0x518ab154a764959a3549a17e872ffd2170fc1ab2 IN  0xdc6ae082b1f17453bd9396338e0e6d6114f637dc1.8 BNB0.00229452
0x55937fe297a6c912635ed5d69e6d021d4603b6c2a2159beadc5718ad29444e34Buy Current Sale116869632021-10-11 18:41:0215 days 22 hrs ago0x3f7edd2b8c59654c5df31648b893baad37151075 IN  0xdc6ae082b1f17453bd9396338e0e6d6114f637dc3 BNB0.0023404104
0x26378e093d6b127380ad0758efef4465926478438514837d1de854d66174f1e2Buy Current Sale116804332021-10-11 12:40:3416 days 4 hrs ago0x5a2a7fd2dd582d188cac05294b290edab6189672 IN  0xdc6ae082b1f17453bd9396338e0e6d6114f637dc0.45 BNB0.00229452
0x03252e59b851742e3a30cc7be7395d9920877b69a1a1453dec4b36095b8cc304Buy Current Sale115860162021-10-08 5:44:1119 days 11 hrs ago0x72815dd9d1a7c99d5ad0854cb90250c3d4fe41a0 IN  0xdc6ae082b1f17453bd9396338e0e6d6114f637dc0.2 BNB0.00229452
0x1e9ea466fc1e7a956e9fd88258e429dd0aaf1033faf802cb60d84ad5a1bba206Buy Current Sale115624952021-10-07 10:07:0420 days 7 hrs ago0x15c31bc8109640935e86d38af7e01a013f41b69d IN  0xdc6ae082b1f17453bd9396338e0e6d6114f637dc1 BNB0.00036013
0x7d572f0aac3d8b011dc1a3d40583a532ed2b97bce70bb45ea3e1856ac4645a54Buy Current Sale115578522021-10-07 6:14:0920 days 11 hrs ago0xe66bb5ef7359906b46d2a99b10fbefb643526fa3 IN  0xdc6ae082b1f17453bd9396338e0e6d6114f637dc0.2 BNB0.00229452
0xe225053146c642bbc4a9b7e531aa3c94b2c0de75038e661f02d2f97795c6afa3Buy Current Sale115148682021-10-05 18:22:2521 days 23 hrs ago0xacba5c7a9dace0d0f2b42ec3fc67485800dc945c IN  0xdc6ae082b1f17453bd9396338e0e6d6114f637dc1 BNB0.0023404104
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x8d827a1a182bac3bae36def46781ae417bc2fb6f2860e1a599bba8509836e414119313902021-10-20 8:16:597 days 9 hrs ago 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc0xe3eeaed5bc46b7902cafcf8595529486bc31ceb242.27 BNB
0xc33557a5b4641f73913c24516fa8726021333261677c1a42253d5b589a4d4005119105632021-10-19 14:21:458 days 3 hrs ago 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc0.5 BNB
0x45e3ad4d98f9a97783c00ad77724394fc38f3dff5bcfe4ecfb8e7bc59ae3b3b4118285412021-10-16 17:37:4310 days 23 hrs ago 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc1 BNB
0x64e25e81f672dcaf85f07d609dc67e5aabcdfc2e54938e3f407b7a52b99a18f8118091662021-10-16 1:22:5411 days 16 hrs ago 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc0.2 BNB
0x09424b17351fb30d31361633e4ca6d7293810ce04819f4dec7caded42c1701c7117764452021-10-14 22:02:3312 days 19 hrs ago 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc0.2 BNB
0xcb544649731f87edf47b274bc3169c41094ee4ad3cda474f92b142f656de5f06117584882021-10-14 7:01:1413 days 10 hrs ago 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc3 BNB
0x95bbef43cad585b8ba26cc29f4ac12981d3f88c00041ff0918b4ef41e629358b117551062021-10-14 4:11:5313 days 13 hrs ago 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc3 BNB
0x5cc6734e9bf0905d15c23636955100f8676ebd4e74d6d6599ea164e11b05ac62117386982021-10-13 14:23:4314 days 3 hrs ago 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc0.4 BNB
0xc7d8926ee8459dc636ba423e60713181f18fedbe3ebd0aa4fdbad1e7c075af19116912182021-10-11 22:19:2715 days 19 hrs ago 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc1.8 BNB
0x55937fe297a6c912635ed5d69e6d021d4603b6c2a2159beadc5718ad29444e34116869632021-10-11 18:41:0215 days 22 hrs ago 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc3 BNB
0x26378e093d6b127380ad0758efef4465926478438514837d1de854d66174f1e2116804332021-10-11 12:40:3416 days 4 hrs ago 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc0.45 BNB
0x03252e59b851742e3a30cc7be7395d9920877b69a1a1453dec4b36095b8cc304115860162021-10-08 5:44:1119 days 11 hrs ago 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc0.2 BNB
0x1e9ea466fc1e7a956e9fd88258e429dd0aaf1033faf802cb60d84ad5a1bba206115624952021-10-07 10:07:0420 days 7 hrs ago 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc1 BNB
0x7d572f0aac3d8b011dc1a3d40583a532ed2b97bce70bb45ea3e1856ac4645a54115578522021-10-07 6:14:0920 days 11 hrs ago 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc0.2 BNB
0xe225053146c642bbc4a9b7e531aa3c94b2c0de75038e661f02d2f97795c6afa3115148682021-10-05 18:22:2521 days 23 hrs ago 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc1 BNB
0xd6000880473fa3ad1d3851dfe8fa2c670c67445f08be916867c15a7f577a87bf115064092021-10-05 11:19:0022 days 6 hrs ago 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc1 BNB
0xac4e42116b22d478784d891f25e7885a4de100a0f4938f3f6c67e8f3a416d076115013342021-10-05 7:05:1522 days 10 hrs ago 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc1 BNB
0x63ecb06a7b88725d3b6db0abe61091fb7b195b9af9d5e50acf85a97303ca6403114141652021-10-02 6:05:1825 days 11 hrs ago 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc2 BNB
0x711a428ad789f58e242977d36fc390723cabd7e986519e05167c2efbcb5360c3114139532021-10-02 5:54:4125 days 11 hrs ago 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc1 BNB
0x7ad4c91c5991a493679534d20a98cded05cb43d3bf09b9a000c66c1a1eff6640114135092021-10-02 5:32:0625 days 11 hrs ago 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc1 BNB
0x0c22996e9537eb3e8a323f660f689705dddb1ed61496cb615be244b40c45af45113976002021-10-01 16:05:3526 days 1 hr ago 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc1 BNB
0x56410dd0a6d03951561a8f5294fa8fd5571498caab6ba31bba634bd100a8db5d113483942021-09-29 22:39:4727 days 18 hrs ago 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc0.3 BNB
0xc269c0fd5924ba1b84ce23556082d51a6b0f0dfb3f33bccdc001c8a549ce86df113482202021-09-29 22:31:0527 days 18 hrs ago 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc0.2 BNB
0x3b951448fcb97281a8972994c12f90ba9a6dd6f4e45ffbbd4b584e635ecc3bc0113323402021-09-29 9:09:0828 days 8 hrs ago 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc0.26 BNB
0xd7355bb376f554c41c57c5e298de8764d4eba1b4f7913326bd8515e93a796a43113259092021-09-29 3:45:3028 days 13 hrs ago 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc 0xdc6ae082b1f17453bd9396338e0e6d6114f637dc0.2 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PrivateSale

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-09-20
*/

/* SPDX-License-Identifier: No License */

pragma solidity ^0.8.7;


abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;
    mapping(address => bool) private _admin;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _owner = _msgSender();
        _admin[_owner] = true;
        emit OwnershipTransferred(address(0), _owner);
    }

    function owner() external view returns (address) {
        return _owner;
    }

    function isAdminCheck(address addressToCheck) external view returns (bool) {
        return _admin[addressToCheck];
    } 

    function setAdmin(address addressToSet) external returns (string memory, address, bool) {
        _admin[addressToSet] = true;
        return("Admin status", addressToSet, _admin[addressToSet]);
    }

    function removeAdmin(address addressToRemove) external returns (string memory, address, bool) {
        _admin[addressToRemove] = false;
        return("Admin status", addressToRemove, _admin[addressToRemove]);
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "You are not the Owner!");
        _;
    }

    modifier onlyAdmin() {
        require(_admin[_msgSender()], "You are not an Admin!");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address _transferAddress) public virtual onlyOwner {
        emit OwnershipTransferred(_owner, _transferAddress);
        _owner = _transferAddress;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    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);
}

contract PrivateSale is Context, Ownable {
    struct Sale {
        uint256 saleID;
        address investor;
        uint256 tokenSaleDecimalCount;
        address tokenPurchased;
        address tokenContributed;
        uint256 purchased;
        bool claimed;
        uint256 nextClaim;
        uint256 saleStartTime;
        uint256 saleEndTime;
        bool isInvestor;
    }

    Sale[] public sales;
    mapping(address => bool) public investors;
    mapping(address => mapping(address => Sale)) public investorPurchased;
    uint256 public nextSaleID;
    uint256 public startTime;
    uint256 public endTime;
    uint256 public price;
    uint256 public tokenForSaleDecimalCount;
    address public tokenForSale;
    address public tokenForContribution;
    uint256 public availableTokens;
    uint256 public contributionAmount;
    uint256 public minPurchase;
    uint256 public maxPurchase;
    uint256 public softCap;
    uint256 public hardCap;
    bool public released = true;
    bool public claimeEnabled = false;
    bool public allInvestorsAllowed = false;
    string public name = "DSCAPE Sale!";
    event Origin(address indexed from, address indexed to, uint256 value);
    event VestingClaimed(address indexed tokenForSale, address indexed from, uint256 value);
    event TokenBought(address indexed tokenForSale, address indexed from, uint256 value);
    event AllTokensReleased(address indexed tokenAddress);
    event ContractWithdrawal(string msg);
    
    constructor() {
       emit Origin(address(0), _msgSender(), 0);
    }
    
    modifier saleActive() {
        require(
            (endTime > 0 && block.timestamp < endTime && availableTokens > 0 && contributionAmount < hardCap) || (endTime > 0 && availableTokens > 0 && contributionAmount < softCap), 
            "Sale is not active!");
        _;
    }
    
    modifier saleNotActive() {
        require((endTime != 0 && endTime <= block.timestamp) || released, 'Sale is already active!');
        _;
    }
    
    modifier saleEnded() {
        require(endTime > 0 && (block.timestamp >= endTime || availableTokens == 0), 'Sale has not ended!');
        tokenForSaleDecimalCount = 0;
        _;
    }
    
    modifier tokensNotReleased() {
        require(released == false, 'Tokens already released!');
        _;
    }
    
    modifier tokensReleased() {
        require(released == true, 'Tokens have not been released!');
        _;
    }
    
    modifier onlyInvestors() {
        require(investors[_msgSender()] == true || allInvestorsAllowed, 'Only investors!');
        _;
    }    
    
    modifier eligibleClaim(address _tokenAddressSale) {
        address sender = _msgSender();
        require(investorPurchased[_tokenAddressSale][sender].isInvestor, 'You are not eligible to claim!');
        bool investorClaimed = investorPurchased[_tokenAddressSale][sender].claimed;
        require(!investorClaimed, 'Tokens already claimed!');
        _;
    }
    
    function addWhitelist(address _investor) external onlyAdmin() {
        investors[_investor] = true;
    }    
    
    function removeWhitelist(address _investor) external onlyAdmin() {
        investors[_investor] = false;
    }      
    
    function addWhitelistGroup(address[] memory _investors) external onlyAdmin() {
    require(_investors.length > 1, "Enter more than 1 investor!");
    for(uint index = 0; index < _investors.length; index++) {
        address currentInvestor = _investors[index];
        investors[currentInvestor] = true;
    }
    }    
    
    function removeWhitelistGroup(address[] memory _investors) external onlyAdmin() {
    require(_investors.length > 1, "Enter more than 1 investor!");
    for(uint index = 0; index < _investors.length; index++) {
        address currentInvestor = _investors[index];
        investors[currentInvestor] = false;
    }
    }

    function allowAllInvestors(bool isAllAllowed) external onlyAdmin() {
        allInvestorsAllowed = isAllAllowed;    
    }    
 
// admin functions     
    function updateSaleName(string calldata _saleName) external onlyAdmin() {
        name = _saleName;   
    }        
 
    function updateSalePrice(uint256 _salePrice) external onlyAdmin() {
        price = _salePrice;   
    }    
    
    function updateEndTime(uint256 _endTimeInEpoch) external onlyAdmin() {
        endTime = _endTimeInEpoch;   
    }        
     
    function updateSoftCap(uint256 _softCap) external onlyAdmin() {
        softCap = _softCap;   
    }        
    
    function updateHardCap(uint256 _hardCap) external onlyAdmin() {
        hardCap = _hardCap;   
    }         
    
    function updateTokenSaleDecimals(uint8 _tokenForSaleDecimalCount) external onlyAdmin() saleNotActive() {
        tokenForSaleDecimalCount = _tokenForSaleDecimalCount;   
    }     

// admin functions
// dev functions   
 
    function updateAvailableTokens(uint256 _availableTokens) external onlyAdmin() {
        availableTokens = _availableTokens;   
    }        
    
    function updateMinPurchase(uint256 _minPurchase) external onlyAdmin() {
        minPurchase = _minPurchase;   
    }        
    
    function updateMaxPurchase(uint256 _maxPurchase) external onlyAdmin() {
        maxPurchase = _maxPurchase;   
    }             
    
    function updateTokensReleased(bool _isReleased) external onlyAdmin() {
        released = _isReleased;   
    }    
    
    function updateInvestorNextClaim(address _tokenAddressSale, address _investor, uint256 _nextClaimInEpoch) external onlyAdmin() {
        investorPurchased[_tokenAddressSale][_investor].nextClaim = _nextClaimInEpoch;   
    }

// dev functions     

    function start(
        uint256 _endDateInEpoch,
        uint256 _salePrice,
        uint256 _availableTokens,
        uint256 _minPurchase,
        uint256 _maxPurchase,
        uint256 _softCap,
        uint256 _hardCap,
        uint256 _tokenForSaleDecimalCount,
        address _tokenAddressSale,
        address _tokenAddressContribution) external onlyAdmin() saleNotActive() {
        require(_tokenForSaleDecimalCount > 0, "Token for sale decimal count must be set first!");
        require(_tokenAddressContribution != _tokenAddressSale, 'Enter a valid Token address for contribution!');
        require(_endDateInEpoch > 0 && _endDateInEpoch > block.timestamp, 'Enter a valid end date!');
        //possible bug, convert available token input to full decimal count when comparing with contract balance
        require(_availableTokens == IERC20(_tokenAddressSale).balanceOf(address(this)), 'Contract missing coins for sale!' );
        require(_availableTokens > 0 && _salePrice > 0, 'Cannot sell zero tokens or have zero price!');
        require(_minPurchase > 0 && _minPurchase < _maxPurchase, 'Minimum purchase amount must be greater than zero & less than max purchase!');
        require(_maxPurchase > 0, 'Max purchase must be greater than zero!');
        startTime = block.timestamp;
        endTime = _endDateInEpoch; 
        price = _salePrice;
        tokenForSale = _tokenAddressSale;
        tokenForSaleDecimalCount = _tokenForSaleDecimalCount;
        tokenForContribution = _tokenAddressContribution;
        availableTokens = _availableTokens;
        minPurchase = _minPurchase;
        maxPurchase = _maxPurchase;
        softCap = _softCap;
        hardCap = _hardCap;
        released = false;
        contributionAmount = 0;
    }

    /**
    * Allow deposits
    */
    receive() external payable {}

    function buyCurrentSale(uint256 _purchaseAmount) external payable onlyInvestors() saleActive() {
        address payable sender = payable(_msgSender());
        address payable reciever = payable(address(this));
        if(tokenForContribution == address(0)){
        _purchaseAmount = msg.value;
        }
        require(_purchaseAmount >= minPurchase && _purchaseAmount <= maxPurchase, 'Send an amount between minPurchase and maxPurchase limit!');
        uint256 _amountPurchased = _purchaseAmount / price;
        uint256 _amountPurchasedWithDecimals = _amountPurchased * (10 ** tokenForSaleDecimalCount);
        require(_amountPurchasedWithDecimals <= availableTokens, 'Not enough tokens left for sale');
        if(investorPurchased[tokenForSale][sender].isInvestor){
            uint256 investorSaleID = investorPurchased[tokenForSale][sender].saleID;
            investorPurchased[tokenForSale][sender].purchased += _amountPurchasedWithDecimals;
            Sale storage sale = sales[investorSaleID];
            sale.purchased += _amountPurchasedWithDecimals;
        }else{
            uint256 firstVest = endTime;
            investorPurchased[tokenForSale][sender] = Sale(nextSaleID,sender,tokenForSaleDecimalCount,tokenForSale,tokenForContribution,_amountPurchasedWithDecimals,false,firstVest,startTime,endTime,true);
            sales.push(investorPurchased[tokenForSale][sender]);
            nextSaleID++;
        }
        contributionAmount += _purchaseAmount;
        availableTokens -= _amountPurchasedWithDecimals;
        
        if(tokenForContribution == address(0)){
            reciever.transfer(_purchaseAmount);
        }else{
            IERC20(tokenForContribution).transferFrom(sender,address(this),_purchaseAmount);
        }
        emit TokenBought(tokenForSale,sender,_purchaseAmount);
    }
    

    function claim(address _tokenAddressSale) external eligibleClaim(_tokenAddressSale) {
        require(_tokenAddressSale != address(this), 'Enter address of token sold!');
        address sender = _msgSender();

        if(!claimeEnabled){
        require(investorPurchased[_tokenAddressSale][sender].nextClaim < block.timestamp, "Must wait for sale to end!");
        }

        uint256 investorAvailableClaim = investorPurchased[_tokenAddressSale][sender].purchased;

        require(investorAvailableClaim > 0, "No more tokens left to claim!");
        
        require(sendVestClaim(investorAvailableClaim,sender,_tokenAddressSale));
    }
    
    function sendVestClaim(uint256 investorAvailableClaim, address sender,address _tokenAddressSale) internal returns(bool){
        uint256 investorSaleID = investorPurchased[_tokenAddressSale][sender].saleID;
        investorPurchased[_tokenAddressSale][sender].claimed = true;
        Sale storage sale = sales[investorSaleID];
        sale.claimed = true;
        IERC20(_tokenAddressSale).transfer(sender,investorAvailableClaim);
        emit VestingClaimed(_tokenAddressSale,sender,investorAvailableClaim);
        return true;
    }
    
    function releaseAllBuyerTokens(address _tokenAddressSale) external onlyAdmin() saleEnded() tokensNotReleased() {
        require(_tokenAddressSale != address(this));
        for(uint i = 0; i < sales.length; i++) {
            Sale storage sale = sales[i];
            if(sale.tokenPurchased == _tokenAddressSale){
                uint256 _transferAmount = sale.purchased;
                bool investorClaimed = investorPurchased[_tokenAddressSale][sale.investor].claimed;
                    if(_transferAmount > 0 && !investorClaimed){
                        investorPurchased[_tokenAddressSale][sale.investor].claimed = true;
                        sendVestClaim(_transferAmount,sale.investor,_tokenAddressSale);
                    }
            }
        }
        released = true;
        emit AllTokensReleased(_tokenAddressSale);
    }    
    
    function releaseSingleBuyerTokens(address _tokenAddressSale, address _investor) external onlyAdmin(){
        require(_tokenAddressSale != address(this), 'Enter Token addresss of token sold!');
        bool investorClaimed = investorPurchased[_tokenAddressSale][_investor].claimed;
        require(!investorClaimed, 'Investor already claimed!');
        uint256 investorPurchasedAmount = investorPurchased[_tokenAddressSale][_investor].purchased;
        investorPurchased[_tokenAddressSale][_investor].claimed = true;
        sendVestClaim(investorPurchasedAmount,_investor,_tokenAddressSale);
    }
    
    function withdrawSaleFunds(address _tokenAddressContribution, address _receiver) external onlyAdmin() {
        require(_tokenAddressContribution != address(this));
        uint256 _totalContributionAmount;
        if(_tokenAddressContribution == address(0)){
        address payable _payableReceiver = payable(_receiver);
        _totalContributionAmount = address(this).balance;
        _payableReceiver.transfer(_totalContributionAmount);        
        }
        else{
        _totalContributionAmount = IERC20(_tokenAddressContribution).balanceOf(address(this));
        IERC20(_tokenAddressContribution).transfer(_receiver,_totalContributionAmount);
        }
        contributionAmount = 0;
        emit ContractWithdrawal("Contract funds withdrawn!");
    }
    
    function withdrawUnsoldTokens(address _tokenAddressSale, address _receiver) external onlyAdmin() tokensReleased(){
        require(_tokenAddressSale != address(this));
        uint256 _totalUnsoldAmount = IERC20(_tokenAddressSale).balanceOf(address(this));
        IERC20(_tokenAddressSale).transfer(_receiver,_totalUnsoldAmount);
        released = false;
        emit ContractWithdrawal("Contract funds withdrawn!");
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenAddress","type":"address"}],"name":"AllTokensReleased","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"msg","type":"string"}],"name":"ContractWithdrawal","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":"Origin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenForSale","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TokenBought","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"tokenForSale","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"VestingClaimed","type":"event"},{"inputs":[{"internalType":"address","name":"_investor","type":"address"}],"name":"addWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_investors","type":"address[]"}],"name":"addWhitelistGroup","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"allInvestorsAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"isAllAllowed","type":"bool"}],"name":"allowAllInvestors","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"availableTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_purchaseAmount","type":"uint256"}],"name":"buyCurrentSale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddressSale","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contributionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hardCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"investorPurchased","outputs":[{"internalType":"uint256","name":"saleID","type":"uint256"},{"internalType":"address","name":"investor","type":"address"},{"internalType":"uint256","name":"tokenSaleDecimalCount","type":"uint256"},{"internalType":"address","name":"tokenPurchased","type":"address"},{"internalType":"address","name":"tokenContributed","type":"address"},{"internalType":"uint256","name":"purchased","type":"uint256"},{"internalType":"bool","name":"claimed","type":"bool"},{"internalType":"uint256","name":"nextClaim","type":"uint256"},{"internalType":"uint256","name":"saleStartTime","type":"uint256"},{"internalType":"uint256","name":"saleEndTime","type":"uint256"},{"internalType":"bool","name":"isInvestor","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"investors","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addressToCheck","type":"address"}],"name":"isAdminCheck","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPurchase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minPurchase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextSaleID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddressSale","type":"address"}],"name":"releaseAllBuyerTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddressSale","type":"address"},{"internalType":"address","name":"_investor","type":"address"}],"name":"releaseSingleBuyerTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"released","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addressToRemove","type":"address"}],"name":"removeAdmin","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_investor","type":"address"}],"name":"removeWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_investors","type":"address[]"}],"name":"removeWhitelistGroup","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"sales","outputs":[{"internalType":"uint256","name":"saleID","type":"uint256"},{"internalType":"address","name":"investor","type":"address"},{"internalType":"uint256","name":"tokenSaleDecimalCount","type":"uint256"},{"internalType":"address","name":"tokenPurchased","type":"address"},{"internalType":"address","name":"tokenContributed","type":"address"},{"internalType":"uint256","name":"purchased","type":"uint256"},{"internalType":"bool","name":"claimed","type":"bool"},{"internalType":"uint256","name":"nextClaim","type":"uint256"},{"internalType":"uint256","name":"saleStartTime","type":"uint256"},{"internalType":"uint256","name":"saleEndTime","type":"uint256"},{"internalType":"bool","name":"isInvestor","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addressToSet","type":"address"}],"name":"setAdmin","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"softCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_endDateInEpoch","type":"uint256"},{"internalType":"uint256","name":"_salePrice","type":"uint256"},{"internalType":"uint256","name":"_availableTokens","type":"uint256"},{"internalType":"uint256","name":"_minPurchase","type":"uint256"},{"internalType":"uint256","name":"_maxPurchase","type":"uint256"},{"internalType":"uint256","name":"_softCap","type":"uint256"},{"internalType":"uint256","name":"_hardCap","type":"uint256"},{"internalType":"uint256","name":"_tokenForSaleDecimalCount","type":"uint256"},{"internalType":"address","name":"_tokenAddressSale","type":"address"},{"internalType":"address","name":"_tokenAddressContribution","type":"address"}],"name":"start","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenForContribution","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenForSale","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenForSaleDecimalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_transferAddress","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_availableTokens","type":"uint256"}],"name":"updateAvailableTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_endTimeInEpoch","type":"uint256"}],"name":"updateEndTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_hardCap","type":"uint256"}],"name":"updateHardCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddressSale","type":"address"},{"internalType":"address","name":"_investor","type":"address"},{"internalType":"uint256","name":"_nextClaimInEpoch","type":"uint256"}],"name":"updateInvestorNextClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxPurchase","type":"uint256"}],"name":"updateMaxPurchase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPurchase","type":"uint256"}],"name":"updateMinPurchase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_saleName","type":"string"}],"name":"updateSaleName","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_salePrice","type":"uint256"}],"name":"updateSalePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_softCap","type":"uint256"}],"name":"updateSoftCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_tokenForSaleDecimalCount","type":"uint8"}],"name":"updateTokenSaleDecimals","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isReleased","type":"bool"}],"name":"updateTokensReleased","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddressContribution","type":"address"},{"internalType":"address","name":"_receiver","type":"address"}],"name":"withdrawSaleFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddressSale","type":"address"},{"internalType":"address","name":"_receiver","type":"address"}],"name":"withdrawUnsoldTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6012805462ffffff1916600117905560c0604052600c60808190526b4453434150452053616c652160a01b60a09081526200003e9160139190620000ef565b503480156200004c57600080fd5b5033600080546001600160a01b0319166001600160a01b0392831690811782558152600160208190526040808320805460ff1916909217909155815490519216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3604051600080825233917fce086d4edb412305ff08bd6b0cc51dd39d6e76dd481898d0ac7b984a1ff8ff389060200160405180910390a3620001d2565b828054620000fd9062000195565b90600052602060002090601f0160209004810192826200012157600085556200016c565b82601f106200013c57805160ff19168380011785556200016c565b828001600101855582156200016c579182015b828111156200016c5782518255916020019190600101906200014f565b506200017a9291506200017e565b5090565b5b808211156200017a57600081556001016200017f565b600181811c90821680620001aa57607f821691505b60208210811415620001cc57634e487b7160e01b600052602260045260246000fd5b50919050565b6130a980620001e26000396000f3fe6080604052600436106102b25760003560e01c8063715018a6116101755780639b405a99116100dc578063b5f522f711610095578063f2fde38b1161006f578063f2fde38b146109b3578063f80f5dd5146109d3578063fa136e50146109f3578063fb86a40414610a1357600080fd5b8063b5f522f714610947578063d9a2295714610967578063e11bed7a1461097a57600080fd5b80639b405a99146107bb5780639ba06baf146107db578063a035b1fe146107fb578063a6fdee4914610811578063a88ad09614610831578063b06a420e1461092757600080fd5b80638da5cb5b1161012e5780638da5cb5b14610721578063906a26e01461073f5780639327100914610755578063941e98d714610775578063961325211461078b578063977b055b146107a557600080fd5b8063715018a61461067657806378c8cda71461068b57806378e97925146106ab5780637dbd4039146106c15780637ec0912e146106e1578063865f59971461070157600080fd5b806333b5b62e116102195780635fa0b65f116101d25780635fa0b65f1461057557806369bb4dc21461058b5780636ab3846b146105a15780636f7bc9be146105c1578063703df793146105f1578063704b6c021461061157600080fd5b806333b5b62e146104a85780633970f698146104be578063449a0a67146104f6578063555a86751461051657806357bb61be146105365780635d4eed2f1461055657600080fd5b80631e83409a1161026b5780631e83409a146103de5780631feaa80a146103fe5780632cfa3f0d1461041e5780632e96502c1461044e5780632fa0645d1461046e5780633197cbb61461049257600080fd5b8063011cce8b146102be57806301dda205146102e057806306fdde03146103005780630d58d68b1461032b5780631785f53c1461034b578063192e6aa4146103be57600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102de6102d9366004612b5c565b610a29565b005b3480156102ec57600080fd5b506102de6102fb366004612cd4565b610b14565b34801561030c57600080fd5b50610315610b48565b6040516103229190612df8565b60405180910390f35b34801561033757600080fd5b506102de610346366004612aed565b610bd6565b34801561035757600080fd5b506103af610366366004612acb565b6001600160a01b0381166000908152600160209081526040808320805460ff191690558051808201909152600c81526b41646d696e2073746174757360a01b9181019190915292565b60405161032293929190612e0b565b3480156103ca57600080fd5b506102de6103d9366004612cd4565b610de6565b3480156103ea57600080fd5b506102de6103f9366004612acb565b610e1a565b34801561040a57600080fd5b506102de610419366004612b5c565b611081565b34801561042a57600080fd5b5060125461043e9062010000900460ff1681565b6040519015158152602001610322565b34801561045a57600080fd5b506102de610469366004612cd4565b611162565b34801561047a57600080fd5b5061048460095481565b604051908152602001610322565b34801561049e57600080fd5b5061048460075481565b3480156104b457600080fd5b50610484600e5481565b3480156104ca57600080fd5b50600a546104de906001600160a01b031681565b6040516001600160a01b039091168152602001610322565b34801561050257600080fd5b506102de610511366004612aed565b611196565b34801561052257600080fd5b506102de610531366004612cd4565b6112f0565b34801561054257600080fd5b506102de610551366004612acb565b611324565b34801561056257600080fd5b5060125461043e90610100900460ff1681565b34801561058157600080fd5b50610484600d5481565b34801561059757600080fd5b50610484600c5481565b3480156105ad57600080fd5b506102de6105bc366004612cd4565b61155c565b3480156105cd57600080fd5b5061043e6105dc366004612acb565b60036020526000908152604090205460ff1681565b3480156105fd57600080fd5b506102de61060c366004612cd4565b611590565b34801561061d57600080fd5b506103af61062c366004612acb565b6001600160a01b038116600090815260016020818152604092839020805460ff1916831790558251808401909352600c83526b41646d696e2073746174757360a01b908301529092565b34801561068257600080fd5b506102de6115c4565b34801561069757600080fd5b506102de6106a6366004612acb565b611661565b3480156106b757600080fd5b5061048460065481565b3480156106cd57600080fd5b50600b546104de906001600160a01b031681565b3480156106ed57600080fd5b506102de6106fc366004612cd4565b6116b1565b34801561070d57600080fd5b506102de61071c366004612d88565b6116e5565b34801561072d57600080fd5b506000546001600160a01b03166104de565b34801561074b57600080fd5b5061048460105481565b34801561076157600080fd5b506102de610770366004612c28565b611782565b34801561078157600080fd5b5061048460055481565b34801561079757600080fd5b5060125461043e9060ff1681565b3480156107b157600080fd5b50610484600f5481565b3480156107c757600080fd5b506102de6107d6366004612c28565b6117c4565b3480156107e757600080fd5b506102de6107f6366004612c62565b61180f565b34801561080757600080fd5b5061048460085481565b34801561081d57600080fd5b506102de61082c366004612b20565b61184f565b34801561083d57600080fd5b506108c261084c366004612aed565b6004602081815260009384526040808520909152918352912080546001820154600283015460038401549484015460058501546006860154600787015460088801546009890154600a9099015497996001600160a01b039788169996989088169790951695939460ff938416949293919291168b565b604080519b8c526001600160a01b039a8b1660208d01528b019890985295881660608a015296909316608088015260a0870191909152151560c086015260e0850152610100840192909252610120830191909152151561014082015261016001610322565b34801561093357600080fd5b506102de610942366004612aed565b6118ad565b34801561095357600080fd5b506108c2610962366004612cd4565b611aa4565b6102de610975366004612cd4565b611b22565b34801561098657600080fd5b5061043e610995366004612acb565b6001600160a01b031660009081526001602052604090205460ff1690565b3480156109bf57600080fd5b506102de6109ce366004612acb565b612362565b3480156109df57600080fd5b506102de6109ee366004612acb565b612410565b3480156109ff57600080fd5b506102de610a0e366004612d06565b612463565b348015610a1f57600080fd5b5061048460115481565b3360009081526001602052604090205460ff16610a615760405162461bcd60e51b8152600401610a5890612e3e565b60405180910390fd5b6001815111610ab25760405162461bcd60e51b815260206004820152601b60248201527f456e746572206d6f7265207468616e203120696e766573746f722100000000006044820152606401610a58565b60005b8151811015610b10576000828281518110610ad257610ad2613036565b6020908102919091018101516001600160a01b03166000908152600390915260409020805460ff191690555080610b0881613005565b915050610ab5565b5050565b3360009081526001602052604090205460ff16610b435760405162461bcd60e51b8152600401610a5890612e3e565b601055565b60138054610b5590612fca565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8190612fca565b8015610bce5780601f10610ba357610100808354040283529160200191610bce565b820191906000526020600020905b815481529060010190602001808311610bb157829003601f168201915b505050505081565b3360009081526001602052604090205460ff16610c055760405162461bcd60e51b8152600401610a5890612e3e565b60125460ff161515600114610c5c5760405162461bcd60e51b815260206004820152601e60248201527f546f6b656e732068617665206e6f74206265656e2072656c65617365642100006044820152606401610a58565b6001600160a01b038216301415610c7257600080fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b158015610cb457600080fd5b505afa158015610cc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cec9190612ced565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb90604401602060405180830381600087803b158015610d3a57600080fd5b505af1158015610d4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d729190612c45565b506012805460ff191690556040517fe2b65058d61ba7e4df6e20db9ac2bb9999c360526acf1577a0cdbfcde1c8db3390610dd990602080825260199082015278436f6e74726163742066756e64732077697468647261776e2160381b604082015260600190565b60405180910390a1505050565b3360009081526001602052604090205460ff16610e155760405162461bcd60e51b8152600401610a5890612e3e565b600f55565b6001600160a01b0381166000908152600460209081526040808320338085529252909120600a015482919060ff16610e945760405162461bcd60e51b815260206004820152601e60248201527f596f7520617265206e6f7420656c696769626c6520746f20636c61696d2100006044820152606401610a58565b6001600160a01b0380831660009081526004602090815260408083209385168352929052206006015460ff168015610f0e5760405162461bcd60e51b815260206004820152601760248201527f546f6b656e7320616c726561647920636c61696d6564210000000000000000006044820152606401610a58565b6001600160a01b038416301415610f675760405162461bcd60e51b815260206004820152601c60248201527f456e7465722061646472657373206f6620746f6b656e20736f6c6421000000006044820152606401610a58565b6012543390610100900460ff16610fef576001600160a01b038086166000908152600460209081526040808320938516835292905220600701544211610fef5760405162461bcd60e51b815260206004820152601a60248201527f4d757374207761697420666f722073616c6520746f20656e64210000000000006044820152606401610a58565b6001600160a01b03808616600090815260046020908152604080832093851683529290522060050154806110655760405162461bcd60e51b815260206004820152601d60248201527f4e6f206d6f726520746f6b656e73206c65667420746f20636c61696d210000006044820152606401610a58565b6110708183886128c6565b61107957600080fd5b505050505050565b3360009081526001602052604090205460ff166110b05760405162461bcd60e51b8152600401610a5890612e3e565b60018151116111015760405162461bcd60e51b815260206004820152601b60248201527f456e746572206d6f7265207468616e203120696e766573746f722100000000006044820152606401610a58565b60005b8151811015610b1057600082828151811061112157611121613036565b6020908102919091018101516001600160a01b03166000908152600390915260409020805460ff19166001179055508061115a81613005565b915050611104565b3360009081526001602052604090205460ff166111915760405162461bcd60e51b8152600401610a5890612e3e565b600c55565b3360009081526001602052604090205460ff166111c55760405162461bcd60e51b8152600401610a5890612e3e565b6001600160a01b03821630141561122a5760405162461bcd60e51b815260206004820152602360248201527f456e74657220546f6b656e206164647265737373206f6620746f6b656e20736f6044820152626c642160e81b6064820152608401610a58565b6001600160a01b0380831660009081526004602090815260408083209385168352929052206006015460ff1680156112a45760405162461bcd60e51b815260206004820152601960248201527f496e766573746f7220616c726561647920636c61696d656421000000000000006044820152606401610a58565b6001600160a01b03838116600090815260046020908152604080832093861683529290522060058101546006909101805460ff191660011790556112e98184866128c6565b5050505050565b3360009081526001602052604090205460ff1661131f5760405162461bcd60e51b8152600401610a5890612e3e565b600e55565b3360009081526001602052604090205460ff166113535760405162461bcd60e51b8152600401610a5890612e3e565b60006007541180156113715750600754421015806113715750600c54155b6113b35760405162461bcd60e51b815260206004820152601360248201527253616c6520686173206e6f7420656e6465642160681b6044820152606401610a58565b600060095560125460ff161561140b5760405162461bcd60e51b815260206004820152601860248201527f546f6b656e7320616c72656164792072656c65617365642100000000000000006044820152606401610a58565b6001600160a01b03811630141561142157600080fd5b60005b6002548110156115175760006002828154811061144357611443613036565b60009182526020909120600b9091020160038101549091506001600160a01b03848116911614156115045760058101546001600160a01b03808516600090815260046020908152604080832060018701549094168352929052206006015460ff1681158015906114b1575080155b15611501576001600160a01b0380861660009081526004602090815260408083206001888101805487168652919093529220600601805460ff19169091179055546114ff91849116876128c6565b505b50505b508061150f81613005565b915050611424565b506012805460ff191660011790556040516001600160a01b038216907f97c01b83a794f595655ca09c739fbfac6568ba3e2062a8d2e9c5b8ca2241f8c590600090a250565b3360009081526001602052604090205460ff1661158b5760405162461bcd60e51b8152600401610a5890612e3e565b600755565b3360009081526001602052604090205460ff166115bf5760405162461bcd60e51b8152600401610a5890612e3e565b601155565b6000546001600160a01b031633146116175760405162461bcd60e51b8152602060048201526016602482015275596f7520617265206e6f7420746865204f776e65722160501b6044820152606401610a58565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b3360009081526001602052604090205460ff166116905760405162461bcd60e51b8152600401610a5890612e3e565b6001600160a01b03166000908152600360205260409020805460ff19169055565b3360009081526001602052604090205460ff166116e05760405162461bcd60e51b8152600401610a5890612e3e565b600855565b3360009081526001602052604090205460ff166117145760405162461bcd60e51b8152600401610a5890612e3e565b6007541580159061172757504260075411155b80611734575060125460ff165b61177a5760405162461bcd60e51b815260206004820152601760248201527653616c6520697320616c7265616479206163746976652160481b6044820152606401610a58565b60ff16600955565b3360009081526001602052604090205460ff166117b15760405162461bcd60e51b8152600401610a5890612e3e565b6012805460ff1916911515919091179055565b3360009081526001602052604090205460ff166117f35760405162461bcd60e51b8152600401610a5890612e3e565b60128054911515620100000262ff000019909216919091179055565b3360009081526001602052604090205460ff1661183e5760405162461bcd60e51b8152600401610a5890612e3e565b61184a60138383612a16565b505050565b3360009081526001602052604090205460ff1661187e5760405162461bcd60e51b8152600401610a5890612e3e565b6001600160a01b0392831660009081526004602090815260408083209490951682529290925291902060070155565b3360009081526001602052604090205460ff166118dc5760405162461bcd60e51b8152600401610a5890612e3e565b6001600160a01b0382163014156118f257600080fd5b60006001600160a01b0383166119445750604051479082906001600160a01b0382169083156108fc029084906000818181858888f1935050505015801561193d573d6000803e3d6000fd5b5050611a43565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a082319060240160206040518083038186803b15801561198357600080fd5b505afa158015611997573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bb9190612ced565b60405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390529192509084169063a9059cbb90604401602060405180830381600087803b158015611a0957600080fd5b505af1158015611a1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a419190612c45565b505b6000600d556040517fe2b65058d61ba7e4df6e20db9ac2bb9999c360526acf1577a0cdbfcde1c8db3390610dd990602080825260199082015278436f6e74726163742066756e64732077697468647261776e2160381b604082015260600190565b60028181548110611ab457600080fd5b60009182526020909120600b9091020180546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a909a0154989a506001600160a01b039788169996989588169790941695929460ff9283169491939192168b565b3360009081526003602052604090205460ff16151560011480611b4d575060125462010000900460ff165b611b8b5760405162461bcd60e51b815260206004820152600f60248201526e4f6e6c7920696e766573746f72732160881b6044820152606401610a58565b6000600754118015611b9e575060075442105b8015611bac57506000600c54115b8015611bbb5750601154600d54105b80611be457506000600754118015611bd557506000600c54115b8015611be45750601054600d54105b611c265760405162461bcd60e51b815260206004820152601360248201527253616c65206973206e6f74206163746976652160681b6044820152606401610a58565b600b54339030906001600160a01b0316611c3e573492505b600e548310158015611c525750600f548311155b611cc45760405162461bcd60e51b815260206004820152603960248201527f53656e6420616e20616d6f756e74206265747765656e206d696e50757263686160448201527f736520616e64206d61785075726368617365206c696d697421000000000000006064820152608401610a58565b600060085484611cd49190612e85565b90506000600954600a611ce79190612eea565b611cf19083612f94565b9050600c54811115611d455760405162461bcd60e51b815260206004820152601f60248201527f4e6f7420656e6f75676820746f6b656e73206c65667420666f722073616c65006044820152606401610a58565b600a80546001600160a01b039081166000908152600460209081526040808320938916835292905220015460ff1615611e0757600a546001600160a01b039081166000908152600460209081526040808320938816835292905290812080546005909101805491928492611dba908490612e6d565b92505081905550600060028281548110611dd657611dd6613036565b90600052602060002090600b0201905082816005016000828254611dfa9190612e6d565b9091555061220d92505050565b600060075490506040518061016001604052806005548152602001866001600160a01b031681526020016009548152602001600a60009054906101000a90046001600160a01b03166001600160a01b03168152602001600b60009054906101000a90046001600160a01b03166001600160a01b03168152602001838152602001600015158152602001828152602001600654815260200160075481526020016001151581525060046000600a60009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000876001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506040820151816002015560608201518160030160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060808201518160040160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a0820151816005015560c08201518160060160006101000a81548160ff02191690831515021790555060e082015181600701556101008201518160080155610120820151816009015561014082015181600a0160006101000a81548160ff021916908315150217905550905050600260046000600a60009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000876001600160a01b03166001600160a01b0316815260200190815260200160002090806001815401808255809150506001900390600052602060002090600b0201600090919091909150600082015481600001556001820160009054906101000a90046001600160a01b03168160010160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600282015481600201556003820160009054906101000a90046001600160a01b03168160030160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506004820160009054906101000a90046001600160a01b03168160040160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600582015481600501556006820160009054906101000a900460ff168160060160006101000a81548160ff021916908315150217905550600782015481600701556008820154816008015560098201548160090155600a820160009054906101000a900460ff1681600a0160006101000a81548160ff02191690831515021790555050506005600081548092919061220690613005565b9190505550505b84600d600082825461221f9190612e6d565b9250508190555080600c60008282546122389190612fb3565b9091555050600b546001600160a01b0316612289576040516001600160a01b0384169086156108fc029087906000818181858888f19350505050158015612283573d6000803e3d6000fd5b50612317565b600b546040516323b872dd60e01b81526001600160a01b03868116600483015230602483015260448201889052909116906323b872dd90606401602060405180830381600087803b1580156122dd57600080fd5b505af11580156122f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123159190612c45565b505b600a546040518681526001600160a01b038681169216907f9b24bd0884170cbce51f9f00df6b3f9aed2231e4086241d1d04687b42afdf7b99060200160405180910390a35050505050565b6000546001600160a01b031633146123b55760405162461bcd60e51b8152602060048201526016602482015275596f7520617265206e6f7420746865204f776e65722160501b6044820152606401610a58565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3360009081526001602052604090205460ff1661243f5760405162461bcd60e51b8152600401610a5890612e3e565b6001600160a01b03166000908152600360205260409020805460ff19166001179055565b3360009081526001602052604090205460ff166124925760405162461bcd60e51b8152600401610a5890612e3e565b600754158015906124a557504260075411155b806124b2575060125460ff165b6124f85760405162461bcd60e51b815260206004820152601760248201527653616c6520697320616c7265616479206163746976652160481b6044820152606401610a58565b600083116125605760405162461bcd60e51b815260206004820152602f60248201527f546f6b656e20666f722073616c6520646563696d616c20636f756e74206d757360448201526e74206265207365742066697273742160881b6064820152608401610a58565b816001600160a01b0316816001600160a01b031614156125d85760405162461bcd60e51b815260206004820152602d60248201527f456e74657220612076616c696420546f6b656e206164647265737320666f722060448201526c636f6e747269627574696f6e2160981b6064820152608401610a58565b60008a1180156125e75750428a115b6126335760405162461bcd60e51b815260206004820152601760248201527f456e74657220612076616c696420656e642064617465210000000000000000006044820152606401610a58565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a082319060240160206040518083038186803b15801561267257600080fd5b505afa158015612686573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126aa9190612ced565b88146126f85760405162461bcd60e51b815260206004820181905260248201527f436f6e7472616374206d697373696e6720636f696e7320666f722073616c65216044820152606401610a58565b6000881180156127085750600089115b6127685760405162461bcd60e51b815260206004820152602b60248201527f43616e6e6f742073656c6c207a65726f20746f6b656e73206f7220686176652060448201526a7a65726f2070726963652160a81b6064820152608401610a58565b60008711801561277757508587105b6127fd5760405162461bcd60e51b815260206004820152604b60248201527f4d696e696d756d20707572636861736520616d6f756e74206d7573742062652060448201527f67726561746572207468616e207a65726f2026206c657373207468616e206d6160648201526a782070757263686173652160a81b608482015260a401610a58565b6000861161285d5760405162461bcd60e51b815260206004820152602760248201527f4d6178207075726368617365206d7573742062652067726561746572207468616044820152666e207a65726f2160c81b6064820152608401610a58565b42600655600799909955600897909755600a80546001600160a01b039889166001600160a01b031991821617909155600991909155600b805498909716971696909617909455600c92909255600e55600f556010556011556012805460ff191690556000600d55565b6001600160a01b038181166000908152600460209081526040808320938616835292905290812080546006909101805460ff19166001179055600280548391908390811061291657612916613036565b600091825260209091206006600b90920201908101805460ff1916600117905560405163a9059cbb60e01b81526001600160a01b038781166004830152602482018990529192509085169063a9059cbb90604401602060405180830381600087803b15801561298457600080fd5b505af1158015612998573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129bc9190612c45565b50846001600160a01b0316846001600160a01b03167fee0c5b42495700baed9567e39dbb5e6943f8cca8293a3cc66f6c9b11f0f573ea88604051612a0291815260200190565b60405180910390a350600195945050505050565b828054612a2290612fca565b90600052602060002090601f016020900481019282612a445760008555612a8a565b82601f10612a5d5782800160ff19823516178555612a8a565b82800160010185558215612a8a579182015b82811115612a8a578235825591602001919060010190612a6f565b50612a96929150612a9a565b5090565b5b80821115612a965760008155600101612a9b565b80356001600160a01b0381168114612ac657600080fd5b919050565b600060208284031215612add57600080fd5b612ae682612aaf565b9392505050565b60008060408385031215612b0057600080fd5b612b0983612aaf565b9150612b1760208401612aaf565b90509250929050565b600080600060608486031215612b3557600080fd5b612b3e84612aaf565b9250612b4c60208501612aaf565b9150604084013590509250925092565b60006020808385031215612b6f57600080fd5b823567ffffffffffffffff80821115612b8757600080fd5b818501915085601f830112612b9b57600080fd5b813581811115612bad57612bad61304c565b8060051b604051601f19603f83011681018181108582111715612bd257612bd261304c565b604052828152858101935084860182860187018a1015612bf157600080fd5b600095505b83861015612c1b57612c0781612aaf565b855260019590950194938601938601612bf6565b5098975050505050505050565b600060208284031215612c3a57600080fd5b8135612ae681613062565b600060208284031215612c5757600080fd5b8151612ae681613062565b60008060208385031215612c7557600080fd5b823567ffffffffffffffff80821115612c8d57600080fd5b818501915085601f830112612ca157600080fd5b813581811115612cb057600080fd5b866020828501011115612cc257600080fd5b60209290920196919550909350505050565b600060208284031215612ce657600080fd5b5035919050565b600060208284031215612cff57600080fd5b5051919050565b6000806000806000806000806000806101408b8d031215612d2657600080fd5b8a35995060208b0135985060408b0135975060608b0135965060808b0135955060a08b0135945060c08b0135935060e08b01359250612d686101008c01612aaf565b9150612d776101208c01612aaf565b90509295989b9194979a5092959850565b600060208284031215612d9a57600080fd5b813560ff81168114612ae657600080fd5b6000815180845260005b81811015612dd157602081850181015186830182015201612db5565b81811115612de3576000602083870101525b50601f01601f19169290920160200192915050565b602081526000612ae66020830184612dab565b606081526000612e1e6060830186612dab565b6001600160a01b0394909416602083015250901515604090910152919050565b602080825260159082015274596f7520617265206e6f7420616e2041646d696e2160581b604082015260600190565b60008219821115612e8057612e80613020565b500190565b600082612ea257634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115612ee2578160001904821115612ec857612ec8613020565b80851615612ed557918102915b93841c9390800290612eac565b509250929050565b6000612ae68383600082612f0057506001612f8e565b81612f0d57506000612f8e565b8160018114612f235760028114612f2d57612f49565b6001915050612f8e565b60ff841115612f3e57612f3e613020565b50506001821b612f8e565b5060208310610133831016604e8410600b8410161715612f6c575081810a612f8e565b612f768383612ea7565b8060001904821115612f8a57612f8a613020565b0290505b92915050565b6000816000190483118215151615612fae57612fae613020565b500290565b600082821015612fc557612fc5613020565b500390565b600181811c90821680612fde57607f821691505b60208210811415612fff57634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561301957613019613020565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b801515811461307057600080fd5b5056fea26469706673582212201f818bf80297912015769cf16bd75a3f7e720b36f63133370739dcd445537ce764736f6c63430008070033

Deployed ByteCode Sourcemap

2503:13522:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6149:325;;;;;;;;;;-1:-1:-1;6149:325:0;;;;;:::i;:::-;;:::i;:::-;;7030:102;;;;;;;;;;-1:-1:-1;7030:102:0;;;;;:::i;:::-;;:::i;3618:35::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15592:430;;;;;;;;;;-1:-1:-1;15592:430:0;;;;;:::i;:::-;;:::i;1105:219::-;;;;;;;;;;-1:-1:-1;1105:219:0;;;;;:::i;:::-;-1:-1:-1;;;;;1210:23:0;;1184:7;1210:23;;;:6;:23;;;;;;;;:31;;-1:-1:-1;;1210:31:0;;;1252:64;;;;;;;;;;;-1:-1:-1;;;1252:64:0;;;;;;;;1105:219;;;;;;;;;;:::i;7801:118::-;;;;;;;;;;-1:-1:-1;7801:118:0;;;;;:::i;:::-;;:::i;12083:655::-;;;;;;;;;;-1:-1:-1;12083:655:0;;;;;:::i;:::-;;:::i;5812:321::-;;;;;;;;;;-1:-1:-1;5812:321:0;;;;;:::i;:::-;;:::i;3572:39::-;;;;;;;;;;-1:-1:-1;3572:39:0;;;;;;;;;;;;;;6192:14:1;;6185:22;6167:41;;6155:2;6140:18;3572:39:0;6027:187:1;7509:134:0;;;;;;;;;;-1:-1:-1;7509:134:0;;;;;:::i;:::-;;:::i;3175:39::-;;;;;;;;;;;;;;;;;;;16680:25:1;;;16668:2;16653:18;3175:39:0;16534:177:1;3119:22:0;;;;;;;;;;;;;;;;3374:26;;;;;;;;;;;;;;;;3221:27;;;;;;;;;;-1:-1:-1;3221:27:0;;;;-1:-1:-1;;;;;3221:27:0;;;;;;-1:-1:-1;;;;;5316:32:1;;;5298:51;;5286:2;5271:18;3221:27:0;5152:203:1;14181:607:0;;;;;;;;;;-1:-1:-1;14181:607:0;;;;;:::i;:::-;;:::i;7663:118::-;;;;;;;;;;-1:-1:-1;7663:118:0;;;;;:::i;:::-;;:::i;13305:860::-;;;;;;;;;;-1:-1:-1;13305:860:0;;;;;:::i;:::-;;:::i;3532:33::-;;;;;;;;;;-1:-1:-1;3532:33:0;;;;;;;;;;;3334;;;;;;;;;;;;;;;;3297:30;;;;;;;;;;;;;;;;6893:116;;;;;;;;;;-1:-1:-1;6893:116:0;;;;;:::i;:::-;;:::i;2932:41::-;;;;;;;;;;-1:-1:-1;2932:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7152:102;;;;;;;;;;-1:-1:-1;7152:102:0;;;;;:::i;:::-;;:::i;894:203::-;;;;;;;;;;-1:-1:-1;894:203:0;;;;;:::i;:::-;-1:-1:-1;;;;;993:20:0;;967:7;993:20;;;1016:4;993:20;;;;;;;;;:27;;-1:-1:-1;;993:27:0;;;;;1031:58;;;;;;;;;;;-1:-1:-1;;;1031:58:0;;;;;;894:203;1563:148;;;;;;;;;;;;;:::i;5682:112::-;;;;;;;;;;-1:-1:-1;5682:112:0;;;;;:::i;:::-;;:::i;3088:24::-;;;;;;;;;;;;;;;;3255:35;;;;;;;;;;-1:-1:-1;3255:35:0;;;;-1:-1:-1;;;;;3255:35:0;;;6771:106;;;;;;;;;;-1:-1:-1;6771:106:0;;;;;:::i;:::-;;:::i;7275:177::-;;;;;;;;;;-1:-1:-1;7275:177:0;;;;;:::i;:::-;;:::i;673:81::-;;;;;;;;;;-1:-1:-1;713:7:0;740:6;-1:-1:-1;;;;;740:6:0;673:81;;3440:22;;;;;;;;;;;;;;;;7944:113;;;;;;;;;;-1:-1:-1;7944:113:0;;;;;:::i;:::-;;:::i;3056:25::-;;;;;;;;;;;;;;;;3498:27;;;;;;;;;;-1:-1:-1;3498:27:0;;;;;;;;3407:26;;;;;;;;;;;;;;;;6482:124;;;;;;;;;;-1:-1:-1;6482:124:0;;;;;:::i;:::-;;:::i;6644:110::-;;;;;;;;;;-1:-1:-1;6644:110:0;;;;;:::i;:::-;;:::i;3148:20::-;;;;;;;;;;;;;;;;8073:226;;;;;;;;;;-1:-1:-1;8073:226:0;;;;;:::i;:::-;;:::i;2980:69::-;;;;;;;;;;-1:-1:-1;2980:69:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2980:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17132:25:1;;;-1:-1:-1;;;;;17231:15:1;;;17226:2;17211:18;;17204:43;17263:18;;17256:34;;;;17326:15;;;17321:2;17306:18;;17299:43;17379:15;;;;17373:3;17358:19;;17351:44;17184:3;17411:19;;17404:35;;;;17483:14;17476:22;17470:3;17455:19;;17448:51;17530:3;17515:19;;17508:35;17574:3;17559:19;;17552:35;;;;17618:3;17603:19;;17596:35;;;;17675:15;17668:23;17662:3;17647:19;;17640:52;17119:3;17104:19;2980:69:0;16716:982:1;14800:780:0;;;;;;;;;;-1:-1:-1;14800:780:0;;;;;:::i;:::-;;:::i;2906:19::-;;;;;;;;;;-1:-1:-1;2906:19:0;;;;;:::i;:::-;;:::i;10210:1859::-;;;;;;:::i;:::-;;:::i;762:123::-;;;;;;;;;;-1:-1:-1;762:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;855:22:0;831:4;855:22;;;:6;:22;;;;;;;;;762:123;1719:184;;;;;;;;;;-1:-1:-1;1719:184:0;;;;;:::i;:::-;;:::i;5558:108::-;;;;;;;;;;-1:-1:-1;5558:108:0;;;;;:::i;:::-;;:::i;8332:1794::-;;;;;;;;;;-1:-1:-1;8332:1794:0;;;;;:::i;:::-;;:::i;3469:22::-;;;;;;;;;;;;;;;;6149:325;187:10;1489:20;;;;:6;:20;;;;;;;;1481:54;;;;-1:-1:-1;;;1481:54:0;;;;;;;:::i;:::-;;;;;;;;;6264:1:::1;6244:10;:17;:21;6236:61;;;::::0;-1:-1:-1;;;6236:61:0;;16025:2:1;6236:61:0::1;::::0;::::1;16007:21:1::0;16064:2;16044:18;;;16037:30;16103:29;16083:18;;;16076:57;16150:18;;6236:61:0::1;15823:351:1::0;6236:61:0::1;6308:10;6304:163;6332:10;:17;6324:5;:25;6304:163;;;6371:23;6397:10;6408:5;6397:17;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;6425:26:0::1;6454:5;6425:26:::0;;;:9:::1;:26:::0;;;;;;:34;;-1:-1:-1;;6425:34:0::1;::::0;;-1:-1:-1;6351:7:0;::::1;::::0;::::1;:::i;:::-;;;;6304:163;;;;6149:325:::0;:::o;7030:102::-;187:10;1489:20;;;;:6;:20;;;;;;;;1481:54;;;;-1:-1:-1;;;1481:54:0;;;;;;;:::i;:::-;7103:7:::1;:18:::0;7030:102::o;3618:35::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15592:430::-;187:10;1489:20;;;;:6;:20;;;;;;;;1481:54;;;;-1:-1:-1;;;1481:54:0;;;;;;;:::i;:::-;4941:8:::1;::::0;::::1;;:16;;:8:::0;:16:::1;4933:59;;;::::0;-1:-1:-1;;;4933:59:0;;10771:2:1;4933:59:0::1;::::0;::::1;10753:21:1::0;10810:2;10790:18;;;10783:30;10849:32;10829:18;;;10822:60;10899:18;;4933:59:0::1;10569:354:1::0;4933:59:0::1;-1:-1:-1::0;;;;;15724:34:0;::::2;15753:4;15724:34;;15716:43;;;::::0;::::2;;15799:50;::::0;-1:-1:-1;;;15799:50:0;;15843:4:::2;15799:50;::::0;::::2;5298:51:1::0;15770:26:0::2;::::0;-1:-1:-1;;;;;15799:35:0;::::2;::::0;::::2;::::0;5271:18:1;;15799:50:0::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15860:64;::::0;-1:-1:-1;;;15860:64:0;;-1:-1:-1;;;;;5940:32:1;;;15860:64:0::2;::::0;::::2;5922:51:1::0;5989:18;;;5982:34;;;15770:79:0;;-1:-1:-1;15860:34:0;;::::2;::::0;::::2;::::0;5895:18:1;;15860:64:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;15935:8:0::2;:16:::0;;-1:-1:-1;;15935:16:0::2;::::0;;15967:47:::2;::::0;::::2;::::0;::::2;::::0;13720:2:1;13702:21;;;13759:2;13739:18;;;13732:30;-1:-1:-1;;;13793:2:1;13778:18;;13771:55;13858:2;13843:18;;13518:349;15967:47:0::2;;;;;;;;15705:317;15592:430:::0;;:::o;7801:118::-;187:10;1489:20;;;;:6;:20;;;;;;;;1481:54;;;;-1:-1:-1;;;1481:54:0;;;;;;;:::i;:::-;7882:11:::1;:26:::0;7801:118::o;12083:655::-;-1:-1:-1;;;;;5287:36:0;;5239:14;5287:36;;;:17;:36;;;;;;;;187:10;5287:44;;;;;;;;:55;;;12148:17;;187:10;5287:55;;5279:98;;;;-1:-1:-1;;;5279:98:0;;11482:2:1;5279:98:0;;;11464:21:1;11521:2;11501:18;;;11494:30;11560:32;11540:18;;;11533:60;11610:18;;5279:98:0;11280:354:1;5279:98:0;-1:-1:-1;;;;;5411:36:0;;;5388:20;5411:36;;;:17;:36;;;;;;;;:44;;;;;;;;;:52;;;;;5482:16;;5474:52;;;;-1:-1:-1;;;5474:52:0;;8594:2:1;5474:52:0;;;8576:21:1;8633:2;8613:18;;;8606:30;8672:25;8652:18;;;8645:53;8715:18;;5474:52:0;8392:347:1;5474:52:0;-1:-1:-1;;;;;12186:34:0;::::1;12215:4;12186:34;;12178:75;;;::::0;-1:-1:-1;;;12178:75:0;;10414:2:1;12178:75:0::1;::::0;::::1;10396:21:1::0;10453:2;10433:18;;;10426:30;10492;10472:18;;;10465:58;10540:18;;12178:75:0::1;10212:352:1::0;12178:75:0::1;12310:13;::::0;187:10;;12310:13:::1;::::0;::::1;;;12306:152;;-1:-1:-1::0;;;;;12343:36:0;;::::1;;::::0;;;:17:::1;:36;::::0;;;;;;;:44;;::::1;::::0;;;;;;:54:::1;;::::0;12400:15:::1;-1:-1:-1::0;12335:111:0::1;;;::::0;-1:-1:-1;;;12335:111:0;;16381:2:1;12335:111:0::1;::::0;::::1;16363:21:1::0;16420:2;16400:18;;;16393:30;16459:28;16439:18;;;16432:56;16505:18;;12335:111:0::1;16179:350:1::0;12335:111:0::1;-1:-1:-1::0;;;;;12503:36:0;;::::1;12470:30;12503:36:::0;;;:17:::1;:36;::::0;;;;;;;:44;;::::1;::::0;;;;;;:54:::1;;::::0;12578:26;12570:68:::1;;;::::0;-1:-1:-1;;;12570:68:0;;7457:2:1;12570:68:0::1;::::0;::::1;7439:21:1::0;7496:2;7476:18;;;7469:30;7535:31;7515:18;;;7508:59;7584:18;;12570:68:0::1;7255:353:1::0;12570:68:0::1;12667:62;12681:22;12704:6;12711:17;12667:13;:62::i;:::-;12659:71;;;::::0;::::1;;12167:571;;5228:318:::0;;12083:655;;:::o;5812:321::-;187:10;1489:20;;;;:6;:20;;;;;;;;1481:54;;;;-1:-1:-1;;;1481:54:0;;;;;;;:::i;:::-;5924:1:::1;5904:10;:17;:21;5896:61;;;::::0;-1:-1:-1;;;5896:61:0;;16025:2:1;5896:61:0::1;::::0;::::1;16007:21:1::0;16064:2;16044:18;;;16037:30;16103:29;16083:18;;;16076:57;16150:18;;5896:61:0::1;15823:351:1::0;5896:61:0::1;5968:10;5964:162;5992:10;:17;5984:5;:25;5964:162;;;6031:23;6057:10;6068:5;6057:17;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;6085:26:0::1;;::::0;;;:9:::1;:26:::0;;;;;;:33;;-1:-1:-1;;6085:33:0::1;6114:4;6085:33;::::0;;-1:-1:-1;6011:7:0;::::1;::::0;::::1;:::i;:::-;;;;5964:162;;7509:134:::0;187:10;1489:20;;;;:6;:20;;;;;;;;1481:54;;;;-1:-1:-1;;;1481:54:0;;;;;;;:::i;:::-;7598:15:::1;:34:::0;7509:134::o;14181:607::-;187:10;1489:20;;;;:6;:20;;;;;;;;1481:54;;;;-1:-1:-1;;;1481:54:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14300:34:0;::::1;14329:4;14300:34;;14292:82;;;::::0;-1:-1:-1;;;14292:82:0;;12552:2:1;14292:82:0::1;::::0;::::1;12534:21:1::0;12591:2;12571:18;;;12564:30;12630:34;12610:18;;;12603:62;-1:-1:-1;;;12681:18:1;;;12674:33;12724:19;;14292:82:0::1;12350:399:1::0;14292:82:0::1;-1:-1:-1::0;;;;;14408:36:0;;::::1;14385:20;14408:36:::0;;;:17:::1;:36;::::0;;;;;;;:47;;::::1;::::0;;;;;;:55:::1;;::::0;::::1;;14482:16:::0;::::1;14474:54;;;::::0;-1:-1:-1;;;14474:54:0;;9298:2:1;14474:54:0::1;::::0;::::1;9280:21:1::0;9337:2;9317:18;;;9310:30;9376:27;9356:18;;;9349:55;9421:18;;14474:54:0::1;9096:349:1::0;14474:54:0::1;-1:-1:-1::0;;;;;14573:36:0;;::::1;14539:31;14573:36:::0;;;:17:::1;:36;::::0;;;;;;;:47;;::::1;::::0;;;;;;:57:::1;::::0;::::1;::::0;14641:55:::1;::::0;;::::1;:62:::0;;-1:-1:-1;;14641:62:0::1;14699:4;14641:62;::::0;;14714:66:::1;14573:57:::0;:47;:36;14714:13:::1;:66::i;:::-;;14281:507;;14181:607:::0;;:::o;7663:118::-;187:10;1489:20;;;;:6;:20;;;;;;;;1481:54;;;;-1:-1:-1;;;1481:54:0;;;;;;;:::i;:::-;7744:11:::1;:26:::0;7663:118::o;13305:860::-;187:10;1489:20;;;;:6;:20;;;;;;;;1481:54;;;;-1:-1:-1;;;1481:54:0;;;;;;;:::i;:::-;4618:1:::1;4608:7;;:11;:67;;;;;4643:7;;4624:15;:26;;:50;;;-1:-1:-1::0;4654:15:0::1;::::0;:20;4624:50:::1;4600:99;;;::::0;-1:-1:-1;;;4600:99:0;;10066:2:1;4600:99:0::1;::::0;::::1;10048:21:1::0;10105:2;10085:18;;;10078:30;-1:-1:-1;;;10124:18:1;;;10117:49;10183:18;;4600:99:0::1;9864:343:1::0;4600:99:0::1;4737:1;4710:24;:28:::0;4818:8:::2;::::0;::::2;;:17;4810:54;;;::::0;-1:-1:-1;;;4810:54:0;;7815:2:1;4810:54:0::2;::::0;::::2;7797:21:1::0;7854:2;7834:18;;;7827:30;7893:26;7873:18;;;7866:54;7937:18;;4810:54:0::2;7613:348:1::0;4810:54:0::2;-1:-1:-1::0;;;;;13435:34:0;::::3;13464:4;13435:34;;13427:43;;;::::0;::::3;;13485:6;13481:599;13501:5;:12:::0;13497:16;::::3;13481:599;;;13535:17;13555:5;13561:1;13555:8;;;;;;;;:::i;:::-;;::::0;;;::::3;::::0;;;::::3;::::0;;::::3;;13581:19;::::0;::::3;::::0;13555:8;;-1:-1:-1;;;;;;13581:40:0;;::::3;:19:::0;::::3;:40;13578:491;;;13667:14;::::0;::::3;::::0;-1:-1:-1;;;;;13723:36:0;;::::3;13641:23;13723:36:::0;;;:17:::3;:36;::::0;;;;;;;13760:13:::3;::::0;::::3;::::0;;;::::3;13723:51:::0;;;;;;:59:::3;;::::0;::::3;;13808:19:::0;;;;;:39:::3;;;13832:15;13831:16;13808:39;13805:249;;;-1:-1:-1::0;;;;;13875:36:0;;::::3;;::::0;;;:17:::3;:36;::::0;;;;;;;13937:4:::3;13912:13:::0;;::::3;::::0;;;::::3;13875:51:::0;;;;;;;;:59:::3;;:66:::0;;-1:-1:-1;;13875:66:0::3;::::0;;::::3;::::0;;13998:13;13968:62:::3;::::0;13982:15;;13998:13:::3;13893:17:::0;13968:13:::3;:62::i;:::-;;13805:249;13622:447;;13578:491;-1:-1:-1::0;13515:3:0;::::3;::::0;::::3;:::i;:::-;;;;13481:599;;;-1:-1:-1::0;14090:8:0::3;:15:::0;;-1:-1:-1;;14090:15:0::3;14101:4;14090:15;::::0;;14121:36:::3;::::0;-1:-1:-1;;;;;14121:36:0;::::3;::::0;::::3;::::0;14090:8:::3;::::0;14121:36:::3;13305:860:::0;:::o;6893:116::-;187:10;1489:20;;;;:6;:20;;;;;;;;1481:54;;;;-1:-1:-1;;;1481:54:0;;;;;;;:::i;:::-;6973:7:::1;:25:::0;6893:116::o;7152:102::-;187:10;1489:20;;;;:6;:20;;;;;;;;1481:54;;;;-1:-1:-1;;;1481:54:0;;;;;;;:::i;:::-;7225:7:::1;:18:::0;7152:102::o;1563:148::-;1372:6;;-1:-1:-1;;;;;1372:6:0;187:10;1372:22;1364:57;;;;-1:-1:-1;;;1364:57:0;;12201:2:1;1364:57:0;;;12183:21:1;12240:2;12220:18;;;12213:30;-1:-1:-1;;;12259:18:1;;;12252:52;12321:18;;1364:57:0;11999:346:1;1364:57:0;1670:1:::1;1654:6:::0;;1633:40:::1;::::0;-1:-1:-1;;;;;1654:6:0;;::::1;::::0;1633:40:::1;::::0;1670:1;;1633:40:::1;1701:1;1684:19:::0;;-1:-1:-1;;;;;;1684:19:0::1;::::0;;1563:148::o;5682:112::-;187:10;1489:20;;;;:6;:20;;;;;;;;1481:54;;;;-1:-1:-1;;;1481:54:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5758:20:0::1;5781:5;5758:20:::0;;;:9:::1;:20;::::0;;;;:28;;-1:-1:-1;;5758:28:0::1;::::0;;5682:112::o;6771:106::-;187:10;1489:20;;;;:6;:20;;;;;;;;1481:54;;;;-1:-1:-1;;;1481:54:0;;;;;;;:::i;:::-;6848:5:::1;:18:::0;6771:106::o;7275:177::-;187:10;1489:20;;;;:6;:20;;;;;;;;1481:54;;;;-1:-1:-1;;;1481:54:0;;;;;;;:::i;:::-;4453:7:::1;::::0;:12;;::::1;::::0;:42:::1;;;4480:15;4469:7;;:26;;4453:42;4452:56;;;-1:-1:-1::0;4500:8:0::1;::::0;::::1;;4452:56;4444:92;;;::::0;-1:-1:-1;;;4444:92:0;;11130:2:1;4444:92:0::1;::::0;::::1;11112:21:1::0;11169:2;11149:18;;;11142:30;-1:-1:-1;;;11188:18:1;;;11181:53;11251:18;;4444:92:0::1;10928:347:1::0;4444:92:0::1;7389:52:::2;;:24;:52:::0;7275:177::o;7944:113::-;187:10;1489:20;;;;:6;:20;;;;;;;;1481:54;;;;-1:-1:-1;;;1481:54:0;;;;;;;:::i;:::-;8024:8:::1;:22:::0;;-1:-1:-1;;8024:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;7944:113::o;6482:124::-;187:10;1489:20;;;;:6;:20;;;;;;;;1481:54;;;;-1:-1:-1;;;1481:54:0;;;;;;;:::i;:::-;6560:19:::1;:34:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;6560:34:0;;::::1;::::0;;;::::1;::::0;;6482:124::o;6644:110::-;187:10;1489:20;;;;:6;:20;;;;;;;;1481:54;;;;-1:-1:-1;;;1481:54:0;;;;;;;:::i;:::-;6727:16:::1;:4;6734:9:::0;;6727:16:::1;:::i;:::-;;6644:110:::0;;:::o;8073:226::-;187:10;1489:20;;;;:6;:20;;;;;;;;1481:54;;;;-1:-1:-1;;;1481:54:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8211:36:0;;::::1;;::::0;;;:17:::1;:36;::::0;;;;;;;:47;;;::::1;::::0;;;;;;;;;:57:::1;;:77:::0;8073:226::o;14800:780::-;187:10;1489:20;;;;:6;:20;;;;;;;;1481:54;;;;-1:-1:-1;;;1481:54:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14921:42:0;::::1;14958:4;14921:42;;14913:51;;;::::0;::::1;;14975:32;-1:-1:-1::0;;;;;15021:39:0;::::1;15018:459;;-1:-1:-1::0;15195:51:0::1;::::0;15163:21:::1;::::0;15115:9;;-1:-1:-1;;;;;15195:25:0;::::1;::::0;:51;::::1;;;::::0;15163:21;;15072:32:::1;15195:51:::0;15072:32;15195:51;15163:21;15195:25;:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;15061:205;15018:459;;;15318:58;::::0;-1:-1:-1;;;15318:58:0;;15370:4:::1;15318:58;::::0;::::1;5298:51:1::0;-1:-1:-1;;;;;15318:43:0;::::1;::::0;::::1;::::0;5271:18:1;;15318:58:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15387:78;::::0;-1:-1:-1;;;15387:78:0;;-1:-1:-1;;;;;5940:32:1;;;15387:78:0::1;::::0;::::1;5922:51:1::0;5989:18;;;5982:34;;;15291:85:0;;-1:-1:-1;15387:42:0;;::::1;::::0;::::1;::::0;5895:18:1;;15387:78:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15018:459;15508:1;15487:18;:22:::0;15525:47:::1;::::0;::::1;::::0;::::1;::::0;13720:2:1;13702:21;;;13759:2;13739:18;;;13732:30;-1:-1:-1;;;13793:2:1;13778:18;;13771:55;13858:2;13843:18;;13518:349;2906:19:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2906:19:0;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10210:1859::-;187:10;5068:23;;;;:9;:23;;;;;;;;:31;;:23;:31;;:54;;-1:-1:-1;5103:19:0;;;;;;;5068:54;5060:82;;;;-1:-1:-1;;;5060:82:0;;15681:2:1;5060:82:0;;;15663:21:1;15720:2;15700:18;;;15693:30;-1:-1:-1;;;15739:18:1;;;15732:45;15794:18;;5060:82:0;15479:339:1;5060:82:0;4180:1:::1;4170:7;;:11;:40;;;;;4203:7;;4185:15;:25;4170:40;:63;;;;;4232:1;4214:15;;:19;4170:63;:95;;;;;4258:7;;4237:18;;:28;4170:95;4169:169;;;;4281:1;4271:7;;:11;:34;;;;;4304:1;4286:15;;:19;4271:34;:66;;;;;4330:7;;4309:18;;:28;4271:66;4147:229;;;::::0;-1:-1:-1;;;4147:229:0;;12956:2:1;4147:229:0::1;::::0;::::1;12938:21:1::0;12995:2;12975:18;;;12968:30;-1:-1:-1;;;13014:18:1;;;13007:49;13073:18;;4147:229:0::1;12754:343:1::0;4147:229:0::1;10436:20:::2;::::0;187:10;;10416:4:::2;::::0;-1:-1:-1;;;;;10436:20:0::2;10433:88;;10500:9;10482:27;;10433:88;10558:11;;10539:15;:30;;:64;;;;;10592:11;;10573:15;:30;;10539:64;10531:134;;;::::0;-1:-1:-1;;;10531:134:0;;8168:2:1;10531:134:0::2;::::0;::::2;8150:21:1::0;8207:2;8187:18;;;8180:30;8246:34;8226:18;;;8219:62;8317:27;8297:18;;;8290:55;8362:19;;10531:134:0::2;7966:421:1::0;10531:134:0::2;10676:24;10721:5;;10703:15;:23;;;;:::i;:::-;10676:50;;10737:36;10802:24;;10796:2;:30;;;;:::i;:::-;10776:51;::::0;:16;:51:::2;:::i;:::-;10737:90;;10878:15;;10846:28;:47;;10838:91;;;::::0;-1:-1:-1;;;10838:91:0;;11841:2:1;10838:91:0::2;::::0;::::2;11823:21:1::0;11880:2;11860:18;;;11853:30;11919:33;11899:18;;;11892:61;11970:18;;10838:91:0::2;11639:355:1::0;10838:91:0::2;10961:12;::::0;;-1:-1:-1;;;;;10961:12:0;;::::2;10943:31;::::0;;;:17:::2;:31;::::0;;;;;;;:39;;::::2;::::0;;;;;;:50:::2;::::0;::::2;;10940:723;;;11052:12;::::0;-1:-1:-1;;;;;11052:12:0;;::::2;11009:22;11034:31:::0;;;:17:::2;:31;::::0;;;;;;;:39;;::::2;::::0;;;;;;;;:46;;11095:49:::2;::::0;;::::2;:81:::0;;11034:46;;11148:28;;11095:81:::2;::::0;11148:28;;11095:81:::2;:::i;:::-;;;;;;;;11191:17;11211:5;11217:14;11211:21;;;;;;;;:::i;:::-;;;;;;;;;;;11191:41;;11265:28;11247:4;:14;;;:46;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;10940:723:0::2;::::0;-1:-1:-1;;;10940:723:0::2;;11324:17;11344:7;;11324:27;;11408:150;;;;;;;;11413:10;;11408:150;;;;11424:6;-1:-1:-1::0;;;;;11408:150:0::2;;;;;11431:24;;11408:150;;;;11456:12;;;;;;;;;-1:-1:-1::0;;;;;11456:12:0::2;-1:-1:-1::0;;;;;11408:150:0::2;;;;;11469:20;;;;;;;;;-1:-1:-1::0;;;;;11469:20:0::2;-1:-1:-1::0;;;;;11408:150:0::2;;;;;11490:28;11408:150;;;;11519:5;11408:150;;;;;;11525:9;11408:150;;;;11535:9;;11408:150;;;;11545:7;;11408:150;;;;11553:4;11408:150;;;;::::0;11366:17:::2;:31;11384:12;;;;;;;;;-1:-1:-1::0;;;;;11384:12:0::2;-1:-1:-1::0;;;;;11366:31:0::2;-1:-1:-1::0;;;;;11366:31:0::2;;;;;;;;;;;;:39;11398:6;-1:-1:-1::0;;;;;11366:39:0::2;-1:-1:-1::0;;;;;11366:39:0::2;;;;;;;;;;;;:192;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;11366:192:0::2;;;;;-1:-1:-1::0;;;;;11366:192:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;11366:192:0::2;;;;;-1:-1:-1::0;;;;;11366:192:0::2;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;11366:192:0::2;;;;;-1:-1:-1::0;;;;;11366:192:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11573:5;11584:17;:31;11602:12;;;;;;;;;-1:-1:-1::0;;;;;11602:12:0::2;-1:-1:-1::0;;;;;11584:31:0::2;-1:-1:-1::0;;;;;11584:31:0::2;;;;;;;;;;;;:39;11616:6;-1:-1:-1::0;;;;;11584:39:0::2;-1:-1:-1::0;;;;;11584:39:0::2;;;;;;;;;;;;11573:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;11573:51:0::2;;;;;;;;;;-1:-1:-1::0;;;;;11573:51:0::2;;;;;-1:-1:-1::0;;;;;11573:51:0::2;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;11573:51:0::2;;;;;;;;;;-1:-1:-1::0;;;;;11573:51:0::2;;;;;-1:-1:-1::0;;;;;11573:51:0::2;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;11573:51:0::2;;;;;;;;;;-1:-1:-1::0;;;;;11573:51:0::2;;;;;-1:-1:-1::0;;;;;11573:51:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11639:10;;:12;;;;;;;;;:::i;:::-;;;;;;11309:354;10940:723;11695:15;11673:18;;:37;;;;;;;:::i;:::-;;;;;;;;11740:28;11721:15;;:47;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;11792:20:0::2;::::0;-1:-1:-1;;;;;11792:20:0::2;11789:209;;11842:34;::::0;-1:-1:-1;;;;;11842:17:0;::::2;::::0;:34;::::2;;;::::0;11860:15;;11842:34:::2;::::0;;;11860:15;11842:17;:34;::::2;;;;;;;;;;;;;::::0;::::2;;;;;;11789:209;;;11914:20;::::0;11907:79:::2;::::0;-1:-1:-1;;;11907:79:0;;-1:-1:-1;;;;;5626:15:1;;;11907:79:0::2;::::0;::::2;5608:34:1::0;11964:4:0::2;5658:18:1::0;;;5651:43;5710:18;;;5703:34;;;11914:20:0;;::::2;::::0;11907:41:::2;::::0;5543:18:1;;11907:79:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11789:209;12025:12;::::0;12013:48:::2;::::0;16680:25:1;;;-1:-1:-1;;;;;12013:48:0;;::::2;::::0;12025:12:::2;::::0;12013:48:::2;::::0;16668:2:1;16653:18;12013:48:0::2;;;;;;;10305:1764;;;;10210:1859:::0;:::o;1719:184::-;1372:6;;-1:-1:-1;;;;;1372:6:0;187:10;1372:22;1364:57;;;;-1:-1:-1;;;1364:57:0;;12201:2:1;1364:57:0;;;12183:21:1;12240:2;12220:18;;;12213:30;-1:-1:-1;;;12259:18:1;;;12252:52;12321:18;;1364:57:0;11999:346:1;1364:57:0;1834:6:::1;::::0;;1813:46:::1;::::0;-1:-1:-1;;;;;1813:46:0;;::::1;::::0;1834:6;::::1;::::0;1813:46:::1;::::0;::::1;1870:6;:25:::0;;-1:-1:-1;;;;;;1870:25:0::1;-1:-1:-1::0;;;;;1870:25:0;;;::::1;::::0;;;::::1;::::0;;1719:184::o;5558:108::-;187:10;1489:20;;;;:6;:20;;;;;;;;1481:54;;;;-1:-1:-1;;;1481:54:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5631:20:0::1;;::::0;;;:9:::1;:20;::::0;;;;:27;;-1:-1:-1;;5631:27:0::1;5654:4;5631:27;::::0;;5558:108::o;8332:1794::-;187:10;1489:20;;;;:6;:20;;;;;;;;1481:54;;;;-1:-1:-1;;;1481:54:0;;;;;;;:::i;:::-;4453:7:::1;::::0;:12;;::::1;::::0;:42:::1;;;4480:15;4469:7;;:26;;4453:42;4452:56;;;-1:-1:-1::0;4500:8:0::1;::::0;::::1;;4452:56;4444:92;;;::::0;-1:-1:-1;;;4444:92:0;;11130:2:1;4444:92:0::1;::::0;::::1;11112:21:1::0;11169:2;11149:18;;;11142:30;-1:-1:-1;;;11188:18:1;;;11181:53;11251:18;;4444:92:0::1;10928:347:1::0;4444:92:0::1;8770:1:::2;8742:25;:29;8734:89;;;::::0;-1:-1:-1;;;8734:89:0;;13304:2:1;8734:89:0::2;::::0;::::2;13286:21:1::0;13343:2;13323:18;;;13316:30;13382:34;13362:18;;;13355:62;-1:-1:-1;;;13433:18:1;;;13426:45;13488:19;;8734:89:0::2;13102:411:1::0;8734:89:0::2;8871:17;-1:-1:-1::0;;;;;8842:46:0::2;:25;-1:-1:-1::0;;;;;8842:46:0::2;;;8834:104;;;::::0;-1:-1:-1;;;8834:104:0;;9652:2:1;8834:104:0::2;::::0;::::2;9634:21:1::0;9691:2;9671:18;;;9664:30;9730:34;9710:18;;;9703:62;-1:-1:-1;;;9781:18:1;;;9774:43;9834:19;;8834:104:0::2;9450:409:1::0;8834:104:0::2;8975:1;8957:15;:19;:56;;;;;8998:15;8980;:33;8957:56;8949:92;;;::::0;-1:-1:-1;;;8949:92:0;;8946:2:1;8949:92:0::2;::::0;::::2;8928:21:1::0;8985:2;8965:18;;;8958:30;9024:25;9004:18;;;8997:53;9067:18;;8949:92:0::2;8744:347:1::0;8949:92:0::2;9194:50;::::0;-1:-1:-1;;;9194:50:0;;9238:4:::2;9194:50;::::0;::::2;5298:51:1::0;-1:-1:-1;;;;;9194:35:0;::::2;::::0;::::2;::::0;5271:18:1;;9194:50:0::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9174:16;:70;9166:116;;;::::0;-1:-1:-1;;;9166:116:0;;15320:2:1;9166:116:0::2;::::0;::::2;15302:21:1::0;;;15339:18;;;15332:30;15398:34;15378:18;;;15371:62;15450:18;;9166:116:0::2;15118:356:1::0;9166:116:0::2;9320:1;9301:16;:20;:38;;;;;9338:1;9325:10;:14;9301:38;9293:94;;;::::0;-1:-1:-1;;;9293:94:0;;14074:2:1;9293:94:0::2;::::0;::::2;14056:21:1::0;14113:2;14093:18;;;14086:30;14152:34;14132:18;;;14125:62;-1:-1:-1;;;14203:18:1;;;14196:41;14254:19;;9293:94:0::2;13872:407:1::0;9293:94:0::2;9421:1;9406:12;:16;:47;;;;;9441:12;9426;:27;9406:47;9398:135;;;::::0;-1:-1:-1;;;9398:135:0;;14486:2:1;9398:135:0::2;::::0;::::2;14468:21:1::0;14525:2;14505:18;;;14498:30;14564:34;14544:18;;;14537:62;14635:34;14615:18;;;14608:62;-1:-1:-1;;;14686:19:1;;;14679:42;14738:19;;9398:135:0::2;14284:479:1::0;9398:135:0::2;9567:1;9552:12;:16;9544:68;;;::::0;-1:-1:-1;;;9544:68:0;;7049:2:1;9544:68:0::2;::::0;::::2;7031:21:1::0;7088:2;7068:18;;;7061:30;7127:34;7107:18;;;7100:62;-1:-1:-1;;;7178:18:1;;;7171:37;7225:19;;9544:68:0::2;6847:403:1::0;9544:68:0::2;9635:15;9623:9;:27:::0;9661:7:::2;:25:::0;;;;9698:5:::2;:18:::0;;;;9727:12:::2;:32:::0;;-1:-1:-1;;;;;9727:32:0;;::::2;-1:-1:-1::0;;;;;;9727:32:0;;::::2;;::::0;;;9770:24:::2;:52:::0;;;;9833:20:::2;:48:::0;;;;;::::2;::::0;::::2;::::0;;;::::2;::::0;;;9892:15:::2;:34:::0;;;;9937:11:::2;:26:::0;9974:11:::2;:26:::0;10011:7:::2;:18:::0;10040:7:::2;:18:::0;10069:8:::2;:16:::0;;-1:-1:-1;;10069:16:0::2;::::0;;-1:-1:-1;10096:18:0::2;:22:::0;8332:1794::o;12750:543::-;-1:-1:-1;;;;;12905:36:0;;;12864:4;12905:36;;;:17;:36;;;;;;;;:44;;;;;;;;;;;:51;;12967:52;;;;:59;;-1:-1:-1;;12967:59:0;13022:4;12967:59;;;13057:5;:21;;12864:4;;13057:5;12905:51;;13057:21;;;;;;:::i;:::-;;;;;;;;;13089:12;13057:21;;;;;13089:12;;;:19;;-1:-1:-1;;13089:19:0;13104:4;13089:19;;;13119:65;;-1:-1:-1;;;13119:65:0;;-1:-1:-1;;;;;5940:32:1;;;13119:65:0;;;5922:51:1;5989:18;;;5982:34;;;13057:21:0;;-1:-1:-1;13119:34:0;;;;;;5895:18:1;;13119:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13233:6;-1:-1:-1;;;;;13200:63:0;13215:17;-1:-1:-1;;;;;13200:63:0;;13240:22;13200:63;;;;16680:25:1;;16668:2;16653:18;;16534:177;13200:63:0;;;;;;;;-1:-1:-1;13281:4:0;;12750:543;-1:-1:-1;;;;;12750:543:0:o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:173:1;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;:::-;333:39;192:186;-1:-1:-1;;;192:186:1:o;383:260::-;451:6;459;512:2;500:9;491:7;487:23;483:32;480:52;;;528:1;525;518:12;480:52;551:29;570:9;551:29;:::i;:::-;541:39;;599:38;633:2;622:9;618:18;599:38;:::i;:::-;589:48;;383:260;;;;;:::o;648:328::-;725:6;733;741;794:2;782:9;773:7;769:23;765:32;762:52;;;810:1;807;800:12;762:52;833:29;852:9;833:29;:::i;:::-;823:39;;881:38;915:2;904:9;900:18;881:38;:::i;:::-;871:48;;966:2;955:9;951:18;938:32;928:42;;648:328;;;;;:::o;981:1132::-;1065:6;1096:2;1139;1127:9;1118:7;1114:23;1110:32;1107:52;;;1155:1;1152;1145:12;1107:52;1195:9;1182:23;1224:18;1265:2;1257:6;1254:14;1251:34;;;1281:1;1278;1271:12;1251:34;1319:6;1308:9;1304:22;1294:32;;1364:7;1357:4;1353:2;1349:13;1345:27;1335:55;;1386:1;1383;1376:12;1335:55;1422:2;1409:16;1444:2;1440;1437:10;1434:36;;;1450:18;;:::i;:::-;1496:2;1493:1;1489:10;1528:2;1522:9;1591:2;1587:7;1582:2;1578;1574:11;1570:25;1562:6;1558:38;1646:6;1634:10;1631:22;1626:2;1614:10;1611:18;1608:46;1605:72;;;1657:18;;:::i;:::-;1693:2;1686:22;1743:18;;;1777:15;;;;-1:-1:-1;1812:11:1;;;1842;;;1838:20;;1835:33;-1:-1:-1;1832:53:1;;;1881:1;1878;1871:12;1832:53;1903:1;1894:10;;1913:169;1927:2;1924:1;1921:9;1913:169;;;1984:23;2003:3;1984:23;:::i;:::-;1972:36;;1945:1;1938:9;;;;;2028:12;;;;2060;;1913:169;;;-1:-1:-1;2101:6:1;981:1132;-1:-1:-1;;;;;;;;981:1132:1:o;2118:241::-;2174:6;2227:2;2215:9;2206:7;2202:23;2198:32;2195:52;;;2243:1;2240;2233:12;2195:52;2282:9;2269:23;2301:28;2323:5;2301:28;:::i;2364:245::-;2431:6;2484:2;2472:9;2463:7;2459:23;2455:32;2452:52;;;2500:1;2497;2490:12;2452:52;2532:9;2526:16;2551:28;2573:5;2551:28;:::i;2614:592::-;2685:6;2693;2746:2;2734:9;2725:7;2721:23;2717:32;2714:52;;;2762:1;2759;2752:12;2714:52;2802:9;2789:23;2831:18;2872:2;2864:6;2861:14;2858:34;;;2888:1;2885;2878:12;2858:34;2926:6;2915:9;2911:22;2901:32;;2971:7;2964:4;2960:2;2956:13;2952:27;2942:55;;2993:1;2990;2983:12;2942:55;3033:2;3020:16;3059:2;3051:6;3048:14;3045:34;;;3075:1;3072;3065:12;3045:34;3120:7;3115:2;3106:6;3102:2;3098:15;3094:24;3091:37;3088:57;;;3141:1;3138;3131:12;3088:57;3172:2;3164:11;;;;;3194:6;;-1:-1:-1;2614:592:1;;-1:-1:-1;;;;2614:592:1:o;3211:180::-;3270:6;3323:2;3311:9;3302:7;3298:23;3294:32;3291:52;;;3339:1;3336;3329:12;3291:52;-1:-1:-1;3362:23:1;;3211:180;-1:-1:-1;3211:180:1:o;3396:184::-;3466:6;3519:2;3507:9;3498:7;3494:23;3490:32;3487:52;;;3535:1;3532;3525:12;3487:52;-1:-1:-1;3558:16:1;;3396:184;-1:-1:-1;3396:184:1:o;3585:811::-;3725:6;3733;3741;3749;3757;3765;3773;3781;3789;3797;3850:3;3838:9;3829:7;3825:23;3821:33;3818:53;;;3867:1;3864;3857:12;3818:53;3903:9;3890:23;3880:33;;3960:2;3949:9;3945:18;3932:32;3922:42;;4011:2;4000:9;3996:18;3983:32;3973:42;;4062:2;4051:9;4047:18;4034:32;4024:42;;4113:3;4102:9;4098:19;4085:33;4075:43;;4165:3;4154:9;4150:19;4137:33;4127:43;;4217:3;4206:9;4202:19;4189:33;4179:43;;4269:3;4258:9;4254:19;4241:33;4231:43;;4293:39;4327:3;4316:9;4312:19;4293:39;:::i;:::-;4283:49;;4351:39;4385:3;4374:9;4370:19;4351:39;:::i;:::-;4341:49;;3585:811;;;;;;;;;;;;;:::o;4401:269::-;4458:6;4511:2;4499:9;4490:7;4486:23;4482:32;4479:52;;;4527:1;4524;4517:12;4479:52;4566:9;4553:23;4616:4;4609:5;4605:16;4598:5;4595:27;4585:55;;4636:1;4633;4626:12;4675:472;4717:3;4755:5;4749:12;4782:6;4777:3;4770:19;4807:1;4817:162;4831:6;4828:1;4825:13;4817:162;;;4893:4;4949:13;;;4945:22;;4939:29;4921:11;;;4917:20;;4910:59;4846:12;4817:162;;;4997:6;4994:1;4991:13;4988:87;;;5063:1;5056:4;5047:6;5042:3;5038:16;5034:27;5027:38;4988:87;-1:-1:-1;5129:2:1;5108:15;-1:-1:-1;;5104:29:1;5095:39;;;;5136:4;5091:50;;4675:472;-1:-1:-1;;4675:472:1:o;6219:220::-;6368:2;6357:9;6350:21;6331:4;6388:45;6429:2;6418:9;6414:18;6406:6;6388:45;:::i;6444:398::-;6643:2;6632:9;6625:21;6606:4;6663:45;6704:2;6693:9;6689:18;6681:6;6663:45;:::i;:::-;-1:-1:-1;;;;;6744:32:1;;;;6739:2;6724:18;;6717:60;-1:-1:-1;6820:14:1;;6813:22;6808:2;6793:18;;;6786:50;6655:53;6444:398;-1:-1:-1;6444:398:1:o;14768:345::-;14970:2;14952:21;;;15009:2;14989:18;;;14982:30;-1:-1:-1;;;15043:2:1;15028:18;;15021:51;15104:2;15089:18;;14768:345::o;17703:128::-;17743:3;17774:1;17770:6;17767:1;17764:13;17761:39;;;17780:18;;:::i;:::-;-1:-1:-1;17816:9:1;;17703:128::o;17836:217::-;17876:1;17902;17892:132;;17946:10;17941:3;17937:20;17934:1;17927:31;17981:4;17978:1;17971:15;18009:4;18006:1;17999:15;17892:132;-1:-1:-1;18038:9:1;;17836:217::o;18058:422::-;18147:1;18190:5;18147:1;18204:270;18225:7;18215:8;18212:21;18204:270;;;18284:4;18280:1;18276:6;18272:17;18266:4;18263:27;18260:53;;;18293:18;;:::i;:::-;18343:7;18333:8;18329:22;18326:55;;;18363:16;;;;18326:55;18442:22;;;;18402:15;;;;18204:270;;;18208:3;18058:422;;;;;:::o;18485:131::-;18545:5;18574:36;18601:8;18595:4;18670:5;18700:8;18690:80;;-1:-1:-1;18741:1:1;18755:5;;18690:80;18789:4;18779:76;;-1:-1:-1;18826:1:1;18840:5;;18779:76;18871:4;18889:1;18884:59;;;;18957:1;18952:130;;;;18864:218;;18884:59;18914:1;18905:10;;18928:5;;;18952:130;18989:3;18979:8;18976:17;18973:43;;;18996:18;;:::i;:::-;-1:-1:-1;;19052:1:1;19038:16;;19067:5;;18864:218;;19166:2;19156:8;19153:16;19147:3;19141:4;19138:13;19134:36;19128:2;19118:8;19115:16;19110:2;19104:4;19101:12;19097:35;19094:77;19091:159;;;-1:-1:-1;19203:19:1;;;19235:5;;19091:159;19282:34;19307:8;19301:4;19282:34;:::i;:::-;19352:6;19348:1;19344:6;19340:19;19331:7;19328:32;19325:58;;;19363:18;;:::i;:::-;19401:20;;-1:-1:-1;18621:806:1;;;;;:::o;19432:168::-;19472:7;19538:1;19534;19530:6;19526:14;19523:1;19520:21;19515:1;19508:9;19501:17;19497:45;19494:71;;;19545:18;;:::i;:::-;-1:-1:-1;19585:9:1;;19432:168::o;19605:125::-;19645:4;19673:1;19670;19667:8;19664:34;;;19678:18;;:::i;:::-;-1:-1:-1;19715:9:1;;19605:125::o;19735:380::-;19814:1;19810:12;;;;19857;;;19878:61;;19932:4;19924:6;19920:17;19910:27;;19878:61;19985:2;19977:6;19974:14;19954:18;19951:38;19948:161;;;20031:10;20026:3;20022:20;20019:1;20012:31;20066:4;20063:1;20056:15;20094:4;20091:1;20084:15;19948:161;;19735:380;;;:::o;20120:135::-;20159:3;-1:-1:-1;;20180:17:1;;20177:43;;;20200:18;;:::i;:::-;-1:-1:-1;20247:1:1;20236:13;;20120:135::o;20260:127::-;20321:10;20316:3;20312:20;20309:1;20302:31;20352:4;20349:1;20342:15;20376:4;20373:1;20366:15;20392:127;20453:10;20448:3;20444:20;20441:1;20434:31;20484:4;20481:1;20474:15;20508:4;20505:1;20498:15;20524:127;20585:10;20580:3;20576:20;20573:1;20566:31;20616:4;20613:1;20606:15;20640:4;20637:1;20630:15;20656:118;20742:5;20735:13;20728:21;20721:5;20718:32;20708:60;;20764:1;20761;20754:12;20708:60;20656:118;:::o

Swarm Source

ipfs://1f818bf80297912015769cf16bd75a3f7e720b36f63133370739dcd445537ce7
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.