ETH Price: $2,626.37 (+7.12%)

Contract

0x496299d8497A02b01f5Bc355298b0a831f06c522
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Approval For...209456212024-10-11 23:21:473 days ago1728688907IN
Ascended NFT: ASCENDED Token
0 ETH0.0002604510.68209407
Set Approval For...208554862024-09-29 9:45:4715 days ago1727603147IN
Ascended NFT: ASCENDED Token
0 ETH0.000317516.87107649
Set Approval For...208249502024-09-25 3:30:4719 days ago1727235047IN
Ascended NFT: ASCENDED Token
0 ETH0.0007147215.46693915
Set Approval For...208240742024-09-25 0:34:4720 days ago1727224487IN
Ascended NFT: ASCENDED Token
0 ETH0.0007466916.1293565
Set Approval For...208087432024-09-22 21:15:3522 days ago1727039735IN
Ascended NFT: ASCENDED Token
0 ETH0.00037978.2169231
Set Approval For...207332562024-09-12 8:10:5932 days ago1726128659IN
Ascended NFT: ASCENDED Token
0 ETH0.000160183.46650598
Set Approval For...207145072024-09-09 17:20:3535 days ago1725902435IN
Ascended NFT: ASCENDED Token
0 ETH0.0005905412.77967833
Set Approval For...206631682024-09-02 13:25:5942 days ago1725283559IN
Ascended NFT: ASCENDED Token
0 ETH0.000073143
Set Approval For...206499942024-08-31 17:18:2344 days ago1725124703IN
Ascended NFT: ASCENDED Token
0 ETH0.00008571.8518981
Set Approval For...206450342024-08-31 0:40:3545 days ago1725064835IN
Ascended NFT: ASCENDED Token
0 ETH0.00005851.26608392
Transfer From206446722024-08-30 23:27:4745 days ago1725060467IN
Ascended NFT: ASCENDED Token
0 ETH0.000075911.2215717
Set Approval For...206350672024-08-29 15:14:5946 days ago1724944499IN
Ascended NFT: ASCENDED Token
0 ETH0.000256615.55319188
Set Approval For...205645342024-08-19 18:42:5956 days ago1724092979IN
Ascended NFT: ASCENDED Token
0 ETH0.000108412.34612467
Set Approval For...205432682024-08-16 19:25:4759 days ago1723836347IN
Ascended NFT: ASCENDED Token
0 ETH0.000029561.21267424
Transfer From205239082024-08-14 2:32:5961 days ago1723602779IN
Ascended NFT: ASCENDED Token
0 ETH0.00009472.3529164
Transfer From205239082024-08-14 2:32:5961 days ago1723602779IN
Ascended NFT: ASCENDED Token
0 ETH0.000146232.3529164
Set Approval For...204998782024-08-10 18:02:5965 days ago1723312979IN
Ascended NFT: ASCENDED Token
0 ETH0.000026091.07019557
Set Approval For...204998772024-08-10 18:02:4765 days ago1723312967IN
Ascended NFT: ASCENDED Token
0 ETH0.000026091.07020024
Set Approval For...204998752024-08-10 18:02:2365 days ago1723312943IN
Ascended NFT: ASCENDED Token
0 ETH0.000026211.07527949
Set Approval For...204998742024-08-10 18:02:1165 days ago1723312931IN
Ascended NFT: ASCENDED Token
0 ETH0.000032331.32944858
Set Approval For...204998732024-08-10 18:01:5965 days ago1723312919IN
Ascended NFT: ASCENDED Token
0 ETH0.000031451.29027644
Set Approval For...204553812024-08-04 13:06:1171 days ago1722776771IN
Ascended NFT: ASCENDED Token
0 ETH0.000078231.69299527
Set Approval For...204547632024-08-04 11:02:2371 days ago1722769343IN
Ascended NFT: ASCENDED Token
0 ETH0.000068021.4719868
Set Approval For...204335802024-08-01 12:05:1174 days ago1722513911IN
Ascended NFT: ASCENDED Token
0 ETH0.00036337.86193978
Set Approval For...204150972024-07-29 22:05:2377 days ago1722290723IN
Ascended NFT: ASCENDED Token
0 ETH0.000060192.46885124
View all transactions

Latest 15 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
140886712022-01-27 16:07:51991 days ago1643299671
Ascended NFT: ASCENDED Token
147.44 ETH
140886712022-01-27 16:07:51991 days ago1643299671
Ascended NFT: ASCENDED Token
194.6208 ETH
140886712022-01-27 16:07:51991 days ago1643299671
Ascended NFT: ASCENDED Token
247.6992 ETH
140845672022-01-27 0:53:38992 days ago1643244818
Ascended NFT: ASCENDED Token
0.86 ETH
140845672022-01-27 0:53:38992 days ago1643244818
Ascended NFT: ASCENDED Token
1.1352 ETH
140845672022-01-27 0:53:38992 days ago1643244818
Ascended NFT: ASCENDED Token
1.4448 ETH
140334232022-01-19 2:57:41999 days ago1642561061
Ascended NFT: ASCENDED Token
0.38 ETH
140334232022-01-19 2:57:41999 days ago1642561061
Ascended NFT: ASCENDED Token
0.5016 ETH
140334232022-01-19 2:57:41999 days ago1642561061
Ascended NFT: ASCENDED Token
0.6384 ETH
140204692022-01-17 2:58:371001 days ago1642388317
Ascended NFT: ASCENDED Token
29.08 ETH
140204692022-01-17 2:58:371001 days ago1642388317
Ascended NFT: ASCENDED Token
38.3856 ETH
140204692022-01-17 2:58:371001 days ago1642388317
Ascended NFT: ASCENDED Token
48.8544 ETH
139975352022-01-13 13:55:411005 days ago1642082141
Ascended NFT: ASCENDED Token
0.025 ETH
139975352022-01-13 13:55:411005 days ago1642082141
Ascended NFT: ASCENDED Token
0.033 ETH
139975352022-01-13 13:55:411005 days ago1642082141
Ascended NFT: ASCENDED Token
0.042 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AscendedNFT

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-01-13
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

/* ERC721I - ERC721I (ERC721 0xInuarashi Edition) - Gas Optimized
    Author: 0xInuarashi || https://twitter.com/0xinuarashi 
    Open Source: with the efforts of the [0x Collective] <3 */

contract ERC721I {

    string public name; string public symbol;
    string internal baseTokenURI; string internal baseTokenURI_EXT;
    constructor(string memory name_, string memory symbol_) { name = name_; symbol = symbol_; }

    uint256 public totalSupply; 
    mapping(uint256 => address) public ownerOf; 
    mapping(address => uint256) public balanceOf; 

    mapping(uint256 => address) public getApproved; 
    mapping(address => mapping(address => bool)) public isApprovedForAll; 

    // Events
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    event Mint(address indexed to, uint256 tokenId);
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    // // internal write functions
    // mint
    function _mint(address to_, uint256 tokenId_) internal virtual {
        require(to_ != address(0x0), "ERC721I: _mint() Mint to Zero Address");
        require(ownerOf[tokenId_] == address(0x0), "ERC721I: _mint() Token to Mint Already Exists!");

        // ERC721I Starts Here
        balanceOf[to_]++;
        ownerOf[tokenId_] = to_;

        // totalSupply++; // I removed this for a bit better gas management on multi-mints ~ 0xInuarashi
        
        // ERC721I Ends Here

        emit Transfer(address(0x0), to_, tokenId_);
        
        // emit Mint(to_, tokenId_); // I removed this for a bit better gas management on multi-mints ~ 0xInuarashi
    }

    // transfer
    function _transfer(address from_, address to_, uint256 tokenId_) internal virtual {
        require(from_ == ownerOf[tokenId_], "ERC721I: _transfer() Transfer Not Owner of Token!");
        require(to_ != address(0x0), "ERC721I: _transfer() Transfer to Zero Address!");

        // ERC721I Starts Here
        // checks if there is an approved address clears it if there is
        if (getApproved[tokenId_] != address(0x0)) { 
            _approve(address(0x0), tokenId_); 
        } 

        ownerOf[tokenId_] = to_; 
        balanceOf[from_]--;
        balanceOf[to_]++;
        // ERC721I Ends Here

        emit Transfer(from_, to_, tokenId_);
    }

    // approve
    function _approve(address to_, uint256 tokenId_) internal virtual {
        if (getApproved[tokenId_] != to_) {
            getApproved[tokenId_] = to_;
            emit Approval(ownerOf[tokenId_], to_, tokenId_);
        }
    }
    function _setApprovalForAll(address owner_, address operator_, bool approved_) internal virtual {
        require(owner_ != operator_, "ERC721I: _setApprovalForAll() Owner must not be the Operator!");
        isApprovedForAll[owner_][operator_] = approved_;
        emit ApprovalForAll(owner_, operator_, approved_);
    }

    // token uri
    function _setBaseTokenURI(string memory uri_) internal virtual {
        baseTokenURI = uri_;
    }
    function _setBaseTokenURI_EXT(string memory ext_) internal virtual {
        baseTokenURI_EXT = ext_;
    }

    // // Internal View Functions
    // Embedded Libraries
    function _toString(uint256 value_) internal pure returns (string memory) {
        if (value_ == 0) { return "0"; }
        uint256 _iterate = value_; uint256 _digits;
        while (_iterate != 0) { _digits++; _iterate /= 10; } // get digits in value_
        bytes memory _buffer = new bytes(_digits);
        while (value_ != 0) { _digits--; _buffer[_digits] = bytes1(uint8(48 + uint256(value_ % 10 ))); value_ /= 10; } // create bytes of value_
        return string(_buffer); // return string converted bytes of value_
    }

    // Functional Views
    function _isApprovedOrOwner(address spender_, uint256 tokenId_) internal view virtual returns (bool) {
        require(ownerOf[tokenId_] != address(0x0), "ERC721I: _isApprovedOrOwner() Owner is Zero Address!");
        address _owner = ownerOf[tokenId_];
        return (spender_ == _owner || spender_ == getApproved[tokenId_] || isApprovedForAll[_owner][spender_]);
    }
    function _exists(uint256 tokenId_) internal view virtual returns (bool) {
        return ownerOf[tokenId_] != address(0x0);
    }

    // // public write functions
    function approve(address to_, uint256 tokenId_) public virtual {
        address _owner = ownerOf[tokenId_];
        require(to_ != _owner, "ERC721I: approve() Cannot approve yourself!");
        require(msg.sender == _owner || isApprovedForAll[_owner][msg.sender], "ERC721I: Caller not owner or Approved!");
        _approve(to_, tokenId_);
    }
    function setApprovalForAll(address operator_, bool approved_) public virtual {
        _setApprovalForAll(msg.sender, operator_, approved_);
    }
    function transferFrom(address from_, address to_, uint256 tokenId_) public virtual {
        require(_isApprovedOrOwner(msg.sender, tokenId_), "ERC721I: transferFrom() _isApprovedOrOwner = false!");
        _transfer(from_, to_, tokenId_);
    }
    function safeTransferFrom(address from_, address to_, uint256 tokenId_, bytes memory data_) public virtual {
        transferFrom(from_, to_, tokenId_);
        if (to_.code.length != 0) {
            (, bytes memory _returned) = to_.staticcall(abi.encodeWithSelector(0x150b7a02, msg.sender, from_, tokenId_, data_));
            bytes4 _selector = abi.decode(_returned, (bytes4));
            require(_selector == 0x150b7a02, "ERC721I: safeTransferFrom() to_ not ERC721Receivable!");
        }
    }
    function safeTransferFrom(address from_, address to_, uint256 tokenId_) public virtual {
        safeTransferFrom(from_, to_, tokenId_, "");
    }

    // 0xInuarashi Custom Functions
    function multiTransferFrom(address from_, address to_, uint256[] memory tokenIds_) public virtual {
        for (uint256 i = 0; i < tokenIds_.length; i++) {
            transferFrom(from_, to_, tokenIds_[i]);
        }
    }
    function multiSafeTransferFrom(address from_, address to_, uint256[] memory tokenIds_, bytes memory data_) public virtual {
        for (uint256 i = 0; i < tokenIds_.length; i++) {
            safeTransferFrom(from_, to_, tokenIds_[i], data_);
        }
    }

    // OZ Standard Stuff
    function supportsInterface(bytes4 interfaceId_) public pure returns (bool) {
        return (interfaceId_ == 0x80ac58cd || interfaceId_ == 0x5b5e139f);
    }

    function tokenURI(uint256 tokenId_) public view virtual returns (string memory) {
        require(ownerOf[tokenId_] != address(0x0), "ERC721I: tokenURI() Token does not exist!");
        return string(abi.encodePacked(baseTokenURI, _toString(tokenId_), baseTokenURI_EXT));
    }
    // // public view functions
    // never use these for functions ever, they are expensive af and for view only (this will be an issue in the future for interfaces)
    function walletOfOwner(address address_) public virtual view returns (uint256[] memory) {
        uint256 _balance = balanceOf[address_];
        uint256[] memory _tokens = new uint256[] (_balance);
        uint256 _index;
        uint256 _loopThrough = totalSupply;
        for (uint256 i = 0; i < _loopThrough; i++) {
            if (ownerOf[i] == address(0x0) && _tokens[_balance - 1] == 0) { _loopThrough++; }
            if (ownerOf[i] == address_) { _tokens[_index] = i; _index++; }
        }
        return _tokens;
    }

    // so not sure when this will ever be really needed but it conforms to erc721 enumerable
    function tokenOfOwnerByIndex(address address_, uint256 index_) public virtual view returns (uint256) {
        uint256[] memory _wallet = walletOfOwner(address_);
        return _wallet[index_];
    }
}

abstract contract Ownable {
    address public owner;
    event OwnershipTransferred(address indexed oldOwner_, address indexed newOwner_);
    constructor() { owner = msg.sender; }
    modifier onlyOwner {
        require(owner == msg.sender, "Ownable: caller is not the owner");
        _;
    }
    function _transferOwnership(address newOwner_) internal virtual {
        address _oldOwner = owner;
        owner = newOwner_;
        emit OwnershipTransferred(_oldOwner, newOwner_);    
    }
    function transferOwnership(address newOwner_) public virtual onlyOwner {
        require(newOwner_ != address(0x0), "Ownable: new owner is the zero address!");
        _transferOwnership(newOwner_);
    }
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0x0));
    }
}

abstract contract MerkleWhitelist {
    bytes32 internal _merkleRoot;
    function _setMerkleRoot(bytes32 merkleRoot_) internal virtual {
        _merkleRoot = merkleRoot_;
    }
    function isWhitelisted(address address_, bytes32[] memory proof_) public view returns (bool) {
        bytes32 _leaf = keccak256(abi.encodePacked(address_));
        for (uint256 i = 0; i < proof_.length; i++) {
            _leaf = _leaf < proof_[i] ? keccak256(abi.encodePacked(_leaf, proof_[i])) : keccak256(abi.encodePacked(proof_[i], _leaf));
        }
        return _leaf == _merkleRoot;
    }
}

abstract contract Security {
    // Prevent Smart Contracts
    modifier onlySender {
        require(msg.sender == tx.origin, "No Smart Contracts!"); _; }
}

abstract contract PublicMint {
    // Public Minting
    bool public _publicMintEnabled; uint256 public _publicMintTime;
    function _setPublicMint(bool bool_, uint256 time_) internal {
        _publicMintEnabled = bool_; _publicMintTime = time_; }
    modifier publicMintEnabled { 
        require(_publicMintEnabled && _publicMintTime <= block.timestamp, 
            "Public Mint is not enabled yet!"); _; }
    function publicMintStatus() external view returns (bool) {
        return _publicMintEnabled && _publicMintTime <= block.timestamp; }
}

abstract contract WhitelistMint {
    // Whitelist Minting
    bool internal _whitelistMintEnabled; uint256 public _whitelistMintTime;
    function _setWhitelistMint(bool bool_, uint256 time_) internal {
        _whitelistMintEnabled = bool_; _whitelistMintTime = time_; }
    modifier whitelistMintEnabled {
        require(_whitelistMintEnabled && _whitelistMintTime <= block.timestamp, 
            "Whitelist Mint is not enabled yet!"); _; } 
    function whitelistMintStatus() external view returns (bool) {
        return _whitelistMintEnabled && _whitelistMintTime <= block.timestamp; }
}


// Open0x Presets //
// ERC721I_OW (ERC721I 0xInuarashi Edition, Ownable, Whitelist) 

abstract contract ERC721I_OW is ERC721I, Ownable, MerkleWhitelist, Security, PublicMint, WhitelistMint {

    constructor(string memory name_, string memory symbol_) ERC721I(name_, symbol_) {}

    // Ownable Functions for ERC721I_OW //
    
    // Token URI
    function setBaseTokenURI(string calldata uri_) external onlyOwner { 
        _setBaseTokenURI(uri_);
    }
    function setBaseTokenURI_EXT(string calldata ext_) external onlyOwner {
        _setBaseTokenURI_EXT(ext_);
    }

    // MerkleRoot
    function setMerkleRoot(bytes32 merkleRoot_) external onlyOwner {
        _setMerkleRoot(merkleRoot_);
    }

    // Public Mint
    function setPublicMint(bool bool_, uint256 time_) external onlyOwner {
        _setPublicMint(bool_, time_);
    }
    
    // Whitelist Mint
    function setWhitelistMint(bool bool_, uint256 time_) external onlyOwner {
        _setWhitelistMint(bool_, time_);
    }

}

abstract contract PayableGovernance is Ownable {
    // Special Access
    address _payableGovernanceSetter;
    constructor() payable { _payableGovernanceSetter = msg.sender; }
    modifier onlyPayableGovernanceSetter {
        require(msg.sender == _payableGovernanceSetter, "PayableGovernance: Caller is not Setter!"); _; }
    function reouncePayableGovernancePermissions() public onlyPayableGovernanceSetter {
        _payableGovernanceSetter = address(0x0); }

    // Receivable Fallback
    event Received(address from, uint amount);
    receive() external payable { emit Received(msg.sender, msg.value); }

    // Required Variables
    address payable[] internal _payableGovernanceAddresses;
    uint256[] internal _payableGovernanceShares;    
    mapping(address => bool) public addressToEmergencyUnlocked;

    // Withdraw Functionality
    function _withdraw(address payable address_, uint256 amount_) internal {
        (bool success, ) = payable(address_).call{value: amount_}("");
        require(success, "Transfer failed");
    }

    // Governance Functions
    function setPayableGovernanceShareholders(address payable[] memory addresses_, uint256[] memory shares_) public onlyPayableGovernanceSetter {
        require(_payableGovernanceAddresses.length == 0 && _payableGovernanceShares.length == 0, "Payable Governance already set! To set again, reset first!");
        require(addresses_.length == shares_.length, "Address and Shares length mismatch!");
        uint256 _totalShares;
        for (uint256 i = 0; i < addresses_.length; i++) {
            _totalShares += shares_[i];
            _payableGovernanceAddresses.push(addresses_[i]);
            _payableGovernanceShares.push(shares_[i]);
        }
        require(_totalShares == 1000, "Total Shares is not 1000!");
    }
    function resetPayableGovernanceShareholders() public onlyPayableGovernanceSetter {
        while (_payableGovernanceAddresses.length != 0) {
            _payableGovernanceAddresses.pop(); }
        while (_payableGovernanceShares.length != 0) {
            _payableGovernanceShares.pop(); }
    }

    // Governance View Functions
    function balance() public view returns (uint256) {
        return address(this).balance;
    }
    function payableGovernanceAddresses() public view returns (address payable[] memory) {
        return _payableGovernanceAddresses;
    }
    function payableGovernanceShares() public view returns (uint256[] memory) {
        return _payableGovernanceShares;
    }

    // Withdraw Functions
    function withdrawEther() public onlyOwner {
        // require that there has been payable governance set.
        require(_payableGovernanceAddresses.length > 0 && _payableGovernanceShares.length > 0, "Payable governance not set yet!");
         // this should never happen
        require(_payableGovernanceAddresses.length == _payableGovernanceShares.length, "Payable governance length mismatch!");
        
        // now, we check that the governance shares equal to 1000.
        uint256 _totalPayableShares;
        for (uint256 i = 0; i < _payableGovernanceShares.length; i++) {
            _totalPayableShares += _payableGovernanceShares[i]; }
        require(_totalPayableShares == 1000, "Payable Governance Shares is not 1000!");
        
        // // now, we start the withdrawal process if all conditionals pass
        // store current balance in local memory
        uint256 _totalETH = address(this).balance; 

        // withdraw loop for payable governance
        for (uint256 i = 0; i < _payableGovernanceAddresses.length; i++) {
            uint256 _ethToWithdraw = ((_totalETH * _payableGovernanceShares[i]) / 1000);
            _withdraw(_payableGovernanceAddresses[i], _ethToWithdraw);
        }
    }

    function viewWithdrawAmounts() public view onlyOwner returns (uint256[] memory) {
        // require that there has been payable governance set.
        require(_payableGovernanceAddresses.length > 0 && _payableGovernanceShares.length > 0, "Payable governance not set yet!");
         // this should never happen
        require(_payableGovernanceAddresses.length == _payableGovernanceShares.length, "Payable governance length mismatch!");
        
        // now, we check that the governance shares equal to 1000.
        uint256 _totalPayableShares;
        for (uint256 i = 0; i < _payableGovernanceShares.length; i++) {
            _totalPayableShares += _payableGovernanceShares[i]; }
        require(_totalPayableShares == 1000, "Payable Governance Shares is not 1000!");
        
        // // now, we start the array creation process if all conditionals pass
        // store current balance in local memory and instantiate array for input
        uint256 _totalETH = address(this).balance; 
        uint256[] memory _withdrawals = new uint256[] (_payableGovernanceAddresses.length + 2);

        // array creation loop for payable governance values 
        for (uint256 i = 0; i < _payableGovernanceAddresses.length; i++) {
            _withdrawals[i] = ( (_totalETH * _payableGovernanceShares[i]) / 1000 );
        }
        
        // push two last array spots as total eth and added eths of withdrawals
        _withdrawals[_payableGovernanceAddresses.length] = _totalETH;
        for (uint256 i = 0; i < _payableGovernanceAddresses.length; i++) {
            _withdrawals[_payableGovernanceAddresses.length + 1] += _withdrawals[i]; }

        // return the final array data
        return _withdrawals;
    }

    // Shareholder Governance
    modifier onlyShareholder {
        bool _isShareholder;
        for (uint256 i = 0; i < _payableGovernanceAddresses.length; i++) {
            if (msg.sender == _payableGovernanceAddresses[i]) {
                _isShareholder = true;
            }
        }
        require(_isShareholder, "You are not a shareholder!");
        _;
    }
    function unlockEmergencyFunctionsAsShareholder() public onlyShareholder {
        addressToEmergencyUnlocked[msg.sender] = true;
    }

    // Emergency Functions
    modifier onlyEmergency {
        for (uint256 i = 0; i < _payableGovernanceAddresses.length; i++) {
            require(addressToEmergencyUnlocked[_payableGovernanceAddresses[i]], "Emergency Functions are not unlocked!");
        }
        _;
    }
    function emergencyWithdrawEther() public onlyOwner onlyEmergency {
        _withdraw(payable(msg.sender), address(this).balance);
    }
}

interface iYield {
    function updateRewardOnTransfer(address from_, address to_, uint256 tokenId_) external;
}

contract AscendedNFT is ERC721I_OW, PayableGovernance {
    constructor() payable ERC721I_OW("Ascended NFT", "ASCENDED") {}

    // Project Contraints
    uint256 public mintPrice = 0.08 ether;
    uint256 public maxTokens = 8888;

    uint256 public maxMintsPerWl = 4;
    mapping(address => uint256) public addressToWlMints;

    uint256 public maxMintsPerTx = 10;

    function setMintPrice(uint256 mintPrice_) external onlyOwner {
        mintPrice = mintPrice_;
    }
    function setMaxtokens(uint256 maxTokens_) external onlyOwner {
        require(totalSupply >= maxTokens_, "Below totalSupply");
        maxTokens = maxTokens_;
    }

    // Setting Future-Proof Token Yield
    iYield public Yield;
    function setYieldToken(address address_) external onlyOwner {
        Yield = iYield(address_);
    }

    // Internal Mint
    function _mintMany(address to_, uint256 amount_) internal {
        require(maxTokens >= totalSupply + amount_,
            "Not enough tokens remaining!");

        uint256 _startId = totalSupply + 1; // iterate from 1

        for (uint256 i = 0; i < amount_; i++) {
            _mint(to_, _startId + i);
        }
        totalSupply += amount_;
    }

    // Owner Mint Functions
    function ownerMint(address to_, uint256 amount_) external onlyOwner {
        _mintMany(to_, amount_);
    }
    function ownerMintToMany(address[] calldata tos_, uint256[] calldata amounts_) 
    external onlyOwner {
        require(tos_.length == amounts_.length, 
            "Array lengths mismatch!");
        
        for (uint256 i = 0; i < tos_.length; i++) {
            _mintMany(tos_[i], amounts_[i]);
        }
    }

    // Whitelist Mint Functions
    function whitelistMint(bytes32[] calldata proof_, uint256 amount_) external payable 
    onlySender whitelistMintEnabled {
        require(isWhitelisted(msg.sender, proof_), 
            "You are not Whitelisted!");
        require(maxMintsPerWl >= addressToWlMints[msg.sender] + amount_,
            "Over Max Mints per TX or Not enough whitelist mints remaining for you!");
        require(msg.value == mintPrice * amount_,   
            "Invalid value sent!");
        
        // Add address to WL minted
        addressToWlMints[msg.sender] += amount_;

        _mintMany(msg.sender, amount_);
    }

    // Public Mint Functions
    function publicMint(uint256 amount_) external payable onlySender publicMintEnabled {
        require(maxMintsPerTx >= amount_,
            "Over maxmimum mints per Tx!");
        require(msg.value == mintPrice * amount_, 
            "Invalid value sent!");

        _mintMany(msg.sender, amount_);
    }

    /////////////////////////////////////////////////////
    // Withdraw Functions handled by PayableGovernance //
    /////////////////////////////////////////////////////

    // Future-Proof Transfer Hook Yield Overrides
    function transferFrom(address from_, address to_, uint256 tokenId_) public 
    override {
        if ( Yield != iYield(address(0x0)) ) {
            Yield.updateRewardOnTransfer(from_, to_, tokenId_);    
        }
        ERC721I.transferFrom(from_, to_, tokenId_);
    }
    function safeTransferFrom(address from_, address to_, uint256 tokenId_, 
    bytes memory data_) public override {
        if ( Yield != iYield(address(0x0)) ) {
            Yield.updateRewardOnTransfer(from_, to_, tokenId_);    
        }
        ERC721I.safeTransferFrom(from_, to_, tokenId_, data_);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner_","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner_","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Received","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"Yield","outputs":[{"internalType":"contract iYield","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_publicMintEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_publicMintTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_whitelistMintTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addressToEmergencyUnlocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addressToWlMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"balance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emergencyWithdrawEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"},{"internalType":"bytes32[]","name":"proof_","type":"bytes32[]"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintsPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintsPerWl","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256[]","name":"tokenIds_","type":"uint256[]"},{"internalType":"bytes","name":"data_","type":"bytes"}],"name":"multiSafeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256[]","name":"tokenIds_","type":"uint256[]"}],"name":"multiTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"ownerMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"tos_","type":"address[]"},{"internalType":"uint256[]","name":"amounts_","type":"uint256[]"}],"name":"ownerMintToMany","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"payableGovernanceAddresses","outputs":[{"internalType":"address payable[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"payableGovernanceShares","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"publicMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"publicMintStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reouncePayableGovernancePermissions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resetPayableGovernanceShareholders","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"tokenId_","type":"uint256"},{"internalType":"bytes","name":"data_","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator_","type":"address"},{"internalType":"bool","name":"approved_","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"uri_","type":"string"}],"name":"setBaseTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"ext_","type":"string"}],"name":"setBaseTokenURI_EXT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTokens_","type":"uint256"}],"name":"setMaxtokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"merkleRoot_","type":"bytes32"}],"name":"setMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"mintPrice_","type":"uint256"}],"name":"setMintPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable[]","name":"addresses_","type":"address[]"},{"internalType":"uint256[]","name":"shares_","type":"uint256[]"}],"name":"setPayableGovernanceShareholders","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"bool_","type":"bool"},{"internalType":"uint256","name":"time_","type":"uint256"}],"name":"setPublicMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"bool_","type":"bool"},{"internalType":"uint256","name":"time_","type":"uint256"}],"name":"setWhitelistMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"setYieldToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId_","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"},{"internalType":"uint256","name":"index_","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from_","type":"address"},{"internalType":"address","name":"to_","type":"address"},{"internalType":"uint256","name":"tokenId_","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner_","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlockEmergencyFunctionsAsShareholder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"viewWithdrawAmounts","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"proof_","type":"bytes32[]"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"whitelistMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"whitelistMintStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

67011c37937e0800006013556122b86014556004601555600a601755600c60808181526b105cd8d95b9919590813919560a21b60a0908152610100604052600860c0908152671054d0d15391115160c21b60e0529192839183916200006791600091620000ab565b5080516200007d906001906020840190620000ab565b505060098054336001600160a01b03199182168117909255600f80549091169091179055506200018e915050565b828054620000b99062000151565b90600052602060002090601f016020900481019282620000dd576000855562000128565b82601f10620000f857805160ff191683800117855562000128565b8280016001018555821562000128579182015b82811115620001285782518255916020019190600101906200010b565b50620001369291506200013a565b5090565b5b808211156200013657600081556001016200013b565b600181811c908216806200016657607f821691505b602082108114156200018857634e487b7160e01b600052602260045260246000fd5b50919050565b613a02806200019e6000396000f3fe60806040526004361061036f5760003560e01c8063715018a6116101c6578063c7b89336116100f7578063dc92f8f011610095578063e985e9c51161006f578063e985e9c5146109eb578063f2fde38b14610a26578063f487c60214610a46578063f4a0a52814610a6657600080fd5b8063dc92f8f01461099e578063e47fa66e146109b3578063e8315742146109d557600080fd5b8063d311c80d116100d1578063d311c80d14610947578063d66359591461095d578063d9d2b4cd14610973578063dc30158b1461098857600080fd5b8063c7b89336146108e5578063c87b56dd14610912578063cb9fe5861461093257600080fd5b806395d89b4111610164578063a91f88351161013e578063a91f88351461087d578063b69ef8a814610892578063b88d4fde146108a5578063c1f730a4146108c557600080fd5b806395d89b41146108285780639d2087ff1461083d578063a22cb4651461085d57600080fd5b8063861a9a65116101a0578063861a9a65146107b95780638b2998f8146107d95780638bdc048a146107ee5780638da5cb5b1461080857600080fd5b8063715018a61461076f5780637362377b146107845780637cb647591461079957600080fd5b806330176e13116102a05780634959f0f51161023e5780636352211e116102185780636352211e146106d65780636817c76c1461070c5780636e9d287b1461072257806370a082311461074257600080fd5b80634959f0f51461068c578063524c7ff8146106a15780635a23dd99146106b657600080fd5b806340f480e71161027a57806340f480e71461060957806342842e0e1461061f578063438b63001461063f578063484b973c1461066c57600080fd5b806330176e13146105a957806339e96c7b146105c95780633a3473b6146105e957600080fd5b806323af31261161030d57806326202370116102e7578063262023701461054e5780632904e6d9146105635780632db11544146105765780632f745c591461058957600080fd5b806323af3126146104de57806323b872dd1461050e57806323ffce851461052e57600080fd5b8063081812fc11610349578063081812fc1461042c578063095ea7b31461047a57806318160ddd1461049a57806319c3fa32146104be57600080fd5b806301ffc9a7146103b357806302ffaed1146103e857806306fdde031461040a57600080fd5b366103ae57604080513381523460208201527f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874910160405180910390a1005b600080fd5b3480156103bf57600080fd5b506103d36103ce366004613436565b610a86565b60405190151581526020015b60405180910390f35b3480156103f457600080fd5b50610408610403366004613470565b610abd565b005b34801561041657600080fd5b5061041f610b33565b6040516103df91906136b8565b34801561043857600080fd5b5061046261044736600461341d565b6007602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103df565b34801561048657600080fd5b50610408610495366004613257565b610bc1565b3480156104a657600080fd5b506104b060045481565b6040519081526020016103df565b3480156104ca57600080fd5b506104086104d9366004613401565b610ce5565b3480156104ea57600080fd5b506103d36104f9366004612f90565b60126020526000908152604090205460ff1681565b34801561051a57600080fd5b506104086105293660046130d6565b610d26565b34801561053a57600080fd5b50610408610549366004612f90565b610db1565b34801561055a57600080fd5b506103d3610dfd565b6104086105713660046133b6565b610e19565b61040861058436600461341d565b611074565b34801561059557600080fd5b506104b06105a4366004613257565b6111ca565b3480156105b557600080fd5b506104086105c4366004613470565b6111fb565b3480156105d557600080fd5b506104086105e436600461341d565b611264565b3480156105f557600080fd5b5061040861060436600461304e565b6112d9565b34801561061557600080fd5b506104b060155481565b34801561062b57600080fd5b5061040861063a3660046130d6565b611323565b34801561064b57600080fd5b5061065f61065a366004612f90565b61133e565b6040516103df9190613680565b34801561067857600080fd5b50610408610687366004613257565b611475565b34801561069857600080fd5b506104086114a9565b3480156106ad57600080fd5b5061065f611549565b3480156106c257600080fd5b506103d36106d1366004613176565b6117cb565b3480156106e257600080fd5b506104626106f136600461341d565b6005602052600090815260409020546001600160a01b031681565b34801561071857600080fd5b506104b060135481565b34801561072e57600080fd5b5061040861073d3660046132ee565b6118ef565b34801561074e57600080fd5b506104b061075d366004612f90565b60066020526000908152604090205481565b34801561077b57600080fd5b50610408611b15565b34801561079057600080fd5b50610408611b49565b3480156107a557600080fd5b506104086107b436600461341d565b611ced565b3480156107c557600080fd5b50601854610462906001600160a01b031681565b3480156107e557600080fd5b5061065f611d20565b3480156107fa57600080fd5b50600b546103d39060ff1681565b34801561081457600080fd5b50600954610462906001600160a01b031681565b34801561083457600080fd5b5061041f611d78565b34801561084957600080fd5b50610408610858366004613283565b611d85565b34801561086957600080fd5b50610408610878366004613222565b611e63565b34801561088957600080fd5b50610408611e6e565b34801561089e57600080fd5b50476104b0565b3480156108b157600080fd5b506104086108c0366004613117565b611eaa565b3480156108d157600080fd5b506104086108e0366004613401565b611f3c565b3480156108f157600080fd5b506104b0610900366004612f90565b60166020526000908152604090205481565b34801561091e57600080fd5b5061041f61092d36600461341d565b611f7d565b34801561093e57600080fd5b506103d361202b565b34801561095357600080fd5b506104b0600e5481565b34801561096957600080fd5b506104b0600c5481565b34801561097f57600080fd5b50610408612046565b34801561099457600080fd5b506104b060175481565b3480156109aa57600080fd5b50610408612105565b3480156109bf57600080fd5b506109c86121f2565b6040516103df9190613633565b3480156109e157600080fd5b506104b060145481565b3480156109f757600080fd5b506103d3610a06366004612fb4565b600860209081526000928352604080842090915290825290205460ff1681565b348015610a3257600080fd5b50610408610a41366004612f90565b612253565b348015610a5257600080fd5b50610408610a61366004612fed565b6122ec565b348015610a7257600080fd5b50610408610a8136600461341d565b61232e565b60006380ac58cd60e01b6001600160e01b031983161480610ab75750635b5e139f60e01b6001600160e01b03198316145b92915050565b6009546001600160a01b03163314610af05760405162461bcd60e51b8152600401610ae790613756565b60405180910390fd5b610b2f82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061235d92505050565b5050565b60008054610b40906138c9565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6c906138c9565b8015610bb95780601f10610b8e57610100808354040283529160200191610bb9565b820191906000526020600020905b815481529060010190602001808311610b9c57829003601f168201915b505050505081565b6000818152600560205260409020546001600160a01b03908116908316811415610c415760405162461bcd60e51b815260206004820152602b60248201527f455243373231493a20617070726f766528292043616e6e6f7420617070726f7660448201526a6520796f757273656c662160a81b6064820152608401610ae7565b336001600160a01b0382161480610c7b57506001600160a01b038116600090815260086020908152604080832033845290915290205460ff165b610cd65760405162461bcd60e51b815260206004820152602660248201527f455243373231493a2043616c6c6572206e6f74206f776e6572206f7220417070604482015265726f7665642160d01b6064820152608401610ae7565b610ce08383612370565b505050565b6009546001600160a01b03163314610d0f5760405162461bcd60e51b8152600401610ae790613756565b600d805460ff1916831515179055600e8190555050565b6018546001600160a01b031615610da657601854604051635937322960e11b81526001600160a01b0385811660048301528481166024830152604482018490529091169063b26e645290606401600060405180830381600087803b158015610d8d57600080fd5b505af1158015610da1573d6000803e3d6000fd5b505050505b610ce08383836123f8565b6009546001600160a01b03163314610ddb5760405162461bcd60e51b8152600401610ae790613756565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b600b5460009060ff168015610e14575042600c5411155b905090565b333214610e5e5760405162461bcd60e51b81526020600482015260136024820152724e6f20536d61727420436f6e7472616374732160681b6044820152606401610ae7565b600d5460ff168015610e72575042600e5411155b610ec95760405162461bcd60e51b815260206004820152602260248201527f57686974656c697374204d696e74206973206e6f7420656e61626c6564207965604482015261742160f01b6064820152608401610ae7565b610f06338484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506117cb92505050565b610f525760405162461bcd60e51b815260206004820152601860248201527f596f7520617265206e6f742057686974656c69737465642100000000000000006044820152606401610ae7565b33600090815260166020526040902054610f6d908290613824565b6015541015610ff35760405162461bcd60e51b815260206004820152604660248201527f4f766572204d6178204d696e747320706572205458206f72204e6f7420656e6f60448201527f7567682077686974656c697374206d696e74732072656d61696e696e6720666f6064820152657220796f752160d01b608482015260a401610ae7565b806013546110019190613850565b34146110455760405162461bcd60e51b8152602060048201526013602482015272496e76616c69642076616c75652073656e742160681b6044820152606401610ae7565b3360009081526016602052604081208054839290611064908490613824565b90915550610ce090503382612475565b3332146110b95760405162461bcd60e51b81526020600482015260136024820152724e6f20536d61727420436f6e7472616374732160681b6044820152606401610ae7565b600b5460ff1680156110cd575042600c5411155b6111195760405162461bcd60e51b815260206004820152601f60248201527f5075626c6963204d696e74206973206e6f7420656e61626c65642079657421006044820152606401610ae7565b80601754101561116b5760405162461bcd60e51b815260206004820152601b60248201527f4f766572206d61786d696d756d206d696e7473207065722054782100000000006044820152606401610ae7565b806013546111799190613850565b34146111bd5760405162461bcd60e51b8152602060048201526013602482015272496e76616c69642076616c75652073656e742160681b6044820152606401610ae7565b6111c73382612475565b50565b6000806111d68461133e565b90508083815181106111ea576111ea613975565b602002602001015191505092915050565b6009546001600160a01b031633146112255760405162461bcd60e51b8152600401610ae790613756565b610b2f82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061253492505050565b6009546001600160a01b0316331461128e5760405162461bcd60e51b8152600401610ae790613756565b8060045410156112d45760405162461bcd60e51b815260206004820152601160248201527042656c6f7720746f74616c537570706c7960781b6044820152606401610ae7565b601455565b60005b825181101561131c5761130a85858584815181106112fc576112fc613975565b602002602001015185611eaa565b8061131481613904565b9150506112dc565b5050505050565b610ce083838360405180602001604052806000815250611eaa565b6001600160a01b038116600090815260066020526040812054606091816001600160401b038111156113725761137261398b565b60405190808252806020026020018201604052801561139b578160200160208202803683370190505b50600454909150600090815b8181101561146a576000818152600560205260409020546001600160a01b03161580156113f75750836113db60018761386f565b815181106113eb576113eb613975565b60200260200101516000145b1561140a578161140681613904565b9250505b6000818152600560205260409020546001600160a01b0388811691161415611458578084848151811061143f5761143f613975565b60209081029190910101528261145481613904565b9350505b8061146281613904565b9150506113a7565b509195945050505050565b6009546001600160a01b0316331461149f5760405162461bcd60e51b8152600401610ae790613756565b610b2f8282612475565b600f546001600160a01b031633146114d35760405162461bcd60e51b8152600401610ae7906136cb565b601054156115135760108054806114ec576114ec61395f565b600082815260209020810160001990810180546001600160a01b03191690550190556114d3565b6011541561154757601180548061152c5761152c61395f565b60019003818190600052602060002001600090559055611513565b565b6009546060906001600160a01b031633146115765760405162461bcd60e51b8152600401610ae790613756565b60105415801590611588575060115415155b6115d45760405162461bcd60e51b815260206004820152601f60248201527f50617961626c6520676f7665726e616e6365206e6f74207365742079657421006044820152606401610ae7565b601154601054146115f75760405162461bcd60e51b8152600401610ae790613713565b6000805b601154811015611642576011818154811061161857611618613975565b90600052602060002001548261162e9190613824565b91508061163a81613904565b9150506115fb565b50806103e8146116645760405162461bcd60e51b8152600401610ae79061378b565b6010544790600090611677906002613824565b6001600160401b0381111561168e5761168e61398b565b6040519080825280602002602001820160405280156116b7578160200160208202803683370190505b50905060005b60105481101561172c576103e8601182815481106116dd576116dd613975565b9060005260206000200154846116f39190613850565b6116fd919061383c565b82828151811061170f5761170f613975565b60209081029190910101528061172481613904565b9150506116bd565b50601054815183918391811061174457611744613975565b60200260200101818152505060005b6010548110156117c35781818151811061176f5761176f613975565b602002602001015182601080549050600161178a9190613824565b8151811061179a5761179a613975565b602002602001018181516117ae9190613824565b905250806117bb81613904565b915050611753565b509250505090565b6040516bffffffffffffffffffffffff19606084901b166020820152600090819060340160405160208183030381529060405280519060200120905060005b83518110156118e35783818151811061182557611825613975565b602002602001015182106118835783818151811061184557611845613975565b602002602001015182604051602001611868929190918252602082015260400190565b604051602081830303815290604052805190602001206118cf565b8184828151811061189657611896613975565b60200260200101516040516020016118b8929190918252602082015260400190565b604051602081830303815290604052805190602001205b9150806118db81613904565b91505061180a565b50600a54149392505050565b600f546001600160a01b031633146119195760405162461bcd60e51b8152600401610ae7906136cb565b6010541580156119295750601154155b61199b5760405162461bcd60e51b815260206004820152603a60248201527f50617961626c6520476f7665726e616e636520616c726561647920736574212060448201527f546f2073657420616761696e2c207265736574206669727374210000000000006064820152608401610ae7565b80518251146119f85760405162461bcd60e51b815260206004820152602360248201527f4164647265737320616e6420536861726573206c656e677468206d69736d617460448201526263682160e81b6064820152608401610ae7565b6000805b8351811015611ac357828181518110611a1757611a17613975565b602002602001015182611a2a9190613824565b91506010848281518110611a4057611a40613975565b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b039092169190911790558251601190849083908110611a9257611a92613975565b6020908102919091018101518254600181018455600093845291909220015580611abb81613904565b9150506119fc565b50806103e814610ce05760405162461bcd60e51b815260206004820152601960248201527f546f74616c20536861726573206973206e6f74203130303021000000000000006044820152606401610ae7565b6009546001600160a01b03163314611b3f5760405162461bcd60e51b8152600401610ae790613756565b6115476000612547565b6009546001600160a01b03163314611b735760405162461bcd60e51b8152600401610ae790613756565b60105415801590611b85575060115415155b611bd15760405162461bcd60e51b815260206004820152601f60248201527f50617961626c6520676f7665726e616e6365206e6f74207365742079657421006044820152606401610ae7565b60115460105414611bf45760405162461bcd60e51b8152600401610ae790613713565b6000805b601154811015611c3f5760118181548110611c1557611c15613975565b906000526020600020015482611c2b9190613824565b915080611c3781613904565b915050611bf8565b50806103e814611c615760405162461bcd60e51b8152600401610ae79061378b565b4760005b601054811015610ce05760006103e860118381548110611c8757611c87613975565b906000526020600020015484611c9d9190613850565b611ca7919061383c565b9050611cda60108381548110611cbf57611cbf613975565b6000918252602090912001546001600160a01b031682612599565b5080611ce581613904565b915050611c65565b6009546001600160a01b03163314611d175760405162461bcd60e51b8152600401610ae790613756565b6111c781600a55565b60606011805480602002602001604051908101604052809291908181526020018280548015611d6e57602002820191906000526020600020905b815481526020019060010190808311611d5a575b5050505050905090565b60018054610b40906138c9565b6009546001600160a01b03163314611daf5760405162461bcd60e51b8152600401610ae790613756565b828114611dfe5760405162461bcd60e51b815260206004820152601760248201527f4172726179206c656e67746873206d69736d61746368210000000000000000006044820152606401610ae7565b60005b8381101561131c57611e51858583818110611e1e57611e1e613975565b9050602002016020810190611e339190612f90565b848484818110611e4557611e45613975565b90506020020135612475565b80611e5b81613904565b915050611e01565b610b2f33838361262e565b600f546001600160a01b03163314611e985760405162461bcd60e51b8152600401610ae7906136cb565b600f80546001600160a01b0319169055565b6018546001600160a01b031615611f2a57601854604051635937322960e11b81526001600160a01b0386811660048301528581166024830152604482018590529091169063b26e645290606401600060405180830381600087803b158015611f1157600080fd5b505af1158015611f25573d6000803e3d6000fd5b505050505b611f3684848484612723565b50505050565b6009546001600160a01b03163314611f665760405162461bcd60e51b8152600401610ae790613756565b600b805460ff1916831515179055600c8190555050565b6000818152600560205260409020546060906001600160a01b0316611ff65760405162461bcd60e51b815260206004820152602960248201527f455243373231493a20746f6b656e555249282920546f6b656e20646f6573206e6044820152686f742065786973742160b81b6064820152608401610ae7565b600261200183612881565b6003604051602001612015939291906135c3565b6040516020818303038152906040529050919050565b600d5460009060ff168015610e14575042600e541115905090565b6000805b60105481101561209a576010818154811061206757612067613975565b6000918252602090912001546001600160a01b031633141561208857600191505b8061209281613904565b91505061204a565b50806120e85760405162461bcd60e51b815260206004820152601a60248201527f596f7520617265206e6f742061207368617265686f6c646572210000000000006044820152606401610ae7565b50336000908152601260205260409020805460ff19166001179055565b6009546001600160a01b0316331461212f5760405162461bcd60e51b8152600401610ae790613756565b60005b6010548110156121e757601260006010838154811061215357612153613975565b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff166121d55760405162461bcd60e51b815260206004820152602560248201527f456d657267656e63792046756e6374696f6e7320617265206e6f7420756e6c6f604482015264636b65642160d81b6064820152608401610ae7565b806121df81613904565b915050612132565b506115473347612599565b60606010805480602002602001604051908101604052809291908181526020018280548015611d6e57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161222c575050505050905090565b6009546001600160a01b0316331461227d5760405162461bcd60e51b8152600401610ae790613756565b6001600160a01b0381166122e35760405162461bcd60e51b815260206004820152602760248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616044820152666464726573732160c81b6064820152608401610ae7565b6111c781612547565b60005b8151811015611f365761231c848484848151811061230f5761230f613975565b6020026020010151610d26565b8061232681613904565b9150506122ef565b6009546001600160a01b031633146123585760405162461bcd60e51b8152600401610ae790613756565b601355565b8051610b2f906003906020840190612db6565b6000818152600760205260409020546001600160a01b03838116911614610b2f57600081815260076020908152604080832080546001600160a01b0319166001600160a01b038781169182179092556005909352818420549151859492909116917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a45050565b6124023382612987565b61246a5760405162461bcd60e51b815260206004820152603360248201527f455243373231493a207472616e7366657246726f6d2829205f6973417070726f6044820152727665644f724f776e6572203d2066616c73652160681b6064820152608401610ae7565b610ce0838383612a82565b806004546124839190613824565b60145410156124d45760405162461bcd60e51b815260206004820152601c60248201527f4e6f7420656e6f75676820746f6b656e732072656d61696e696e6721000000006044820152606401610ae7565b600060045460016124e59190613824565b905060005b8281101561251757612505846125008385613824565b612c54565b8061250f81613904565b9150506124ea565b50816004600082825461252a9190613824565b9091555050505050565b8051610b2f906002906020840190612db6565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146125e6576040519150601f19603f3d011682016040523d82523d6000602084013e6125eb565b606091505b5050905080610ce05760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610ae7565b816001600160a01b0316836001600160a01b031614156126b65760405162461bcd60e51b815260206004820152603d60248201527f455243373231493a205f736574417070726f76616c466f72416c6c2829204f7760448201527f6e6572206d757374206e6f7420626520746865204f70657261746f72210000006064820152608401610ae7565b6001600160a01b03838116600081815260086020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61272e848484610d26565b6001600160a01b0383163b15611f36576000836001600160a01b031663150b7a023387868660405160240161276694939291906135f6565b6040516020818303038152906040529060e01b6020820180516001600160e01b03838183161783525050505060405161279f91906135a7565b600060405180830381855afa9150503d80600081146127da576040519150601f19603f3d011682016040523d82523d6000602084013e6127df565b606091505b509150506000818060200190518101906127f99190613453565b9050630a85bd0160e11b6001600160e01b03198216146128795760405162461bcd60e51b815260206004820152603560248201527f455243373231493a20736166655472616e7366657246726f6d282920746f5f206044820152746e6f742045524337323152656365697661626c652160581b6064820152608401610ae7565b505050505050565b6060816128a55750506040805180820190915260018152600360fc1b602082015290565b8160005b81156128cf57806128b981613904565b91506128c89050600a8361383c565b91506128a9565b6000816001600160401b038111156128e9576128e961398b565b6040519080825280601f01601f191660200182016040528015612913576020820181803683370190505b5090505b841561297f5781612927816138b2565b92506129369050600a8661391f565b612941906030613824565b60f81b81838151811061295657612956613975565b60200101906001600160f81b031916908160001a905350612978600a8661383c565b9450612917565b949350505050565b6000818152600560205260408120546001600160a01b0316612a085760405162461bcd60e51b815260206004820152603460248201527f455243373231493a205f6973417070726f7665644f724f776e65722829204f776044820152736e6572206973205a65726f20416464726573732160601b6064820152608401610ae7565b6000828152600560205260409020546001600160a01b03908116908416811480612a4b57506000838152600760205260409020546001600160a01b038581169116145b8061297f57506001600160a01b0380821660009081526008602090815260408083209388168352929052205460ff16949350505050565b6000818152600560205260409020546001600160a01b03848116911614612b055760405162461bcd60e51b815260206004820152603160248201527f455243373231493a205f7472616e736665722829205472616e73666572204e6f60448201527074204f776e6572206f6620546f6b656e2160781b6064820152608401610ae7565b6001600160a01b038216612b725760405162461bcd60e51b815260206004820152602e60248201527f455243373231493a205f7472616e736665722829205472616e7366657220746f60448201526d205a65726f20416464726573732160901b6064820152608401610ae7565b6000818152600760205260409020546001600160a01b031615612b9a57612b9a600082612370565b600081815260056020908152604080832080546001600160a01b0319166001600160a01b03878116919091179091558616835260069091528120805491612be0836138b2565b90915550506001600160a01b0382166000908152600660205260408120805491612c0983613904565b919050555080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6001600160a01b038216612cb85760405162461bcd60e51b815260206004820152602560248201527f455243373231493a205f6d696e742829204d696e7420746f205a65726f204164604482015264647265737360d81b6064820152608401610ae7565b6000818152600560205260409020546001600160a01b031615612d345760405162461bcd60e51b815260206004820152602e60248201527f455243373231493a205f6d696e74282920546f6b656e20746f204d696e74204160448201526d6c7265616479204578697374732160901b6064820152608401610ae7565b6001600160a01b0382166000908152600660205260408120805491612d5883613904565b909155505060008181526005602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054612dc2906138c9565b90600052602060002090601f016020900481019282612de45760008555612e2a565b82601f10612dfd57805160ff1916838001178555612e2a565b82800160010185558215612e2a579182015b82811115612e2a578251825591602001919060010190612e0f565b50612e36929150612e3a565b5090565b5b80821115612e365760008155600101612e3b565b60008083601f840112612e6157600080fd5b5081356001600160401b03811115612e7857600080fd5b6020830191508360208260051b8501011115612e9357600080fd5b9250929050565b600082601f830112612eab57600080fd5b81356020612ec0612ebb83613801565b6137d1565b80838252828201915082860187848660051b8901011115612ee057600080fd5b60005b85811015612eff57813584529284019290840190600101612ee3565b5090979650505050505050565b80358015158114612f1c57600080fd5b919050565b600082601f830112612f3257600080fd5b81356001600160401b03811115612f4b57612f4b61398b565b612f5e601f8201601f19166020016137d1565b818152846020838601011115612f7357600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215612fa257600080fd5b8135612fad816139a1565b9392505050565b60008060408385031215612fc757600080fd5b8235612fd2816139a1565b91506020830135612fe2816139a1565b809150509250929050565b60008060006060848603121561300257600080fd5b833561300d816139a1565b9250602084013561301d816139a1565b915060408401356001600160401b0381111561303857600080fd5b61304486828701612e9a565b9150509250925092565b6000806000806080858703121561306457600080fd5b843561306f816139a1565b9350602085013561307f816139a1565b925060408501356001600160401b038082111561309b57600080fd5b6130a788838901612e9a565b935060608701359150808211156130bd57600080fd5b506130ca87828801612f21565b91505092959194509250565b6000806000606084860312156130eb57600080fd5b83356130f6816139a1565b92506020840135613106816139a1565b929592945050506040919091013590565b6000806000806080858703121561312d57600080fd5b8435613138816139a1565b93506020850135613148816139a1565b92506040850135915060608501356001600160401b0381111561316a57600080fd5b6130ca87828801612f21565b6000806040838503121561318957600080fd5b8235613194816139a1565b91506020838101356001600160401b038111156131b057600080fd5b8401601f810186136131c157600080fd5b80356131cf612ebb82613801565b80828252848201915084840189868560051b87010111156131ef57600080fd5b600094505b838510156132125780358352600194909401939185019185016131f4565b5080955050505050509250929050565b6000806040838503121561323557600080fd5b8235613240816139a1565b915061324e60208401612f0c565b90509250929050565b6000806040838503121561326a57600080fd5b8235613275816139a1565b946020939093013593505050565b6000806000806040858703121561329957600080fd5b84356001600160401b03808211156132b057600080fd5b6132bc88838901612e4f565b909650945060208701359150808211156132d557600080fd5b506132e287828801612e4f565b95989497509550505050565b6000806040838503121561330157600080fd5b82356001600160401b038082111561331857600080fd5b818501915085601f83011261332c57600080fd5b8135602061333c612ebb83613801565b8083825282820191508286018a848660051b890101111561335c57600080fd5b600096505b84871015613388578035613374816139a1565b835260019690960195918301918301613361565b509650508601359250508082111561339f57600080fd5b506133ac85828601612e9a565b9150509250929050565b6000806000604084860312156133cb57600080fd5b83356001600160401b038111156133e157600080fd5b6133ed86828701612e4f565b909790965060209590950135949350505050565b6000806040838503121561341457600080fd5b61327583612f0c565b60006020828403121561342f57600080fd5b5035919050565b60006020828403121561344857600080fd5b8135612fad816139b6565b60006020828403121561346557600080fd5b8151612fad816139b6565b6000806020838503121561348357600080fd5b82356001600160401b038082111561349a57600080fd5b818501915085601f8301126134ae57600080fd5b8135818111156134bd57600080fd5b8660208285010111156134cf57600080fd5b60209290920196919550909350505050565b600081518084526134f9816020860160208601613886565b601f01601f19169290920160200192915050565b8054600090600181811c908083168061352757607f831692505b602080841082141561354957634e487b7160e01b600052602260045260246000fd5b81801561355d576001811461356e5761359b565b60ff1986168952848901965061359b565b60008881526020902060005b868110156135935781548b82015290850190830161357a565b505084890196505b50505050505092915050565b600082516135b9818460208701613886565b9190910192915050565b60006135cf828661350d565b84516135df818360208901613886565b6135eb8183018661350d565b979650505050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613629908301846134e1565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156136745783516001600160a01b03168352928401929184019160010161364f565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156136745783518352928401929184019160010161369c565b602081526000612fad60208301846134e1565b60208082526028908201527f50617961626c65476f7665726e616e63653a2043616c6c6572206973206e6f74604082015267205365747465722160c01b606082015260800190565b60208082526023908201527f50617961626c6520676f7665726e616e6365206c656e677468206d69736d617460408201526263682160e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526026908201527f50617961626c6520476f7665726e616e636520536861726573206973206e6f7460408201526520313030302160d01b606082015260800190565b604051601f8201601f191681016001600160401b03811182821017156137f9576137f961398b565b604052919050565b60006001600160401b0382111561381a5761381a61398b565b5060051b60200190565b6000821982111561383757613837613933565b500190565b60008261384b5761384b613949565b500490565b600081600019048311821515161561386a5761386a613933565b500290565b60008282101561388157613881613933565b500390565b60005b838110156138a1578181015183820152602001613889565b83811115611f365750506000910152565b6000816138c1576138c1613933565b506000190190565b600181811c908216806138dd57607f821691505b602082108114156138fe57634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561391857613918613933565b5060010190565b60008261392e5761392e613949565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146111c757600080fd5b6001600160e01b0319811681146111c757600080fdfea264697066735822122097b68da279f38edfa74254463fc53a99bebdef28dc9a7f58ff02073adce01cbe64736f6c63430008070033

Deployed Bytecode

0x60806040526004361061036f5760003560e01c8063715018a6116101c6578063c7b89336116100f7578063dc92f8f011610095578063e985e9c51161006f578063e985e9c5146109eb578063f2fde38b14610a26578063f487c60214610a46578063f4a0a52814610a6657600080fd5b8063dc92f8f01461099e578063e47fa66e146109b3578063e8315742146109d557600080fd5b8063d311c80d116100d1578063d311c80d14610947578063d66359591461095d578063d9d2b4cd14610973578063dc30158b1461098857600080fd5b8063c7b89336146108e5578063c87b56dd14610912578063cb9fe5861461093257600080fd5b806395d89b4111610164578063a91f88351161013e578063a91f88351461087d578063b69ef8a814610892578063b88d4fde146108a5578063c1f730a4146108c557600080fd5b806395d89b41146108285780639d2087ff1461083d578063a22cb4651461085d57600080fd5b8063861a9a65116101a0578063861a9a65146107b95780638b2998f8146107d95780638bdc048a146107ee5780638da5cb5b1461080857600080fd5b8063715018a61461076f5780637362377b146107845780637cb647591461079957600080fd5b806330176e13116102a05780634959f0f51161023e5780636352211e116102185780636352211e146106d65780636817c76c1461070c5780636e9d287b1461072257806370a082311461074257600080fd5b80634959f0f51461068c578063524c7ff8146106a15780635a23dd99146106b657600080fd5b806340f480e71161027a57806340f480e71461060957806342842e0e1461061f578063438b63001461063f578063484b973c1461066c57600080fd5b806330176e13146105a957806339e96c7b146105c95780633a3473b6146105e957600080fd5b806323af31261161030d57806326202370116102e7578063262023701461054e5780632904e6d9146105635780632db11544146105765780632f745c591461058957600080fd5b806323af3126146104de57806323b872dd1461050e57806323ffce851461052e57600080fd5b8063081812fc11610349578063081812fc1461042c578063095ea7b31461047a57806318160ddd1461049a57806319c3fa32146104be57600080fd5b806301ffc9a7146103b357806302ffaed1146103e857806306fdde031461040a57600080fd5b366103ae57604080513381523460208201527f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874910160405180910390a1005b600080fd5b3480156103bf57600080fd5b506103d36103ce366004613436565b610a86565b60405190151581526020015b60405180910390f35b3480156103f457600080fd5b50610408610403366004613470565b610abd565b005b34801561041657600080fd5b5061041f610b33565b6040516103df91906136b8565b34801561043857600080fd5b5061046261044736600461341d565b6007602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103df565b34801561048657600080fd5b50610408610495366004613257565b610bc1565b3480156104a657600080fd5b506104b060045481565b6040519081526020016103df565b3480156104ca57600080fd5b506104086104d9366004613401565b610ce5565b3480156104ea57600080fd5b506103d36104f9366004612f90565b60126020526000908152604090205460ff1681565b34801561051a57600080fd5b506104086105293660046130d6565b610d26565b34801561053a57600080fd5b50610408610549366004612f90565b610db1565b34801561055a57600080fd5b506103d3610dfd565b6104086105713660046133b6565b610e19565b61040861058436600461341d565b611074565b34801561059557600080fd5b506104b06105a4366004613257565b6111ca565b3480156105b557600080fd5b506104086105c4366004613470565b6111fb565b3480156105d557600080fd5b506104086105e436600461341d565b611264565b3480156105f557600080fd5b5061040861060436600461304e565b6112d9565b34801561061557600080fd5b506104b060155481565b34801561062b57600080fd5b5061040861063a3660046130d6565b611323565b34801561064b57600080fd5b5061065f61065a366004612f90565b61133e565b6040516103df9190613680565b34801561067857600080fd5b50610408610687366004613257565b611475565b34801561069857600080fd5b506104086114a9565b3480156106ad57600080fd5b5061065f611549565b3480156106c257600080fd5b506103d36106d1366004613176565b6117cb565b3480156106e257600080fd5b506104626106f136600461341d565b6005602052600090815260409020546001600160a01b031681565b34801561071857600080fd5b506104b060135481565b34801561072e57600080fd5b5061040861073d3660046132ee565b6118ef565b34801561074e57600080fd5b506104b061075d366004612f90565b60066020526000908152604090205481565b34801561077b57600080fd5b50610408611b15565b34801561079057600080fd5b50610408611b49565b3480156107a557600080fd5b506104086107b436600461341d565b611ced565b3480156107c557600080fd5b50601854610462906001600160a01b031681565b3480156107e557600080fd5b5061065f611d20565b3480156107fa57600080fd5b50600b546103d39060ff1681565b34801561081457600080fd5b50600954610462906001600160a01b031681565b34801561083457600080fd5b5061041f611d78565b34801561084957600080fd5b50610408610858366004613283565b611d85565b34801561086957600080fd5b50610408610878366004613222565b611e63565b34801561088957600080fd5b50610408611e6e565b34801561089e57600080fd5b50476104b0565b3480156108b157600080fd5b506104086108c0366004613117565b611eaa565b3480156108d157600080fd5b506104086108e0366004613401565b611f3c565b3480156108f157600080fd5b506104b0610900366004612f90565b60166020526000908152604090205481565b34801561091e57600080fd5b5061041f61092d36600461341d565b611f7d565b34801561093e57600080fd5b506103d361202b565b34801561095357600080fd5b506104b0600e5481565b34801561096957600080fd5b506104b0600c5481565b34801561097f57600080fd5b50610408612046565b34801561099457600080fd5b506104b060175481565b3480156109aa57600080fd5b50610408612105565b3480156109bf57600080fd5b506109c86121f2565b6040516103df9190613633565b3480156109e157600080fd5b506104b060145481565b3480156109f757600080fd5b506103d3610a06366004612fb4565b600860209081526000928352604080842090915290825290205460ff1681565b348015610a3257600080fd5b50610408610a41366004612f90565b612253565b348015610a5257600080fd5b50610408610a61366004612fed565b6122ec565b348015610a7257600080fd5b50610408610a8136600461341d565b61232e565b60006380ac58cd60e01b6001600160e01b031983161480610ab75750635b5e139f60e01b6001600160e01b03198316145b92915050565b6009546001600160a01b03163314610af05760405162461bcd60e51b8152600401610ae790613756565b60405180910390fd5b610b2f82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061235d92505050565b5050565b60008054610b40906138c9565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6c906138c9565b8015610bb95780601f10610b8e57610100808354040283529160200191610bb9565b820191906000526020600020905b815481529060010190602001808311610b9c57829003601f168201915b505050505081565b6000818152600560205260409020546001600160a01b03908116908316811415610c415760405162461bcd60e51b815260206004820152602b60248201527f455243373231493a20617070726f766528292043616e6e6f7420617070726f7660448201526a6520796f757273656c662160a81b6064820152608401610ae7565b336001600160a01b0382161480610c7b57506001600160a01b038116600090815260086020908152604080832033845290915290205460ff165b610cd65760405162461bcd60e51b815260206004820152602660248201527f455243373231493a2043616c6c6572206e6f74206f776e6572206f7220417070604482015265726f7665642160d01b6064820152608401610ae7565b610ce08383612370565b505050565b6009546001600160a01b03163314610d0f5760405162461bcd60e51b8152600401610ae790613756565b600d805460ff1916831515179055600e8190555050565b6018546001600160a01b031615610da657601854604051635937322960e11b81526001600160a01b0385811660048301528481166024830152604482018490529091169063b26e645290606401600060405180830381600087803b158015610d8d57600080fd5b505af1158015610da1573d6000803e3d6000fd5b505050505b610ce08383836123f8565b6009546001600160a01b03163314610ddb5760405162461bcd60e51b8152600401610ae790613756565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b600b5460009060ff168015610e14575042600c5411155b905090565b333214610e5e5760405162461bcd60e51b81526020600482015260136024820152724e6f20536d61727420436f6e7472616374732160681b6044820152606401610ae7565b600d5460ff168015610e72575042600e5411155b610ec95760405162461bcd60e51b815260206004820152602260248201527f57686974656c697374204d696e74206973206e6f7420656e61626c6564207965604482015261742160f01b6064820152608401610ae7565b610f06338484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506117cb92505050565b610f525760405162461bcd60e51b815260206004820152601860248201527f596f7520617265206e6f742057686974656c69737465642100000000000000006044820152606401610ae7565b33600090815260166020526040902054610f6d908290613824565b6015541015610ff35760405162461bcd60e51b815260206004820152604660248201527f4f766572204d6178204d696e747320706572205458206f72204e6f7420656e6f60448201527f7567682077686974656c697374206d696e74732072656d61696e696e6720666f6064820152657220796f752160d01b608482015260a401610ae7565b806013546110019190613850565b34146110455760405162461bcd60e51b8152602060048201526013602482015272496e76616c69642076616c75652073656e742160681b6044820152606401610ae7565b3360009081526016602052604081208054839290611064908490613824565b90915550610ce090503382612475565b3332146110b95760405162461bcd60e51b81526020600482015260136024820152724e6f20536d61727420436f6e7472616374732160681b6044820152606401610ae7565b600b5460ff1680156110cd575042600c5411155b6111195760405162461bcd60e51b815260206004820152601f60248201527f5075626c6963204d696e74206973206e6f7420656e61626c65642079657421006044820152606401610ae7565b80601754101561116b5760405162461bcd60e51b815260206004820152601b60248201527f4f766572206d61786d696d756d206d696e7473207065722054782100000000006044820152606401610ae7565b806013546111799190613850565b34146111bd5760405162461bcd60e51b8152602060048201526013602482015272496e76616c69642076616c75652073656e742160681b6044820152606401610ae7565b6111c73382612475565b50565b6000806111d68461133e565b90508083815181106111ea576111ea613975565b602002602001015191505092915050565b6009546001600160a01b031633146112255760405162461bcd60e51b8152600401610ae790613756565b610b2f82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061253492505050565b6009546001600160a01b0316331461128e5760405162461bcd60e51b8152600401610ae790613756565b8060045410156112d45760405162461bcd60e51b815260206004820152601160248201527042656c6f7720746f74616c537570706c7960781b6044820152606401610ae7565b601455565b60005b825181101561131c5761130a85858584815181106112fc576112fc613975565b602002602001015185611eaa565b8061131481613904565b9150506112dc565b5050505050565b610ce083838360405180602001604052806000815250611eaa565b6001600160a01b038116600090815260066020526040812054606091816001600160401b038111156113725761137261398b565b60405190808252806020026020018201604052801561139b578160200160208202803683370190505b50600454909150600090815b8181101561146a576000818152600560205260409020546001600160a01b03161580156113f75750836113db60018761386f565b815181106113eb576113eb613975565b60200260200101516000145b1561140a578161140681613904565b9250505b6000818152600560205260409020546001600160a01b0388811691161415611458578084848151811061143f5761143f613975565b60209081029190910101528261145481613904565b9350505b8061146281613904565b9150506113a7565b509195945050505050565b6009546001600160a01b0316331461149f5760405162461bcd60e51b8152600401610ae790613756565b610b2f8282612475565b600f546001600160a01b031633146114d35760405162461bcd60e51b8152600401610ae7906136cb565b601054156115135760108054806114ec576114ec61395f565b600082815260209020810160001990810180546001600160a01b03191690550190556114d3565b6011541561154757601180548061152c5761152c61395f565b60019003818190600052602060002001600090559055611513565b565b6009546060906001600160a01b031633146115765760405162461bcd60e51b8152600401610ae790613756565b60105415801590611588575060115415155b6115d45760405162461bcd60e51b815260206004820152601f60248201527f50617961626c6520676f7665726e616e6365206e6f74207365742079657421006044820152606401610ae7565b601154601054146115f75760405162461bcd60e51b8152600401610ae790613713565b6000805b601154811015611642576011818154811061161857611618613975565b90600052602060002001548261162e9190613824565b91508061163a81613904565b9150506115fb565b50806103e8146116645760405162461bcd60e51b8152600401610ae79061378b565b6010544790600090611677906002613824565b6001600160401b0381111561168e5761168e61398b565b6040519080825280602002602001820160405280156116b7578160200160208202803683370190505b50905060005b60105481101561172c576103e8601182815481106116dd576116dd613975565b9060005260206000200154846116f39190613850565b6116fd919061383c565b82828151811061170f5761170f613975565b60209081029190910101528061172481613904565b9150506116bd565b50601054815183918391811061174457611744613975565b60200260200101818152505060005b6010548110156117c35781818151811061176f5761176f613975565b602002602001015182601080549050600161178a9190613824565b8151811061179a5761179a613975565b602002602001018181516117ae9190613824565b905250806117bb81613904565b915050611753565b509250505090565b6040516bffffffffffffffffffffffff19606084901b166020820152600090819060340160405160208183030381529060405280519060200120905060005b83518110156118e35783818151811061182557611825613975565b602002602001015182106118835783818151811061184557611845613975565b602002602001015182604051602001611868929190918252602082015260400190565b604051602081830303815290604052805190602001206118cf565b8184828151811061189657611896613975565b60200260200101516040516020016118b8929190918252602082015260400190565b604051602081830303815290604052805190602001205b9150806118db81613904565b91505061180a565b50600a54149392505050565b600f546001600160a01b031633146119195760405162461bcd60e51b8152600401610ae7906136cb565b6010541580156119295750601154155b61199b5760405162461bcd60e51b815260206004820152603a60248201527f50617961626c6520476f7665726e616e636520616c726561647920736574212060448201527f546f2073657420616761696e2c207265736574206669727374210000000000006064820152608401610ae7565b80518251146119f85760405162461bcd60e51b815260206004820152602360248201527f4164647265737320616e6420536861726573206c656e677468206d69736d617460448201526263682160e81b6064820152608401610ae7565b6000805b8351811015611ac357828181518110611a1757611a17613975565b602002602001015182611a2a9190613824565b91506010848281518110611a4057611a40613975565b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b039092169190911790558251601190849083908110611a9257611a92613975565b6020908102919091018101518254600181018455600093845291909220015580611abb81613904565b9150506119fc565b50806103e814610ce05760405162461bcd60e51b815260206004820152601960248201527f546f74616c20536861726573206973206e6f74203130303021000000000000006044820152606401610ae7565b6009546001600160a01b03163314611b3f5760405162461bcd60e51b8152600401610ae790613756565b6115476000612547565b6009546001600160a01b03163314611b735760405162461bcd60e51b8152600401610ae790613756565b60105415801590611b85575060115415155b611bd15760405162461bcd60e51b815260206004820152601f60248201527f50617961626c6520676f7665726e616e6365206e6f74207365742079657421006044820152606401610ae7565b60115460105414611bf45760405162461bcd60e51b8152600401610ae790613713565b6000805b601154811015611c3f5760118181548110611c1557611c15613975565b906000526020600020015482611c2b9190613824565b915080611c3781613904565b915050611bf8565b50806103e814611c615760405162461bcd60e51b8152600401610ae79061378b565b4760005b601054811015610ce05760006103e860118381548110611c8757611c87613975565b906000526020600020015484611c9d9190613850565b611ca7919061383c565b9050611cda60108381548110611cbf57611cbf613975565b6000918252602090912001546001600160a01b031682612599565b5080611ce581613904565b915050611c65565b6009546001600160a01b03163314611d175760405162461bcd60e51b8152600401610ae790613756565b6111c781600a55565b60606011805480602002602001604051908101604052809291908181526020018280548015611d6e57602002820191906000526020600020905b815481526020019060010190808311611d5a575b5050505050905090565b60018054610b40906138c9565b6009546001600160a01b03163314611daf5760405162461bcd60e51b8152600401610ae790613756565b828114611dfe5760405162461bcd60e51b815260206004820152601760248201527f4172726179206c656e67746873206d69736d61746368210000000000000000006044820152606401610ae7565b60005b8381101561131c57611e51858583818110611e1e57611e1e613975565b9050602002016020810190611e339190612f90565b848484818110611e4557611e45613975565b90506020020135612475565b80611e5b81613904565b915050611e01565b610b2f33838361262e565b600f546001600160a01b03163314611e985760405162461bcd60e51b8152600401610ae7906136cb565b600f80546001600160a01b0319169055565b6018546001600160a01b031615611f2a57601854604051635937322960e11b81526001600160a01b0386811660048301528581166024830152604482018590529091169063b26e645290606401600060405180830381600087803b158015611f1157600080fd5b505af1158015611f25573d6000803e3d6000fd5b505050505b611f3684848484612723565b50505050565b6009546001600160a01b03163314611f665760405162461bcd60e51b8152600401610ae790613756565b600b805460ff1916831515179055600c8190555050565b6000818152600560205260409020546060906001600160a01b0316611ff65760405162461bcd60e51b815260206004820152602960248201527f455243373231493a20746f6b656e555249282920546f6b656e20646f6573206e6044820152686f742065786973742160b81b6064820152608401610ae7565b600261200183612881565b6003604051602001612015939291906135c3565b6040516020818303038152906040529050919050565b600d5460009060ff168015610e14575042600e541115905090565b6000805b60105481101561209a576010818154811061206757612067613975565b6000918252602090912001546001600160a01b031633141561208857600191505b8061209281613904565b91505061204a565b50806120e85760405162461bcd60e51b815260206004820152601a60248201527f596f7520617265206e6f742061207368617265686f6c646572210000000000006044820152606401610ae7565b50336000908152601260205260409020805460ff19166001179055565b6009546001600160a01b0316331461212f5760405162461bcd60e51b8152600401610ae790613756565b60005b6010548110156121e757601260006010838154811061215357612153613975565b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff166121d55760405162461bcd60e51b815260206004820152602560248201527f456d657267656e63792046756e6374696f6e7320617265206e6f7420756e6c6f604482015264636b65642160d81b6064820152608401610ae7565b806121df81613904565b915050612132565b506115473347612599565b60606010805480602002602001604051908101604052809291908181526020018280548015611d6e57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161222c575050505050905090565b6009546001600160a01b0316331461227d5760405162461bcd60e51b8152600401610ae790613756565b6001600160a01b0381166122e35760405162461bcd60e51b815260206004820152602760248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616044820152666464726573732160c81b6064820152608401610ae7565b6111c781612547565b60005b8151811015611f365761231c848484848151811061230f5761230f613975565b6020026020010151610d26565b8061232681613904565b9150506122ef565b6009546001600160a01b031633146123585760405162461bcd60e51b8152600401610ae790613756565b601355565b8051610b2f906003906020840190612db6565b6000818152600760205260409020546001600160a01b03838116911614610b2f57600081815260076020908152604080832080546001600160a01b0319166001600160a01b038781169182179092556005909352818420549151859492909116917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a45050565b6124023382612987565b61246a5760405162461bcd60e51b815260206004820152603360248201527f455243373231493a207472616e7366657246726f6d2829205f6973417070726f6044820152727665644f724f776e6572203d2066616c73652160681b6064820152608401610ae7565b610ce0838383612a82565b806004546124839190613824565b60145410156124d45760405162461bcd60e51b815260206004820152601c60248201527f4e6f7420656e6f75676820746f6b656e732072656d61696e696e6721000000006044820152606401610ae7565b600060045460016124e59190613824565b905060005b8281101561251757612505846125008385613824565b612c54565b8061250f81613904565b9150506124ea565b50816004600082825461252a9190613824565b9091555050505050565b8051610b2f906002906020840190612db6565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146125e6576040519150601f19603f3d011682016040523d82523d6000602084013e6125eb565b606091505b5050905080610ce05760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610ae7565b816001600160a01b0316836001600160a01b031614156126b65760405162461bcd60e51b815260206004820152603d60248201527f455243373231493a205f736574417070726f76616c466f72416c6c2829204f7760448201527f6e6572206d757374206e6f7420626520746865204f70657261746f72210000006064820152608401610ae7565b6001600160a01b03838116600081815260086020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61272e848484610d26565b6001600160a01b0383163b15611f36576000836001600160a01b031663150b7a023387868660405160240161276694939291906135f6565b6040516020818303038152906040529060e01b6020820180516001600160e01b03838183161783525050505060405161279f91906135a7565b600060405180830381855afa9150503d80600081146127da576040519150601f19603f3d011682016040523d82523d6000602084013e6127df565b606091505b509150506000818060200190518101906127f99190613453565b9050630a85bd0160e11b6001600160e01b03198216146128795760405162461bcd60e51b815260206004820152603560248201527f455243373231493a20736166655472616e7366657246726f6d282920746f5f206044820152746e6f742045524337323152656365697661626c652160581b6064820152608401610ae7565b505050505050565b6060816128a55750506040805180820190915260018152600360fc1b602082015290565b8160005b81156128cf57806128b981613904565b91506128c89050600a8361383c565b91506128a9565b6000816001600160401b038111156128e9576128e961398b565b6040519080825280601f01601f191660200182016040528015612913576020820181803683370190505b5090505b841561297f5781612927816138b2565b92506129369050600a8661391f565b612941906030613824565b60f81b81838151811061295657612956613975565b60200101906001600160f81b031916908160001a905350612978600a8661383c565b9450612917565b949350505050565b6000818152600560205260408120546001600160a01b0316612a085760405162461bcd60e51b815260206004820152603460248201527f455243373231493a205f6973417070726f7665644f724f776e65722829204f776044820152736e6572206973205a65726f20416464726573732160601b6064820152608401610ae7565b6000828152600560205260409020546001600160a01b03908116908416811480612a4b57506000838152600760205260409020546001600160a01b038581169116145b8061297f57506001600160a01b0380821660009081526008602090815260408083209388168352929052205460ff16949350505050565b6000818152600560205260409020546001600160a01b03848116911614612b055760405162461bcd60e51b815260206004820152603160248201527f455243373231493a205f7472616e736665722829205472616e73666572204e6f60448201527074204f776e6572206f6620546f6b656e2160781b6064820152608401610ae7565b6001600160a01b038216612b725760405162461bcd60e51b815260206004820152602e60248201527f455243373231493a205f7472616e736665722829205472616e7366657220746f60448201526d205a65726f20416464726573732160901b6064820152608401610ae7565b6000818152600760205260409020546001600160a01b031615612b9a57612b9a600082612370565b600081815260056020908152604080832080546001600160a01b0319166001600160a01b03878116919091179091558616835260069091528120805491612be0836138b2565b90915550506001600160a01b0382166000908152600660205260408120805491612c0983613904565b919050555080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6001600160a01b038216612cb85760405162461bcd60e51b815260206004820152602560248201527f455243373231493a205f6d696e742829204d696e7420746f205a65726f204164604482015264647265737360d81b6064820152608401610ae7565b6000818152600560205260409020546001600160a01b031615612d345760405162461bcd60e51b815260206004820152602e60248201527f455243373231493a205f6d696e74282920546f6b656e20746f204d696e74204160448201526d6c7265616479204578697374732160901b6064820152608401610ae7565b6001600160a01b0382166000908152600660205260408120805491612d5883613904565b909155505060008181526005602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054612dc2906138c9565b90600052602060002090601f016020900481019282612de45760008555612e2a565b82601f10612dfd57805160ff1916838001178555612e2a565b82800160010185558215612e2a579182015b82811115612e2a578251825591602001919060010190612e0f565b50612e36929150612e3a565b5090565b5b80821115612e365760008155600101612e3b565b60008083601f840112612e6157600080fd5b5081356001600160401b03811115612e7857600080fd5b6020830191508360208260051b8501011115612e9357600080fd5b9250929050565b600082601f830112612eab57600080fd5b81356020612ec0612ebb83613801565b6137d1565b80838252828201915082860187848660051b8901011115612ee057600080fd5b60005b85811015612eff57813584529284019290840190600101612ee3565b5090979650505050505050565b80358015158114612f1c57600080fd5b919050565b600082601f830112612f3257600080fd5b81356001600160401b03811115612f4b57612f4b61398b565b612f5e601f8201601f19166020016137d1565b818152846020838601011115612f7357600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215612fa257600080fd5b8135612fad816139a1565b9392505050565b60008060408385031215612fc757600080fd5b8235612fd2816139a1565b91506020830135612fe2816139a1565b809150509250929050565b60008060006060848603121561300257600080fd5b833561300d816139a1565b9250602084013561301d816139a1565b915060408401356001600160401b0381111561303857600080fd5b61304486828701612e9a565b9150509250925092565b6000806000806080858703121561306457600080fd5b843561306f816139a1565b9350602085013561307f816139a1565b925060408501356001600160401b038082111561309b57600080fd5b6130a788838901612e9a565b935060608701359150808211156130bd57600080fd5b506130ca87828801612f21565b91505092959194509250565b6000806000606084860312156130eb57600080fd5b83356130f6816139a1565b92506020840135613106816139a1565b929592945050506040919091013590565b6000806000806080858703121561312d57600080fd5b8435613138816139a1565b93506020850135613148816139a1565b92506040850135915060608501356001600160401b0381111561316a57600080fd5b6130ca87828801612f21565b6000806040838503121561318957600080fd5b8235613194816139a1565b91506020838101356001600160401b038111156131b057600080fd5b8401601f810186136131c157600080fd5b80356131cf612ebb82613801565b80828252848201915084840189868560051b87010111156131ef57600080fd5b600094505b838510156132125780358352600194909401939185019185016131f4565b5080955050505050509250929050565b6000806040838503121561323557600080fd5b8235613240816139a1565b915061324e60208401612f0c565b90509250929050565b6000806040838503121561326a57600080fd5b8235613275816139a1565b946020939093013593505050565b6000806000806040858703121561329957600080fd5b84356001600160401b03808211156132b057600080fd5b6132bc88838901612e4f565b909650945060208701359150808211156132d557600080fd5b506132e287828801612e4f565b95989497509550505050565b6000806040838503121561330157600080fd5b82356001600160401b038082111561331857600080fd5b818501915085601f83011261332c57600080fd5b8135602061333c612ebb83613801565b8083825282820191508286018a848660051b890101111561335c57600080fd5b600096505b84871015613388578035613374816139a1565b835260019690960195918301918301613361565b509650508601359250508082111561339f57600080fd5b506133ac85828601612e9a565b9150509250929050565b6000806000604084860312156133cb57600080fd5b83356001600160401b038111156133e157600080fd5b6133ed86828701612e4f565b909790965060209590950135949350505050565b6000806040838503121561341457600080fd5b61327583612f0c565b60006020828403121561342f57600080fd5b5035919050565b60006020828403121561344857600080fd5b8135612fad816139b6565b60006020828403121561346557600080fd5b8151612fad816139b6565b6000806020838503121561348357600080fd5b82356001600160401b038082111561349a57600080fd5b818501915085601f8301126134ae57600080fd5b8135818111156134bd57600080fd5b8660208285010111156134cf57600080fd5b60209290920196919550909350505050565b600081518084526134f9816020860160208601613886565b601f01601f19169290920160200192915050565b8054600090600181811c908083168061352757607f831692505b602080841082141561354957634e487b7160e01b600052602260045260246000fd5b81801561355d576001811461356e5761359b565b60ff1986168952848901965061359b565b60008881526020902060005b868110156135935781548b82015290850190830161357a565b505084890196505b50505050505092915050565b600082516135b9818460208701613886565b9190910192915050565b60006135cf828661350d565b84516135df818360208901613886565b6135eb8183018661350d565b979650505050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613629908301846134e1565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156136745783516001600160a01b03168352928401929184019160010161364f565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156136745783518352928401929184019160010161369c565b602081526000612fad60208301846134e1565b60208082526028908201527f50617961626c65476f7665726e616e63653a2043616c6c6572206973206e6f74604082015267205365747465722160c01b606082015260800190565b60208082526023908201527f50617961626c6520676f7665726e616e6365206c656e677468206d69736d617460408201526263682160e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526026908201527f50617961626c6520476f7665726e616e636520536861726573206973206e6f7460408201526520313030302160d01b606082015260800190565b604051601f8201601f191681016001600160401b03811182821017156137f9576137f961398b565b604052919050565b60006001600160401b0382111561381a5761381a61398b565b5060051b60200190565b6000821982111561383757613837613933565b500190565b60008261384b5761384b613949565b500490565b600081600019048311821515161561386a5761386a613933565b500290565b60008282101561388157613881613933565b500390565b60005b838110156138a1578181015183820152602001613889565b83811115611f365750506000910152565b6000816138c1576138c1613933565b506000190190565b600181811c908216806138dd57607f821691505b602082108114156138fe57634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561391857613918613933565b5060010190565b60008261392e5761392e613949565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146111c757600080fd5b6001600160e01b0319811681146111c757600080fdfea264697066735822122097b68da279f38edfa74254463fc53a99bebdef28dc9a7f58ff02073adce01cbe64736f6c63430008070033

Deployed Bytecode Sourcemap

18536:3556:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12442:31;;;12451:10;14906:51:1;;12463:9:0;14988:2:1;14973:18;;14966:34;12442:31:0;;14879:18:1;12442:31:0;;;;;;;18536:3556;;;;;6563:159;;;;;;;;;;-1:-1:-1;6563:159:0;;;;;:::i;:::-;;:::i;:::-;;;16492:14:1;;16485:22;16467:41;;16455:2;16440:18;6563:159:0;;;;;;;;11291:115;;;;;;;;;;-1:-1:-1;11291:115:0;;;;;:::i;:::-;;:::i;:::-;;280:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;633:46::-;;;;;;;;;;-1:-1:-1;633:46:0;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;633:46:0;;;;;;-1:-1:-1;;;;;13815:32:1;;;13797:51;;13785:2;13770:18;633:46:0;13651:203:1;4560:352:0;;;;;;;;;;-1:-1:-1;4560:352:0;;;;;:::i;:::-;;:::i;495:26::-;;;;;;;;;;;;;;;;;;;30029:25:1;;;30017:2;30002:18;495:26:0;29883:177:1;11721:122:0;;;;;;;;;;-1:-1:-1;11721:122:0;;;;;:::i;:::-;;:::i;12626:58::-;;;;;;;;;;-1:-1:-1;12626:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21490:279;;;;;;;;;;-1:-1:-1;21490:279:0;;;;;:::i;:::-;;:::i;19271:103::-;;;;;;;;;;-1:-1:-1;19271:103:0;;;;;:::i;:::-;;:::i;10065:134::-;;;;;;;;;;;;;:::i;20285:618::-;;;;;;:::i;:::-;;:::i;20941:311::-;;;;;;:::i;:::-;;:::i;7827:203::-;;;;;;;;;;-1:-1:-1;7827:203:0;;;;;:::i;:::-;;:::i;11177:108::-;;;;;;;;;;-1:-1:-1;11177:108:0;;;;;:::i;:::-;;:::i;19028:168::-;;;;;;;;;;-1:-1:-1;19028:168:0;;;;;:::i;:::-;;:::i;6266:263::-;;;;;;;;;;-1:-1:-1;6266:263:0;;;;;:::i;:::-;;:::i;18779:32::-;;;;;;;;;;;;;;;;5839:148;;;;;;;;;;-1:-1:-1;5839:148:0;;;;;:::i;:::-;;:::i;7187:538::-;;;;;;;;;;-1:-1:-1;7187:538:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;19805:110::-;;;;;;;;;;-1:-1:-1;19805:110:0;;;;;:::i;:::-;;:::i;13696:301::-;;;;;;;;;;;;;:::i;15699:1753::-;;;;;;;;;;;;;:::i;9064:405::-;;;;;;;;;;-1:-1:-1;9064:405:0;;;;;:::i;:::-;;:::i;529:42::-;;;;;;;;;;-1:-1:-1;529:42:0;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;529:42:0;;;18695:37;;;;;;;;;;;;;;;;12958:732;;;;;;;;;;-1:-1:-1;12958:732:0;;;;;:::i;:::-;;:::i;579:44::-;;;;;;;;;;-1:-1:-1;579:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;8764:105;;;;;;;;;;;;;:::i;14444:1247::-;;;;;;;;;;;;;:::i;11433:109::-;;;;;;;;;;-1:-1:-1;11433:109:0;;;;;:::i;:::-;;:::i;19245:19::-;;;;;;;;;;-1:-1:-1;19245:19:0;;;;-1:-1:-1;;;;;19245:19:0;;;14285:124;;;;;;;;;;;;;:::i;9700:30::-;;;;;;;;;;-1:-1:-1;9700:30:0;;;;;;;;8070:20;;;;;;;;;;-1:-1:-1;8070:20:0;;;;-1:-1:-1;;;;;8070:20:0;;;300;;;;;;;;;;;;;:::i;19921:323::-;;;;;;;;;;-1:-1:-1;19921:323:0;;;;;:::i;:::-;;:::i;4918:148::-;;;;;;;;;;-1:-1:-1;4918:148:0;;;;;:::i;:::-;;:::i;12189:135::-;;;;;;;;;;;;;:::i;14039:96::-;;;;;;;;;;-1:-1:-1;14106:21:0;14039:96;;21775:314;;;;;;;;;;-1:-1:-1;21775:314:0;;;;;:::i;:::-;;:::i;11570:116::-;;;;;;;;;;-1:-1:-1;11570:116:0;;;;;:::i;:::-;;:::i;18818:51::-;;;;;;;;;;-1:-1:-1;18818:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;6730:281;;;;;;;;;;-1:-1:-1;6730:281:0;;;;;:::i;:::-;;:::i;10665:143::-;;;;;;;;;;;;;:::i;10308:33::-;;;;;;;;;;;;;;;;9732:30;;;;;;;;;;;;;;;;17843:136;;;;;;;;;;;;;:::i;18878:33::-;;;;;;;;;;;;;;;;18274:137;;;;;;;;;;;;;:::i;14141:138::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;18739:31::-;;;;;;;;;;;;;;;;687:68;;;;;;;;;;-1:-1:-1;687:68:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;8551:207;;;;;;;;;;-1:-1:-1;8551:207:0;;;;;:::i;:::-;;:::i;6032:228::-;;;;;;;;;;-1:-1:-1;6032:228:0;;;;;:::i;:::-;;:::i;18920:102::-;;;;;;;;;;-1:-1:-1;18920:102:0;;;;;:::i;:::-;;:::i;6563:159::-;6632:4;-1:-1:-1;;;;;;;;;6657:26:0;;;;:56;;-1:-1:-1;;;;;;;;;;6687:26:0;;;6657:56;6649:65;6563:159;-1:-1:-1;;6563:159:0:o;11291:115::-;8265:5;;-1:-1:-1;;;;;8265:5:0;8274:10;8265:19;8257:64;;;;-1:-1:-1;;;8257:64:0;;;;;;;:::i;:::-;;;;;;;;;11372:26:::1;11393:4;;11372:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;11372:20:0::1;::::0;-1:-1:-1;;;11372:26:0:i:1;:::-;11291:115:::0;;:::o;280:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4560:352::-;4634:14;4651:17;;;:7;:17;;;;;;-1:-1:-1;;;;;4651:17:0;;;;4687:13;;;;;4679:69;;;;-1:-1:-1;;;4679:69:0;;21441:2:1;4679:69:0;;;21423:21:1;21480:2;21460:18;;;21453:30;21519:34;21499:18;;;21492:62;-1:-1:-1;;;21570:18:1;;;21563:41;21621:19;;4679:69:0;21239:407:1;4679:69:0;4767:10;-1:-1:-1;;;;;4767:20:0;;;;:60;;-1:-1:-1;;;;;;4791:24:0;;;;;;:16;:24;;;;;;;;4816:10;4791:36;;;;;;;;;;4767:60;4759:111;;;;-1:-1:-1;;;4759:111:0;;20682:2:1;4759:111:0;;;20664:21:1;20721:2;20701:18;;;20694:30;20760:34;20740:18;;;20733:62;-1:-1:-1;;;20811:18:1;;;20804:36;20857:19;;4759:111:0;20480:402:1;4759:111:0;4881:23;4890:3;4895:8;4881;:23::i;:::-;4623:289;4560:352;;:::o;11721:122::-;8265:5;;-1:-1:-1;;;;;8265:5:0;8274:10;8265:19;8257:64;;;;-1:-1:-1;;;8257:64:0;;;;;;;:::i;:::-;10422:21;:29;;-1:-1:-1;;10422:29:0;;;;;;;10453:18;:26;;;11291:115;;:::o;21490:279::-;21596:5;;-1:-1:-1;;;;;21596:5:0;:29;21591:118;;21643:5;;:50;;-1:-1:-1;;;21643:50:0;;-1:-1:-1;;;;;14117:15:1;;;21643:50:0;;;14099:34:1;14169:15;;;14149:18;;;14142:43;14201:18;;;14194:34;;;21643:5:0;;;;:28;;14034:18:1;;21643:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21591:118;21719:42;21740:5;21747:3;21752:8;21719:20;:42::i;19271:103::-;8265:5;;-1:-1:-1;;;;;8265:5:0;8274:10;8265:19;8257:64;;;;-1:-1:-1;;;8257:64:0;;;;;;;:::i;:::-;19342:5:::1;:24:::0;;-1:-1:-1;;;;;;19342:24:0::1;-1:-1:-1::0;;;;;19342:24:0;;;::::1;::::0;;;::::1;::::0;;19271:103::o;10065:134::-;10140:18;;10116:4;;10140:18;;:56;;;;;10181:15;10162;;:34;;10140:56;10133:63;;10065:134;:::o;20285:618::-;9581:10;9595:9;9581:23;9573:55;;;;-1:-1:-1;;;9573:55:0;;25398:2:1;9573:55:0;;;25380:21:1;25437:2;25417:18;;;25410:30;-1:-1:-1;;;25456:18:1;;;25449:49;25515:18;;9573:55:0;25196:343:1;9573:55:0;10537:21:::1;::::0;::::1;;:62:::0;::::1;;;;10584:15;10562:18;;:37;;10537:62;10529:123;;;::::0;-1:-1:-1;;;10529:123:0;;22271:2:1;10529:123:0::1;::::0;::::1;22253:21:1::0;22310:2;22290:18;;;22283:30;22349:34;22329:18;;;22322:62;-1:-1:-1;;;22400:18:1;;;22393:32;22442:19;;10529:123:0::1;22069:398:1::0;10529:123:0::1;20426:33:::2;20440:10;20452:6;;20426:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;::::0;;;;-1:-1:-1;20426:13:0::2;::::0;-1:-1:-1;;;20426:33:0:i:2;:::-;20418:84;;;::::0;-1:-1:-1;;;20418:84:0;;24283:2:1;20418:84:0::2;::::0;::::2;24265:21:1::0;24322:2;24302:18;;;24295:30;24361:26;24341:18;;;24334:54;24405:18;;20418:84:0::2;24081:348:1::0;20418:84:0::2;20555:10;20538:28;::::0;;;:16:::2;:28;::::0;;;;;:38:::2;::::0;20569:7;;20538:38:::2;:::i;:::-;20521:13;;:55;;20513:151;;;::::0;-1:-1:-1;;;20513:151:0;;28005:2:1;20513:151:0::2;::::0;::::2;27987:21:1::0;28044:2;28024:18;;;28017:30;28083:34;28063:18;;;28056:62;28154:34;28134:18;;;28127:62;-1:-1:-1;;;28205:19:1;;;28198:37;28252:19;;20513:151:0::2;27803:474:1::0;20513:151:0::2;20708:7;20696:9;;:19;;;;:::i;:::-;20683:9;:32;20675:80;;;::::0;-1:-1:-1;;;20675:80:0;;19979:2:1;20675:80:0::2;::::0;::::2;19961:21:1::0;20018:2;19998:18;;;19991:30;-1:-1:-1;;;20037:18:1;;;20030:49;20096:18;;20675:80:0::2;19777:343:1::0;20675:80:0::2;20830:10;20813:28;::::0;;;:16:::2;:28;::::0;;;;:39;;20845:7;;20813:28;:39:::2;::::0;20845:7;;20813:39:::2;:::i;:::-;::::0;;;-1:-1:-1;20865:30:0::2;::::0;-1:-1:-1;20875:10:0::2;20887:7:::0;20865:9:::2;:30::i;20941:311::-:0;9581:10;9595:9;9581:23;9573:55;;;;-1:-1:-1;;;9573:55:0;;25398:2:1;9573:55:0;;;25380:21:1;25437:2;25417:18;;;25410:30;-1:-1:-1;;;25456:18:1;;;25449:49;25515:18;;9573:55:0;25196:343:1;9573:55:0;9947:18:::1;::::0;::::1;;:56:::0;::::1;;;;9988:15;9969;;:34;;9947:56;9939:114;;;::::0;-1:-1:-1;;;9939:114:0;;26884:2:1;9939:114:0::1;::::0;::::1;26866:21:1::0;26923:2;26903:18;;;26896:30;26962:33;26942:18;;;26935:61;27013:18;;9939:114:0::1;26682:355:1::0;9939:114:0::1;21060:7:::2;21043:13;;:24;;21035:77;;;::::0;-1:-1:-1;;;21035:77:0;;24636:2:1;21035:77:0::2;::::0;::::2;24618:21:1::0;24675:2;24655:18;;;24648:30;24714:29;24694:18;;;24687:57;24761:18;;21035:77:0::2;24434:351:1::0;21035:77:0::2;21156:7;21144:9;;:19;;;;:::i;:::-;21131:9;:32;21123:78;;;::::0;-1:-1:-1;;;21123:78:0;;19979:2:1;21123:78:0::2;::::0;::::2;19961:21:1::0;20018:2;19998:18;;;19991:30;-1:-1:-1;;;20037:18:1;;;20030:49;20096:18;;21123:78:0::2;19777:343:1::0;21123:78:0::2;21214:30;21224:10;21236:7;21214:9;:30::i;:::-;20941:311:::0;:::o;7827:203::-;7919:7;7939:24;7966:23;7980:8;7966:13;:23::i;:::-;7939:50;;8007:7;8015:6;8007:15;;;;;;;;:::i;:::-;;;;;;;8000:22;;;7827:203;;;;:::o;11177:108::-;8265:5;;-1:-1:-1;;;;;8265:5:0;8274:10;8265:19;8257:64;;;;-1:-1:-1;;;8257:64:0;;;;;;;:::i;:::-;11255:22:::1;11272:4;;11255:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;11255:16:0::1;::::0;-1:-1:-1;;;11255:22:0:i:1;19028:168::-:0;8265:5;;-1:-1:-1;;;;;8265:5:0;8274:10;8265:19;8257:64;;;;-1:-1:-1;;;8257:64:0;;;;;;;:::i;:::-;19123:10:::1;19108:11;;:25;;19100:55;;;::::0;-1:-1:-1;;;19100:55:0;;27244:2:1;19100:55:0::1;::::0;::::1;27226:21:1::0;27283:2;27263:18;;;27256:30;-1:-1:-1;;;27302:18:1;;;27295:47;27359:18;;19100:55:0::1;27042:341:1::0;19100:55:0::1;19166:9;:22:::0;19028:168::o;6266:263::-;6404:9;6399:123;6423:9;:16;6419:1;:20;6399:123;;;6461:49;6478:5;6485:3;6490:9;6500:1;6490:12;;;;;;;;:::i;:::-;;;;;;;6504:5;6461:16;:49::i;:::-;6441:3;;;;:::i;:::-;;;;6399:123;;;;6266:263;;;;:::o;5839:148::-;5937:42;5954:5;5961:3;5966:8;5937:42;;;;;;;;;;;;:16;:42::i;7187:538::-;-1:-1:-1;;;;;7305:19:0;;7286:16;7305:19;;;:9;:19;;;;;;7257:16;;7305:19;-1:-1:-1;;;;;7362:24:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7362:24:0;-1:-1:-1;7445:11:0;;7335:51;;-1:-1:-1;7397:14:0;;;7467:226;7491:12;7487:1;:16;7467:226;;;7551:3;7529:10;;;:7;:10;;;;;;-1:-1:-1;;;;;7529:10:0;:26;:56;;;;-1:-1:-1;7559:7:0;7567:12;7578:1;7567:8;:12;:::i;:::-;7559:21;;;;;;;;:::i;:::-;;;;;;;7584:1;7559:26;7529:56;7525:81;;;7589:14;;;;:::i;:::-;;;;7525:81;7624:10;;;;:7;:10;;;;;;-1:-1:-1;;;;;7624:22:0;;;:10;;:22;7620:62;;;7668:1;7650:7;7658:6;7650:15;;;;;;;;:::i;:::-;;;;;;;;;;:19;7671:8;;;;:::i;:::-;;;;7620:62;7505:3;;;;:::i;:::-;;;;7467:226;;;-1:-1:-1;7710:7:0;;7187:538;-1:-1:-1;;;;;7187:538:0:o;19805:110::-;8265:5;;-1:-1:-1;;;;;8265:5:0;8274:10;8265:19;8257:64;;;;-1:-1:-1;;;8257:64:0;;;;;;;:::i;:::-;19884:23:::1;19894:3;19899:7;19884:9;:23::i;13696:301::-:0;12108:24;;-1:-1:-1;;;;;12108:24:0;12094:10;:38;12086:91;;;;-1:-1:-1;;;12086:91:0;;;;;;;:::i;:::-;13795:27:::1;:34:::0;:39;13788:99:::1;;13851:27;:33;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;13851:33:0;;;;;-1:-1:-1;;;;;;13851:33:0::1;::::0;;;;;13788:99:::1;;;13904:24;:31:::0;:36;13897:93:::1;;13957:24;:30;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;13897:93;;;13696:301::o:0;15699:1753::-;8265:5;;15761:16;;-1:-1:-1;;;;;8265:5:0;8274:10;8265:19;8257:64;;;;-1:-1:-1;;;8257:64:0;;;;;;;:::i;:::-;15862:27:::1;:34:::0;:38;;;;:77:::1;;-1:-1:-1::0;15904:24:0::1;:31:::0;:35;;15862:77:::1;15854:121;;;::::0;-1:-1:-1;;;15854:121:0;;26524:2:1;15854:121:0::1;::::0;::::1;26506:21:1::0;26563:2;26543:18;;;26536:30;26602:33;26582:18;;;26575:61;26653:18;;15854:121:0::1;26322:355:1::0;15854:121:0::1;16070:24;:31:::0;16032:27:::1;:34:::0;:69:::1;16024:117;;;;-1:-1:-1::0;;;16024:117:0::1;;;;;;;:::i;:::-;16230:27;::::0;16268:130:::1;16292:24;:31:::0;16288:35;::::1;16268:130;;;16368:24;16393:1;16368:27;;;;;;;;:::i;:::-;;;;;;;;;16345:50;;;;;:::i;:::-;::::0;-1:-1:-1;16325:3:0;::::1;::::0;::::1;:::i;:::-;;;;16268:130;;;;16416:19;16439:4;16416:27;16408:78;;;;-1:-1:-1::0;;;16408:78:0::1;;;;;;;:::i;:::-;16770:27;:34:::0;16690:21:::1;::::0;16670:17:::1;::::0;16770:38:::1;::::0;16807:1:::1;16770:38;:::i;:::-;-1:-1:-1::0;;;;;16755:54:0::1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;16755:54:0::1;;16723:86;;16890:9;16885:162;16909:27;:34:::0;16905:38;::::1;16885:162;;;17029:4;16998:24;17023:1;16998:27;;;;;;;;:::i;:::-;;;;;;;;;16986:9;:39;;;;:::i;:::-;16985:48;;;;:::i;:::-;16965:12;16978:1;16965:15;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:70;16945:3;::::1;::::0;::::1;:::i;:::-;;;;16885:162;;;-1:-1:-1::0;17161:27:0::1;:34:::0;17148:48;;17199:9;;17148:12;;:48;::::1;;;;;:::i;:::-;;;;;;:60;;;::::0;::::1;17224:9;17219:154;17243:27;:34:::0;17239:38;::::1;17219:154;;;17355:12;17368:1;17355:15;;;;;;;;:::i;:::-;;;;;;;17299:12;17312:27;:34;;;;17349:1;17312:38;;;;:::i;:::-;17299:52;;;;;;;;:::i;:::-;;;;;;:71;;;;;;;:::i;:::-;::::0;;-1:-1:-1;17279:3:0;::::1;::::0;::::1;:::i;:::-;;;;17219:154;;;-1:-1:-1::0;17432:12:0;-1:-1:-1;;;15699:1753:0;:::o;9064:405::-;9194:26;;-1:-1:-1;;12364:2:1;12360:15;;;12356:53;9194:26:0;;;12344:66:1;9151:4:0;;;;12426:12:1;;9194:26:0;;;;;;;;;;;;9184:37;;;;;;9168:53;;9237:9;9232:192;9256:6;:13;9252:1;:17;9232:192;;;9307:6;9314:1;9307:9;;;;;;;;:::i;:::-;;;;;;;9299:5;:17;:113;;9394:6;9401:1;9394:9;;;;;;;;:::i;:::-;;;;;;;9405:5;9377:34;;;;;;;;12606:19:1;;;12650:2;12641:12;;12634:28;12687:2;12678:12;;12449:247;9377:34:0;;;;;;;;;;;;;9367:45;;;;;;9299:113;;;9346:5;9353:6;9360:1;9353:9;;;;;;;;:::i;:::-;;;;;;;9329:34;;;;;;;;12606:19:1;;;12650:2;12641:12;;12634:28;12687:2;12678:12;;12449:247;9329:34:0;;;;;;;;;;;;;9319:45;;;;;;9299:113;9291:121;-1:-1:-1;9271:3:0;;;;:::i;:::-;;;;9232:192;;;-1:-1:-1;9450:11:0;;9441:20;;9064:405;-1:-1:-1;;;9064:405:0:o;12958:732::-;12108:24;;-1:-1:-1;;;;;12108:24:0;12094:10;:38;12086:91;;;;-1:-1:-1;;;12086:91:0;;;;;;;:::i;:::-;13117:27:::1;:34:::0;:39;:79;::::1;;;-1:-1:-1::0;13160:24:0::1;:31:::0;:36;13117:79:::1;13109:150;;;::::0;-1:-1:-1;;;13109:150:0;;19552:2:1;13109:150:0::1;::::0;::::1;19534:21:1::0;19591:2;19571:18;;;19564:30;19630:34;19610:18;;;19603:62;19701:28;19681:18;;;19674:56;19747:19;;13109:150:0::1;19350:422:1::0;13109:150:0::1;13299:7;:14;13278:10;:17;:35;13270:83;;;::::0;-1:-1:-1;;;13270:83:0;;19148:2:1;13270:83:0::1;::::0;::::1;19130:21:1::0;19187:2;19167:18;;;19160:30;19226:34;19206:18;;;19199:62;-1:-1:-1;;;19277:18:1;;;19270:33;19320:19;;13270:83:0::1;18946:399:1::0;13270:83:0::1;13364:20;::::0;13395:219:::1;13419:10;:17;13415:1;:21;13395:219;;;13474:7;13482:1;13474:10;;;;;;;;:::i;:::-;;;;;;;13458:26;;;;;:::i;:::-;;;13499:27;13532:10;13543:1;13532:13;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;13499:47;;::::1;::::0;::::1;::::0;;-1:-1:-1;13499:47:0;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;13499:47:0::1;-1:-1:-1::0;;;;;13499:47:0;;::::1;::::0;;;::::1;::::0;;13591:10;;13561:24:::1;::::0;13591:10;;13599:1;;13591:10;::::1;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;13561:41;;::::1;::::0;::::1;::::0;;-1:-1:-1;13561:41:0;;;;;;;::::1;::::0;13438:3;::::1;::::0;::::1;:::i;:::-;;;;13395:219;;;;13632:12;13648:4;13632:20;13624:58;;;::::0;-1:-1:-1;;;13624:58:0;;29321:2:1;13624:58:0::1;::::0;::::1;29303:21:1::0;29360:2;29340:18;;;29333:30;29399:27;29379:18;;;29372:55;29444:18;;13624:58:0::1;29119:349:1::0;8764:105:0;8265:5;;-1:-1:-1;;;;;8265:5:0;8274:10;8265:19;8257:64;;;;-1:-1:-1;;;8257:64:0;;;;;;;:::i;:::-;8829:32:::1;8856:3;8829:18;:32::i;14444:1247::-:0;8265:5;;-1:-1:-1;;;;;8265:5:0;8274:10;8265:19;8257:64;;;;-1:-1:-1;;;8257:64:0;;;;;;;:::i;:::-;14569:27:::1;:34:::0;:38;;;;:77:::1;;-1:-1:-1::0;14611:24:0::1;:31:::0;:35;;14569:77:::1;14561:121;;;::::0;-1:-1:-1;;;14561:121:0;;26524:2:1;14561:121:0::1;::::0;::::1;26506:21:1::0;26563:2;26543:18;;;26536:30;26602:33;26582:18;;;26575:61;26653:18;;14561:121:0::1;26322:355:1::0;14561:121:0::1;14777:24;:31:::0;14739:27:::1;:34:::0;:69:::1;14731:117;;;;-1:-1:-1::0;;;14731:117:0::1;;;;;;;:::i;:::-;14937:27;::::0;14975:130:::1;14999:24;:31:::0;14995:35;::::1;14975:130;;;15075:24;15100:1;15075:27;;;;;;;;:::i;:::-;;;;;;;;;15052:50;;;;;:::i;:::-;::::0;-1:-1:-1;15032:3:0;::::1;::::0;::::1;:::i;:::-;;;;14975:130;;;;15123:19;15146:4;15123:27;15115:78;;;;-1:-1:-1::0;;;15115:78:0::1;;;;;;;:::i;:::-;15361:21;15341:17;15445:239;15469:27;:34:::0;15465:38;::::1;15445:239;;;15525:22;15595:4;15564:24;15589:1;15564:27;;;;;;;;:::i;:::-;;;;;;;;;15552:9;:39;;;;:::i;:::-;15551:48;;;;:::i;:::-;15525:75;;15615:57;15625:27;15653:1;15625:30;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;15625:30:0::1;15657:14:::0;15615:9:::1;:57::i;:::-;-1:-1:-1::0;15505:3:0;::::1;::::0;::::1;:::i;:::-;;;;15445:239;;11433:109:::0;8265:5;;-1:-1:-1;;;;;8265:5:0;8274:10;8265:19;8257:64;;;;-1:-1:-1;;;8257:64:0;;;;;;;:::i;:::-;11507:27:::1;11522:11;9025::::0;:25;8952:106;14285:124;14341:16;14377:24;14370:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14285:124;:::o;300:20::-;;;;;;;:::i;19921:323::-;8265:5;;-1:-1:-1;;;;;8265:5:0;8274:10;8265:19;8257:64;;;;-1:-1:-1;;;8257:64:0;;;;;;;:::i;:::-;20044:30;;::::1;20036:80;;;::::0;-1:-1:-1;;;20036:80:0;;21089:2:1;20036:80:0::1;::::0;::::1;21071:21:1::0;21128:2;21108:18;;;21101:30;21167:25;21147:18;;;21140:53;21210:18;;20036:80:0::1;20887:347:1::0;20036:80:0::1;20142:9;20137:100;20157:15:::0;;::::1;20137:100;;;20194:31;20204:4;;20209:1;20204:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;20213:8;;20222:1;20213:11;;;;;;;:::i;:::-;;;;;;;20194:9;:31::i;:::-;20174:3:::0;::::1;::::0;::::1;:::i;:::-;;;;20137:100;;4918:148:::0;5006:52;5025:10;5037:9;5048;5006:18;:52::i;12189:135::-;12108:24;;-1:-1:-1;;;;;12108:24:0;12094:10;:38;12086:91;;;;-1:-1:-1;;;12086:91:0;;;;;;;:::i;:::-;12282:24:::1;:39:::0;;-1:-1:-1;;;;;;12282:39:0::1;::::0;;12189:135::o;21775:314::-;21905:5;;-1:-1:-1;;;;;21905:5:0;:29;21900:118;;21952:5;;:50;;-1:-1:-1;;;21952:50:0;;-1:-1:-1;;;;;14117:15:1;;;21952:50:0;;;14099:34:1;14169:15;;;14149:18;;;14142:43;14201:18;;;14194:34;;;21952:5:0;;;;:28;;14034:18:1;;21952:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21900:118;22028:53;22053:5;22060:3;22065:8;22075:5;22028:24;:53::i;:::-;21775:314;;;;:::o;11570:116::-;8265:5;;-1:-1:-1;;;;;8265:5:0;8274:10;8265:19;8257:64;;;;-1:-1:-1;;;8257:64:0;;;;;;;:::i;:::-;9840:18;:26;;-1:-1:-1;;9840:26:0;;;;;;;9868:15;:23;;;11291:115;;:::o;6730:281::-;6858:3;6829:17;;;:7;:17;;;;;;6795:13;;-1:-1:-1;;;;;6829:17:0;6821:87;;;;-1:-1:-1;;;6821:87:0;;29675:2:1;6821:87:0;;;29657:21:1;29714:2;29694:18;;;29687:30;29753:34;29733:18;;;29726:62;-1:-1:-1;;;29804:18:1;;;29797:39;29853:19;;6821:87:0;29473:405:1;6821:87:0;6950:12;6964:19;6974:8;6964:9;:19::i;:::-;6985:16;6933:69;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6919:84;;6730:281;;;:::o;10665:143::-;10743:21;;10719:4;;10743:21;;:62;;;;;10790:15;10768:18;;:37;;10736:69;;10665:143;:::o;17843:136::-;17527:19;;17557:197;17581:27;:34;17577:38;;17557:197;;;17655:27;17683:1;17655:30;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;17655:30:0;17641:10;:44;17637:106;;;17723:4;17706:21;;17637:106;17617:3;;;;:::i;:::-;;;;17557:197;;;;17772:14;17764:53;;;;-1:-1:-1;;;17764:53:0;;20327:2:1;17764:53:0;;;20309:21:1;20366:2;20346:18;;;20339:30;20405:28;20385:18;;;20378:56;20451:18;;17764:53:0;20125:350:1;17764:53:0;-1:-1:-1;17953:10:0::1;17926:38;::::0;;;:26:::1;:38;::::0;;;;:45;;-1:-1:-1;;17926:45:0::1;17967:4;17926:45;::::0;;17843:136::o;18274:137::-;8265:5;;-1:-1:-1;;;;;8265:5:0;8274:10;8265:19;8257:64;;;;-1:-1:-1;;;8257:64:0;;;;;;;:::i;:::-;18054:9:::1;18049:200;18073:27;:34:::0;18069:38;::::1;18049:200;;;18137:26;:58;18164:27;18192:1;18164:30;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;::::0;-1:-1:-1;;;;;18164:30:0::1;18137:58:::0;;;::::1;::::0;;;;;;;;;::::1;;18129:108;;;::::0;-1:-1:-1;;;18129:108:0;;23096:2:1;18129:108:0::1;::::0;::::1;23078:21:1::0;23135:2;23115:18;;;23108:30;23174:34;23154:18;;;23147:62;-1:-1:-1;;;23225:18:1;;;23218:35;23270:19;;18129:108:0::1;22894:401:1::0;18129:108:0::1;18109:3:::0;::::1;::::0;::::1;:::i;:::-;;;;18049:200;;;;18350:53:::2;18368:10;18381:21;18350:9;:53::i;14141:138::-:0;14200:24;14244:27;14237:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14237:34:0;;;;;;;;;;;;;;;;;;;;;;14141:138;:::o;8551:207::-;8265:5;;-1:-1:-1;;;;;8265:5:0;8274:10;8265:19;8257:64;;;;-1:-1:-1;;;8257:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8641:25:0;::::1;8633:77;;;::::0;-1:-1:-1;;;8633:77:0;;17981:2:1;8633:77:0::1;::::0;::::1;17963:21:1::0;18020:2;18000:18;;;17993:30;18059:34;18039:18;;;18032:62;-1:-1:-1;;;18110:18:1;;;18103:37;18157:19;;8633:77:0::1;17779:403:1::0;8633:77:0::1;8721:29;8740:9;8721:18;:29::i;6032:228::-:0;6146:9;6141:112;6165:9;:16;6161:1;:20;6141:112;;;6203:38;6216:5;6223:3;6228:9;6238:1;6228:12;;;;;;;;:::i;:::-;;;;;;;6203;:38::i;:::-;6183:3;;;;:::i;:::-;;;;6141:112;;18920:102;8265:5;;-1:-1:-1;;;;;8265:5:0;8274:10;8265:19;8257:64;;;;-1:-1:-1;;;8257:64:0;;;;;;;:::i;:::-;18992:9:::1;:22:::0;18920:102::o;3257:109::-;3335:23;;;;:16;;:23;;;;;:::i;2558:234::-;2639:21;;;;:11;:21;;;;;;-1:-1:-1;;;;;2639:28:0;;;:21;;:28;2635:150;;2684:21;;;;:11;:21;;;;;;;;:27;;-1:-1:-1;;;;;;2684:27:0;-1:-1:-1;;;;;2684:27:0;;;;;;;;;2740:7;:17;;;;;;;2731:42;;2684:21;;2740:17;;;;;2731:42;;;2558:234;;:::o;5072:248::-;5174:40;5193:10;5205:8;5174:18;:40::i;:::-;5166:104;;;;-1:-1:-1;;;5166:104:0;;23502:2:1;5166:104:0;;;23484:21:1;23541:2;23521:18;;;23514:30;23580:34;23560:18;;;23553:62;-1:-1:-1;;;23631:18:1;;;23624:49;23690:19;;5166:104:0;23300:415:1;5166:104:0;5281:31;5291:5;5298:3;5303:8;5281:9;:31::i;19404:364::-;19508:7;19494:11;;:21;;;;:::i;:::-;19481:9;;:34;;19473:88;;;;-1:-1:-1;;;19473:88:0;;26167:2:1;19473:88:0;;;26149:21:1;26206:2;26186:18;;;26179:30;26245;26225:18;;;26218:58;26293:18;;19473:88:0;25965:352:1;19473:88:0;19574:16;19593:11;;19607:1;19593:15;;;;:::i;:::-;19574:34;;19644:9;19639:89;19663:7;19659:1;:11;19639:89;;;19692:24;19698:3;19703:12;19714:1;19703:8;:12;:::i;:::-;19692:5;:24::i;:::-;19672:3;;;;:::i;:::-;;;;19639:89;;;;19753:7;19738:11;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;19404:364:0:o;3150:101::-;3224:19;;;;:12;;:19;;;;;:::i;8347:198::-;8442:5;;;-1:-1:-1;;;;;8458:17:0;;;-1:-1:-1;;;;;;8458:17:0;;;;;;;8491:42;;8442:5;;;8458:17;8442:5;;8491:42;;8422:17;;8491:42;8411:134;8347:198;:::o;12724:197::-;12807:12;12833:8;-1:-1:-1;;;;;12825:22:0;12855:7;12825:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12806:61;;;12886:7;12878:35;;;;-1:-1:-1;;;12878:35:0;;18389:2:1;12878:35:0;;;18371:21:1;18428:2;18408:18;;;18401:30;-1:-1:-1;;;18447:18:1;;;18440:45;18502:18;;12878:35:0;18187:339:1;2798:326:0;2923:9;-1:-1:-1;;;;;2913:19:0;:6;-1:-1:-1;;;;;2913:19:0;;;2905:93;;;;-1:-1:-1;;;2905:93:0;;28891:2:1;2905:93:0;;;28873:21:1;28930:2;28910:18;;;28903:30;28969:34;28949:18;;;28942:62;29040:31;29020:18;;;29013:59;29089:19;;2905:93:0;28689:425:1;2905:93:0;-1:-1:-1;;;;;3009:24:0;;;;;;;:16;:24;;;;;;;;:35;;;;;;;;;;;;;:47;;-1:-1:-1;;3009:47:0;;;;;;;;;;3072:44;;16467:41:1;;;3072:44:0;;16440:18:1;3072:44:0;;;;;;;2798:326;;;:::o;5326:507::-;5444:34;5457:5;5464:3;5469:8;5444:12;:34::i;:::-;-1:-1:-1;;;;;5493:15:0;;;:20;5489:337;;5533:22;5559:3;-1:-1:-1;;;;;5559:14:0;5597:10;5609;5621:5;5628:8;5638:5;5574:70;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5574:70:0;;;;;;;;;;;5559:86;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5530:115;;;5660:16;5690:9;5679:31;;;;;;;;;;;;:::i;:::-;5660:50;-1:-1:-1;;;;;;;;;;5733:23:0;;;5725:89;;;;-1:-1:-1;;;5725:89:0;;22674:2:1;5725:89:0;;;22656:21:1;22713:2;22693:18;;;22686:30;22752:34;22732:18;;;22725:62;-1:-1:-1;;;22803:18:1;;;22796:51;22864:19;;5725:89:0;22472:417:1;5725:89:0;5515:311;;5326:507;;;;:::o;3436:536::-;3494:13;3524:11;3520:32;;-1:-1:-1;;3539:10:0;;;;;;;;;;;;-1:-1:-1;;;3539:10:0;;;;;3436:536::o;3520:32::-;3581:6;3562:16;3615:52;3622:13;;3615:52;;3639:9;;;;:::i;:::-;;-1:-1:-1;3650:14:0;;-1:-1:-1;3662:2:0;3650:14;;:::i;:::-;;;3615:52;;;3701:20;3734:7;-1:-1:-1;;;;;3724:18:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3724:18:0;;3701:41;;3753:110;3760:11;;3753:110;;3775:9;;;;:::i;:::-;;-1:-1:-1;3831:11:0;;-1:-1:-1;3840:2:0;3831:6;:11;:::i;:::-;3818:26;;:2;:26;:::i;:::-;3805:41;;3786:7;3794;3786:16;;;;;;;;:::i;:::-;;;;:60;-1:-1:-1;;;;;3786:60:0;;;;;;;;-1:-1:-1;3848:12:0;3858:2;3848:12;;:::i;:::-;;;3753:110;;;3913:7;3436:536;-1:-1:-1;;;;3436:536:0:o;4005:376::-;4100:4;4125:17;;;:7;:17;;;;;;-1:-1:-1;;;;;4125:17:0;4117:98;;;;-1:-1:-1;;;4117:98:0;;25746:2:1;4117:98:0;;;25728:21:1;25785:2;25765:18;;;25758:30;25824:34;25804:18;;;25797:62;-1:-1:-1;;;25875:18:1;;;25868:50;25935:19;;4117:98:0;25544:416:1;4117:98:0;4226:14;4243:17;;;:7;:17;;;;;;-1:-1:-1;;;;;4243:17:0;;;;4279:18;;;;;:55;;-1:-1:-1;4313:21:0;;;;:11;:21;;;;;;-1:-1:-1;;;;;4301:33:0;;;4313:21;;4301:33;4279:55;:93;;;-1:-1:-1;;;;;;4338:24:0;;;;;;;:16;:24;;;;;;;;:34;;;;;;;;;;;;4271:102;4005:376;-1:-1:-1;;;;4005:376:0:o;1863:671::-;1973:17;;;;:7;:17;;;;;;-1:-1:-1;;;;;1964:26:0;;;1973:17;;1964:26;1956:88;;;;-1:-1:-1;;;1956:88:0;;21853:2:1;1956:88:0;;;21835:21:1;21892:2;21872:18;;;21865:30;21931:34;21911:18;;;21904:62;-1:-1:-1;;;21982:18:1;;;21975:47;22039:19;;1956:88:0;21651:413:1;1956:88:0;-1:-1:-1;;;;;2063:19:0;;2055:78;;;;-1:-1:-1;;;2055:78:0;;18733:2:1;2055:78:0;;;18715:21:1;18772:2;18752:18;;;18745:30;18811:34;18791:18;;;18784:62;-1:-1:-1;;;18862:18:1;;;18855:44;18916:19;;2055:78:0;18531:410:1;2055:78:0;2288:3;2255:21;;;:11;:21;;;;;;-1:-1:-1;;;;;2255:21:0;:37;2251:104;;2310:32;2327:3;2333:8;2310;:32::i;:::-;2368:17;;;;:7;:17;;;;;;;;:23;;-1:-1:-1;;;;;;2368:23:0;-1:-1:-1;;;;;2368:23:0;;;;;;;;;;2403:16;;;;:9;:16;;;;;:18;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;2432:14:0;;;;;;:9;:14;;;;;:16;;;;;;:::i;:::-;;;;;;2517:8;2512:3;-1:-1:-1;;;;;2496:30:0;2505:5;-1:-1:-1;;;;;2496:30:0;;;;;;;;;;;1863:671;;;:::o;1159:679::-;-1:-1:-1;;;;;1241:19:0;;1233:69;;;;-1:-1:-1;;;1233:69:0;;24992:2:1;1233:69:0;;;24974:21:1;25031:2;25011:18;;;25004:30;25070:34;25050:18;;;25043:62;-1:-1:-1;;;25121:18:1;;;25114:35;25166:19;;1233:69:0;24790:401:1;1233:69:0;1350:3;1321:17;;;:7;:17;;;;;;-1:-1:-1;;;;;1321:17:0;:33;1313:92;;;;-1:-1:-1;;;1313:92:0;;27590:2:1;1313:92:0;;;27572:21:1;27629:2;27609:18;;;27602:30;27668:34;27648:18;;;27641:62;-1:-1:-1;;;27719:18:1;;;27712:44;27773:19;;1313:92:0;27388:410:1;1313:92:0;-1:-1:-1;;;;;1450:14:0;;;;;;:9;:14;;;;;:16;;;;;;:::i;:::-;;;;-1:-1:-1;;1477:17:0;;;;:7;:17;;;;;;:23;;-1:-1:-1;;;;;;1477:23:0;-1:-1:-1;;;;;1477:23:0;;;;;;;;1666:37;;1477:17;;;1666:37;;1477:17;;1666:37;1159:679;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:367:1;77:8;87:6;141:3;134:4;126:6;122:17;118:27;108:55;;159:1;156;149:12;108:55;-1:-1:-1;182:20:1;;-1:-1:-1;;;;;214:30:1;;211:50;;;257:1;254;247:12;211:50;294:4;286:6;282:17;270:29;;354:3;347:4;337:6;334:1;330:14;322:6;318:27;314:38;311:47;308:67;;;371:1;368;361:12;308:67;14:367;;;;;:::o;386:681::-;440:5;493:3;486:4;478:6;474:17;470:27;460:55;;511:1;508;501:12;460:55;547:6;534:20;573:4;597:68;613:51;661:2;613:51;:::i;:::-;597:68;:::i;:::-;687:3;711:2;706:3;699:15;739:2;734:3;730:12;723:19;;774:2;766:6;762:15;826:3;821:2;815;812:1;808:10;800:6;796:23;792:32;789:41;786:61;;;843:1;840;833:12;786:61;865:1;875:163;889:2;886:1;883:9;875:163;;;946:17;;934:30;;984:12;;;;1016;;;;907:1;900:9;875:163;;;-1:-1:-1;1056:5:1;;386:681;-1:-1:-1;;;;;;;386:681:1:o;1072:160::-;1137:20;;1193:13;;1186:21;1176:32;;1166:60;;1222:1;1219;1212:12;1166:60;1072:160;;;:::o;1237:530::-;1279:5;1332:3;1325:4;1317:6;1313:17;1309:27;1299:55;;1350:1;1347;1340:12;1299:55;1386:6;1373:20;-1:-1:-1;;;;;1408:2:1;1405:26;1402:52;;;1434:18;;:::i;:::-;1478:55;1521:2;1502:13;;-1:-1:-1;;1498:27:1;1527:4;1494:38;1478:55;:::i;:::-;1558:2;1549:7;1542:19;1604:3;1597:4;1592:2;1584:6;1580:15;1576:26;1573:35;1570:55;;;1621:1;1618;1611:12;1570:55;1686:2;1679:4;1671:6;1667:17;1660:4;1651:7;1647:18;1634:55;1734:1;1709:16;;;1727:4;1705:27;1698:38;;;;1713:7;1237:530;-1:-1:-1;;;1237:530:1:o;1772:247::-;1831:6;1884:2;1872:9;1863:7;1859:23;1855:32;1852:52;;;1900:1;1897;1890:12;1852:52;1939:9;1926:23;1958:31;1983:5;1958:31;:::i;:::-;2008:5;1772:247;-1:-1:-1;;;1772:247:1:o;2024:388::-;2092:6;2100;2153:2;2141:9;2132:7;2128:23;2124:32;2121:52;;;2169:1;2166;2159:12;2121:52;2208:9;2195:23;2227:31;2252:5;2227:31;:::i;:::-;2277:5;-1:-1:-1;2334:2:1;2319:18;;2306:32;2347:33;2306:32;2347:33;:::i;:::-;2399:7;2389:17;;;2024:388;;;;;:::o;2417:624::-;2519:6;2527;2535;2588:2;2576:9;2567:7;2563:23;2559:32;2556:52;;;2604:1;2601;2594:12;2556:52;2643:9;2630:23;2662:31;2687:5;2662:31;:::i;:::-;2712:5;-1:-1:-1;2769:2:1;2754:18;;2741:32;2782:33;2741:32;2782:33;:::i;:::-;2834:7;-1:-1:-1;2892:2:1;2877:18;;2864:32;-1:-1:-1;;;;;2908:30:1;;2905:50;;;2951:1;2948;2941:12;2905:50;2974:61;3027:7;3018:6;3007:9;3003:22;2974:61;:::i;:::-;2964:71;;;2417:624;;;;;:::o;3046:844::-;3166:6;3174;3182;3190;3243:3;3231:9;3222:7;3218:23;3214:33;3211:53;;;3260:1;3257;3250:12;3211:53;3299:9;3286:23;3318:31;3343:5;3318:31;:::i;:::-;3368:5;-1:-1:-1;3425:2:1;3410:18;;3397:32;3438:33;3397:32;3438:33;:::i;:::-;3490:7;-1:-1:-1;3548:2:1;3533:18;;3520:32;-1:-1:-1;;;;;3601:14:1;;;3598:34;;;3628:1;3625;3618:12;3598:34;3651:61;3704:7;3695:6;3684:9;3680:22;3651:61;:::i;:::-;3641:71;;3765:2;3754:9;3750:18;3737:32;3721:48;;3794:2;3784:8;3781:16;3778:36;;;3810:1;3807;3800:12;3778:36;;3833:51;3876:7;3865:8;3854:9;3850:24;3833:51;:::i;:::-;3823:61;;;3046:844;;;;;;;:::o;3895:456::-;3972:6;3980;3988;4041:2;4029:9;4020:7;4016:23;4012:32;4009:52;;;4057:1;4054;4047:12;4009:52;4096:9;4083:23;4115:31;4140:5;4115:31;:::i;:::-;4165:5;-1:-1:-1;4222:2:1;4207:18;;4194:32;4235:33;4194:32;4235:33;:::i;:::-;3895:456;;4287:7;;-1:-1:-1;;;4341:2:1;4326:18;;;;4313:32;;3895:456::o;4356:665::-;4451:6;4459;4467;4475;4528:3;4516:9;4507:7;4503:23;4499:33;4496:53;;;4545:1;4542;4535:12;4496:53;4584:9;4571:23;4603:31;4628:5;4603:31;:::i;:::-;4653:5;-1:-1:-1;4710:2:1;4695:18;;4682:32;4723:33;4682:32;4723:33;:::i;:::-;4775:7;-1:-1:-1;4829:2:1;4814:18;;4801:32;;-1:-1:-1;4884:2:1;4869:18;;4856:32;-1:-1:-1;;;;;4900:30:1;;4897:50;;;4943:1;4940;4933:12;4897:50;4966:49;5007:7;4998:6;4987:9;4983:22;4966:49;:::i;5026:1045::-;5119:6;5127;5180:2;5168:9;5159:7;5155:23;5151:32;5148:52;;;5196:1;5193;5186:12;5148:52;5235:9;5222:23;5254:31;5279:5;5254:31;:::i;:::-;5304:5;-1:-1:-1;5328:2:1;5366:18;;;5353:32;-1:-1:-1;;;;;5397:30:1;;5394:50;;;5440:1;5437;5430:12;5394:50;5463:22;;5516:4;5508:13;;5504:27;-1:-1:-1;5494:55:1;;5545:1;5542;5535:12;5494:55;5581:2;5568:16;5604:68;5620:51;5668:2;5620:51;:::i;5604:68::-;5694:3;5718:2;5713:3;5706:15;5746:2;5741:3;5737:12;5730:19;;5777:2;5773;5769:11;5825:7;5820:2;5814;5811:1;5807:10;5803:2;5799:19;5795:28;5792:41;5789:61;;;5846:1;5843;5836:12;5789:61;5868:1;5859:10;;5878:163;5892:2;5889:1;5886:9;5878:163;;;5949:17;;5937:30;;5910:1;5903:9;;;;;5987:12;;;;6019;;5878:163;;;5882:3;6060:5;6050:15;;;;;;;5026:1045;;;;;:::o;6076:315::-;6141:6;6149;6202:2;6190:9;6181:7;6177:23;6173:32;6170:52;;;6218:1;6215;6208:12;6170:52;6257:9;6244:23;6276:31;6301:5;6276:31;:::i;:::-;6326:5;-1:-1:-1;6350:35:1;6381:2;6366:18;;6350:35;:::i;:::-;6340:45;;6076:315;;;;;:::o;6396:::-;6464:6;6472;6525:2;6513:9;6504:7;6500:23;6496:32;6493:52;;;6541:1;6538;6531:12;6493:52;6580:9;6567:23;6599:31;6624:5;6599:31;:::i;:::-;6649:5;6701:2;6686:18;;;;6673:32;;-1:-1:-1;;;6396:315:1:o;6716:773::-;6838:6;6846;6854;6862;6915:2;6903:9;6894:7;6890:23;6886:32;6883:52;;;6931:1;6928;6921:12;6883:52;6971:9;6958:23;-1:-1:-1;;;;;7041:2:1;7033:6;7030:14;7027:34;;;7057:1;7054;7047:12;7027:34;7096:70;7158:7;7149:6;7138:9;7134:22;7096:70;:::i;:::-;7185:8;;-1:-1:-1;7070:96:1;-1:-1:-1;7273:2:1;7258:18;;7245:32;;-1:-1:-1;7289:16:1;;;7286:36;;;7318:1;7315;7308:12;7286:36;;7357:72;7421:7;7410:8;7399:9;7395:24;7357:72;:::i;:::-;6716:773;;;;-1:-1:-1;7448:8:1;-1:-1:-1;;;;6716:773:1:o;7494:1242::-;7620:6;7628;7681:2;7669:9;7660:7;7656:23;7652:32;7649:52;;;7697:1;7694;7687:12;7649:52;7737:9;7724:23;-1:-1:-1;;;;;7807:2:1;7799:6;7796:14;7793:34;;;7823:1;7820;7813:12;7793:34;7861:6;7850:9;7846:22;7836:32;;7906:7;7899:4;7895:2;7891:13;7887:27;7877:55;;7928:1;7925;7918:12;7877:55;7964:2;7951:16;7986:4;8010:68;8026:51;8074:2;8026:51;:::i;8010:68::-;8100:3;8124:2;8119:3;8112:15;8152:2;8147:3;8143:12;8136:19;;8183:2;8179;8175:11;8231:7;8226:2;8220;8217:1;8213:10;8209:2;8205:19;8201:28;8198:41;8195:61;;;8252:1;8249;8242:12;8195:61;8274:1;8265:10;;8284:238;8298:2;8295:1;8292:9;8284:238;;;8369:3;8356:17;8386:31;8411:5;8386:31;:::i;:::-;8430:18;;8316:1;8309:9;;;;;8468:12;;;;8500;;8284:238;;;-1:-1:-1;8541:5:1;-1:-1:-1;;8584:18:1;;8571:32;;-1:-1:-1;;8615:16:1;;;8612:36;;;8644:1;8641;8634:12;8612:36;;8667:63;8722:7;8711:8;8700:9;8696:24;8667:63;:::i;:::-;8657:73;;;7494:1242;;;;;:::o;8741:505::-;8836:6;8844;8852;8905:2;8893:9;8884:7;8880:23;8876:32;8873:52;;;8921:1;8918;8911:12;8873:52;8961:9;8948:23;-1:-1:-1;;;;;8986:6:1;8983:30;8980:50;;;9026:1;9023;9016:12;8980:50;9065:70;9127:7;9118:6;9107:9;9103:22;9065:70;:::i;:::-;9154:8;;9039:96;;-1:-1:-1;9236:2:1;9221:18;;;;9208:32;;8741:505;-1:-1:-1;;;;8741:505:1:o;9251:248::-;9316:6;9324;9377:2;9365:9;9356:7;9352:23;9348:32;9345:52;;;9393:1;9390;9383:12;9345:52;9416:26;9432:9;9416:26;:::i;9504:180::-;9563:6;9616:2;9604:9;9595:7;9591:23;9587:32;9584:52;;;9632:1;9629;9622:12;9584:52;-1:-1:-1;9655:23:1;;9504:180;-1:-1:-1;9504:180:1:o;9689:245::-;9747:6;9800:2;9788:9;9779:7;9775:23;9771:32;9768:52;;;9816:1;9813;9806:12;9768:52;9855:9;9842:23;9874:30;9898:5;9874:30;:::i;9939:249::-;10008:6;10061:2;10049:9;10040:7;10036:23;10032:32;10029:52;;;10077:1;10074;10067:12;10029:52;10109:9;10103:16;10128:30;10152:5;10128:30;:::i;10193:592::-;10264:6;10272;10325:2;10313:9;10304:7;10300:23;10296:32;10293:52;;;10341:1;10338;10331:12;10293:52;10381:9;10368:23;-1:-1:-1;;;;;10451:2:1;10443:6;10440:14;10437:34;;;10467:1;10464;10457:12;10437:34;10505:6;10494:9;10490:22;10480:32;;10550:7;10543:4;10539:2;10535:13;10531:27;10521:55;;10572:1;10569;10562:12;10521:55;10612:2;10599:16;10638:2;10630:6;10627:14;10624:34;;;10654:1;10651;10644:12;10624:34;10699:7;10694:2;10685:6;10681:2;10677:15;10673:24;10670:37;10667:57;;;10720:1;10717;10710:12;10667:57;10751:2;10743:11;;;;;10773:6;;-1:-1:-1;10193:592:1;;-1:-1:-1;;;;10193:592:1:o;10975:257::-;11016:3;11054:5;11048:12;11081:6;11076:3;11069:19;11097:63;11153:6;11146:4;11141:3;11137:14;11130:4;11123:5;11119:16;11097:63;:::i;:::-;11214:2;11193:15;-1:-1:-1;;11189:29:1;11180:39;;;;11221:4;11176:50;;10975:257;-1:-1:-1;;10975:257:1:o;11237:973::-;11322:12;;11287:3;;11377:1;11397:18;;;;11450;;;;11477:61;;11531:4;11523:6;11519:17;11509:27;;11477:61;11557:2;11605;11597:6;11594:14;11574:18;11571:38;11568:161;;;11651:10;11646:3;11642:20;11639:1;11632:31;11686:4;11683:1;11676:15;11714:4;11711:1;11704:15;11568:161;11745:18;11772:104;;;;11890:1;11885:319;;;;11738:466;;11772:104;-1:-1:-1;;11805:24:1;;11793:37;;11850:16;;;;-1:-1:-1;11772:104:1;;11885:319;30614:1;30607:14;;;30651:4;30638:18;;11979:1;11993:165;12007:6;12004:1;12001:13;11993:165;;;12085:14;;12072:11;;;12065:35;12128:16;;;;12022:10;;11993:165;;;11997:3;;12187:6;12182:3;12178:16;12171:23;;11738:466;;;;;;;11237:973;;;;:::o;12701:274::-;12830:3;12868:6;12862:13;12884:53;12930:6;12925:3;12918:4;12910:6;12906:17;12884:53;:::i;:::-;12953:16;;;;;12701:274;-1:-1:-1;;12701:274:1:o;12980:456::-;13201:3;13229:38;13263:3;13255:6;13229:38;:::i;:::-;13296:6;13290:13;13312:52;13357:6;13353:2;13346:4;13338:6;13334:17;13312:52;:::i;:::-;13380:50;13422:6;13418:2;13414:15;13406:6;13380:50;:::i;:::-;13373:57;12980:456;-1:-1:-1;;;;;;;12980:456:1:o;14239:488::-;-1:-1:-1;;;;;14508:15:1;;;14490:34;;14560:15;;14555:2;14540:18;;14533:43;14607:2;14592:18;;14585:34;;;14655:3;14650:2;14635:18;;14628:31;;;14433:4;;14676:45;;14701:19;;14693:6;14676:45;:::i;:::-;14668:53;14239:488;-1:-1:-1;;;;;;14239:488:1:o;15011:674::-;15198:2;15250:21;;;15320:13;;15223:18;;;15342:22;;;15169:4;;15198:2;15421:15;;;;15395:2;15380:18;;;15169:4;15464:195;15478:6;15475:1;15472:13;15464:195;;;15543:13;;-1:-1:-1;;;;;15539:39:1;15527:52;;15634:15;;;;15599:12;;;;15575:1;15493:9;15464:195;;;-1:-1:-1;15676:3:1;;15011:674;-1:-1:-1;;;;;;15011:674:1:o;15690:632::-;15861:2;15913:21;;;15983:13;;15886:18;;;16005:22;;;15832:4;;15861:2;16084:15;;;;16058:2;16043:18;;;15832:4;16127:169;16141:6;16138:1;16135:13;16127:169;;;16202:13;;16190:26;;16271:15;;;;16236:12;;;;16163:1;16156:9;16127:169;;16742:219;16891:2;16880:9;16873:21;16854:4;16911:44;16951:2;16940:9;16936:18;16928:6;16911:44;:::i;16966:404::-;17168:2;17150:21;;;17207:2;17187:18;;;17180:30;17246:34;17241:2;17226:18;;17219:62;-1:-1:-1;;;17312:2:1;17297:18;;17290:38;17360:3;17345:19;;16966:404::o;17375:399::-;17577:2;17559:21;;;17616:2;17596:18;;;17589:30;17655:34;17650:2;17635:18;;17628:62;-1:-1:-1;;;17721:2:1;17706:18;;17699:33;17764:3;17749:19;;17375:399::o;23720:356::-;23922:2;23904:21;;;23941:18;;;23934:30;24000:34;23995:2;23980:18;;23973:62;24067:2;24052:18;;23720:356::o;28282:402::-;28484:2;28466:21;;;28523:2;28503:18;;;28496:30;28562:34;28557:2;28542:18;;28535:62;-1:-1:-1;;;28628:2:1;28613:18;;28606:36;28674:3;28659:19;;28282:402::o;30065:275::-;30136:2;30130:9;30201:2;30182:13;;-1:-1:-1;;30178:27:1;30166:40;;-1:-1:-1;;;;;30221:34:1;;30257:22;;;30218:62;30215:88;;;30283:18;;:::i;:::-;30319:2;30312:22;30065:275;;-1:-1:-1;30065:275:1:o;30345:191::-;30413:4;-1:-1:-1;;;;;30438:6:1;30435:30;30432:56;;;30468:18;;:::i;:::-;-1:-1:-1;30513:1:1;30509:14;30525:4;30505:25;;30345:191::o;30667:128::-;30707:3;30738:1;30734:6;30731:1;30728:13;30725:39;;;30744:18;;:::i;:::-;-1:-1:-1;30780:9:1;;30667:128::o;30800:120::-;30840:1;30866;30856:35;;30871:18;;:::i;:::-;-1:-1:-1;30905:9:1;;30800:120::o;30925:168::-;30965:7;31031:1;31027;31023:6;31019:14;31016:1;31013:21;31008:1;31001:9;30994:17;30990:45;30987:71;;;31038:18;;:::i;:::-;-1:-1:-1;31078:9:1;;30925:168::o;31098:125::-;31138:4;31166:1;31163;31160:8;31157:34;;;31171:18;;:::i;:::-;-1:-1:-1;31208:9:1;;31098:125::o;31228:258::-;31300:1;31310:113;31324:6;31321:1;31318:13;31310:113;;;31400:11;;;31394:18;31381:11;;;31374:39;31346:2;31339:10;31310:113;;;31441:6;31438:1;31435:13;31432:48;;;-1:-1:-1;;31476:1:1;31458:16;;31451:27;31228:258::o;31491:136::-;31530:3;31558:5;31548:39;;31567:18;;:::i;:::-;-1:-1:-1;;;31603:18:1;;31491:136::o;31632:380::-;31711:1;31707:12;;;;31754;;;31775:61;;31829:4;31821:6;31817:17;31807:27;;31775:61;31882:2;31874:6;31871:14;31851:18;31848:38;31845:161;;;31928:10;31923:3;31919:20;31916:1;31909:31;31963:4;31960:1;31953:15;31991:4;31988:1;31981:15;31845:161;;31632:380;;;:::o;32017:135::-;32056:3;-1:-1:-1;;32077:17:1;;32074:43;;;32097:18;;:::i;:::-;-1:-1:-1;32144:1:1;32133:13;;32017:135::o;32157:112::-;32189:1;32215;32205:35;;32220:18;;:::i;:::-;-1:-1:-1;32254:9:1;;32157:112::o;32274:127::-;32335:10;32330:3;32326:20;32323:1;32316:31;32366:4;32363:1;32356:15;32390:4;32387:1;32380:15;32406:127;32467:10;32462:3;32458:20;32455:1;32448:31;32498:4;32495:1;32488:15;32522:4;32519:1;32512:15;32538:127;32599:10;32594:3;32590:20;32587:1;32580:31;32630:4;32627:1;32620:15;32654:4;32651:1;32644:15;32670:127;32731:10;32726:3;32722:20;32719:1;32712:31;32762:4;32759:1;32752:15;32786:4;32783:1;32776:15;32802:127;32863:10;32858:3;32854:20;32851:1;32844:31;32894:4;32891:1;32884:15;32918:4;32915:1;32908:15;32934:131;-1:-1:-1;;;;;33009:31:1;;32999:42;;32989:70;;33055:1;33052;33045:12;33070:131;-1:-1:-1;;;;;;33144:32:1;;33134:43;;33124:71;;33191:1;33188;33181:12

Swarm Source

ipfs://97b68da279f38edfa74254463fc53a99bebdef28dc9a7f58ff02073adce01cbe

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

8888 Collection Adventure 2 Earn Explorers of a supernatural world seeking out enigmatic powerful MasksMINT HERE: https://ascendednft.io/https://twitter.com/AscendedOasis

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.