MATIC Price: $0.609626 (+1.46%)
Gas: 30 GWei
 

Overview

MATIC Balance

Polygon PoS Chain LogoPolygon PoS Chain LogoPolygon PoS Chain Logo0 MATIC

MATIC Value

$0.00

Sponsored

Transaction Hash
Method
Block
From
To
Value
Burn371353832022-12-22 10:46:12541 days ago1671705972IN
0x6229fC38...2fc46f783
0 MATIC0.0047620479.44160911
Burn371353722022-12-22 10:45:50541 days ago1671705950IN
0x6229fC38...2fc46f783
0 MATIC0.0056454490.78608498
Burn371353602022-12-22 10:45:26541 days ago1671705926IN
0x6229fC38...2fc46f783
0 MATIC0.00611428101.99988429
Burn371352672022-12-22 10:42:12541 days ago1671705732IN
0x6229fC38...2fc46f783
0 MATIC0.0044633174.45811285
Safe Mint371352282022-12-22 10:40:50541 days ago1671705650IN
0x6229fC38...2fc46f783
0 MATIC0.0106023875.43016504
Safe Mint371352222022-12-22 10:40:38541 days ago1671705638IN
0x6229fC38...2fc46f783
0 MATIC0.0107432576.43236224
Safe Mint371352142022-12-22 10:40:22541 days ago1671705622IN
0x6229fC38...2fc46f783
0 MATIC0.0112072679.73353664
Safe Mint371352042022-12-22 10:40:02541 days ago1671705602IN
0x6229fC38...2fc46f783
0 MATIC0.0120251676.27323143
Vote For Minting371351782022-12-22 10:39:10541 days ago1671705550IN
0x6229fC38...2fc46f783
0 MATIC0.0040244777.60425212
Vote For Minting371351702022-12-22 10:38:54541 days ago1671705534IN
0x6229fC38...2fc46f783
0 MATIC0.0044025184.89398151
Vote For Minting371351632022-12-22 10:38:36541 days ago1671705516IN
0x6229fC38...2fc46f783
0 MATIC0.0039189775.56987709
Vote For Minting371351572022-12-22 10:38:24541 days ago1671705504IN
0x6229fC38...2fc46f783
0 MATIC0.0042882982.69152212
Vote For Minting371351392022-12-22 10:37:48541 days ago1671705468IN
0x6229fC38...2fc46f783
0 MATIC0.005287576.67606983
Vote For Minting371351322022-12-22 10:37:34541 days ago1671705454IN
0x6229fC38...2fc46f783
0 MATIC0.0051957475.34538324
Vote For Minting371351162022-12-22 10:37:02541 days ago1671705422IN
0x6229fC38...2fc46f783
0 MATIC0.0053598577.72528091
Vote For Minting371351032022-12-22 10:36:32541 days ago1671705392IN
0x6229fC38...2fc46f783
0 MATIC0.0054459178.97316236
Unfreeze Token371345752022-12-22 10:18:24541 days ago1671704304IN
0x6229fC38...2fc46f783
0 MATIC0.00363084101.21945591
Unfreeze Token371345642022-12-22 10:18:02541 days ago1671704282IN
0x6229fC38...2fc46f783
0 MATIC0.00401912112.04388422
Unfreeze Token371345512022-12-22 10:17:36541 days ago1671704256IN
0x6229fC38...2fc46f783
0 MATIC0.0041831116.61524075
Vote For Unfreez...371345292022-12-22 10:16:52541 days ago1671704212IN
0x6229fC38...2fc46f783
0 MATIC0.0045223387.11538682
Vote For Unfreez...371345122022-12-22 10:16:14541 days ago1671704174IN
0x6229fC38...2fc46f783
0 MATIC0.0041064479.10404732
Vote For Unfreez...371345002022-12-22 10:15:50541 days ago1671704150IN
0x6229fC38...2fc46f783
0 MATIC0.0042267381.42124851
Vote For Unfreez...371344742022-12-22 10:14:58541 days ago1671704098IN
0x6229fC38...2fc46f783
0 MATIC0.005609681.28447562
Vote For Unfreez...371344542022-12-22 10:14:14541 days ago1671704054IN
0x6229fC38...2fc46f783
0 MATIC0.0057337483.08336309
Vote For Unfreez...371344382022-12-22 10:13:42541 days ago1671704022IN
0x6229fC38...2fc46f783
0 MATIC0.0051907375.21501452
View all transactions

Parent Transaction Hash Block From To Value
View All Internal Transactions
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x22d976D9...e0eEA9e56
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
LUXO_BLG_NFT

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2022-12-16
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.12;

interface IERC721Metadata {
    function name() external view returns (string memory _name);

    function symbol() external view returns (string memory _symbol);

    function tokenURI(uint256 _tokenId) external view returns (string memory);
}

interface IERC721 {
    event Transfer(
        address indexed _from,
        address indexed _to,
        uint256 indexed _tokenId
    );

    event Approval(
        address indexed _owner,
        address indexed _approved,
        uint256 indexed _tokenId
    );
    event ApprovalForAll(
        address indexed _owner,
        address indexed _operator,
        bool _approved
    );

    function balanceOf(address _owner) external view returns (uint256);

    function ownerOf(uint256 _tokenId) external view returns (address);

    function safeTransferFrom(
        address _from,
        address _to,
        uint256 _tokenId,
        bytes calldata data
    ) external;

    function safeTransferFrom(
        address _from,
        address _to,
        uint256 _tokenId
    ) external;

    function transferFrom(
        address _from,
        address _to,
        uint256 _tokenId
    ) external;

    function approve(address _approved, uint256 _tokenId) external;

    function setApprovalForAll(address _operator, bool _approved) external;

    function getApproved(uint256 _tokenId) external view returns (address);

    function isApprovedForAll(address _owner, address _operator)
        external
        view
        returns (bool);
}

interface IERC721Receiver {
    function onERC721Received(
        address _operator,
        address _from,
        uint256 _tokenId,
        bytes calldata _data
    ) external returns (bytes4);
}

interface ILuxochainNFT {
    event OwnershipTransferred(address indexed, address indexed);

    function owner() external view returns (address);

    function exists(uint256 tokenId) external view returns (bool);

    function getStorageType() external view returns (uint256);

    function isLuxochainNFT() external view returns (bool);

    function transferOwnership(address newIssuer) external;

    function totalSupply() external view returns (uint256);

    function count() external view returns (uint256);

    event TokenFreezed(uint256 tokenId, address unfreezableAddress);

    event TokenUnfreezed(uint256 tokenId, address newOwner);

    event VoterPromoted(address newVoter);

    event VoterRemoved(address oldVoter);

    function safeMint(
        uint256 tokenId,
        address to,
        string calldata tokenMetadataURI
    ) external;

    function multipleSafeMint(
        uint256[] calldata _tokensIds,
        address _to,
        string[] calldata _tokenMetadataURIs
    ) external;

    function freezeToken(uint256 tokenId, address unfreezeAddress) external;

    function unfreezeToken(uint256 tokenId, address newOwner) external;

    function isTokenFreezed(uint256 tokenId) external view returns (bool);

    function burn(uint256 tokenId) external;

    function voteForMinting(uint256 tokenId) external;

    function voteForAddingVoter(address newVoter) external;
    
    function voteForUnfreeze(uint256 tokenId) external;

    function voteForRemovingVoter(address voter) external;

    function addVoter(address newVoter) external;

    function removeVoter(address voter) external;

    function getVoters() external view returns (address[] memory);

    function isAVoter(address addr) external view returns (bool);

    function quorum() external view returns (uint256);

    function maxTotalSupply() external view returns (uint256);
}

contract LUXO_BLG_NFT is IERC721, IERC721Metadata, ILuxochainNFT {
    bytes4 private constant _INTERFACE_ID_ERC721_METADATA = 0x5b5e139f;
    bytes4 private constant _INTERFACE_ID_ERC721 = 0x80ac58cd;
    bytes4 private constant _INTERFACE_ID_ERC165 = 0x01ffc9a7;
    uint256 private _totalSupply;
    uint256 private _maxTotalSupply;
    uint256 private _count;

    string private _name;
    string private _symbol;

    address private _issuer;

    mapping(address => mapping(address => bool)) private _operatorApprovals;
    mapping(uint256 => address) private _tokenApprovals;
    mapping(uint256 => address) private _owners;
    mapping(address => uint256) private _balances;
    mapping(uint256 => string) private _metadataURIs;
    mapping(uint256 => bool) private _freezed;
    mapping(uint256 => address) private _unfreezeAddresses;
    mapping(uint256 => mapping(address => bool)) private _tokensVoters;
    mapping(uint256 => mapping(address => bool)) private _unfreezeVoters;
    mapping(uint256 => uint256) private _tokensVotes;
    mapping(address => mapping(address => bool)) private _addressesVoters;
    mapping(address => uint256) private _addressesVotes;
    mapping(address => mapping(address => bool)) private _revokeAddressesVoters;
    mapping(address => uint256) private _revokeAddressesVotes;
    mapping(uint256 => uint256) private _unfreezeVotes;
    mapping(address => bool) private _voters;
    address[] private _votersArray;
    uint256 private _numberOfVoters;
    bool private _isFreeMintable;

    constructor(
        string memory name_,
        string memory symbol_,
        bool isFreeMintable_,
        uint256 maxTotalSupply_,
        address[] memory voters_
    ) {
        _name = name_;
        _symbol = symbol_;
        _isFreeMintable = isFreeMintable_;
        _issuer = msg.sender;
        _maxTotalSupply = maxTotalSupply_;
        require(voters_.length > 0, "Not enough voters for quorum");
        for (uint256 i = 0; i < voters_.length; i++) {
            address newVoter = voters_[i];
            require(
                _voters[newVoter] == false,
                "This address is already a voter"
            );
            _votersArray.push(newVoter);
            _voters[newVoter] = true;
            _numberOfVoters++;
        }
    }

    function maxTotalSupply() public view override returns (uint256) {
        return _maxTotalSupply;
    }

    function getVoters() public view override returns (address[] memory) {
        return _votersArray;
    }

    function isAVoter(address addr) public view override returns (bool) {
        return _voters[addr] == true;
    }

    function isLuxochainNFT() public view virtual override returns (bool) {
        return true;
    }

    function getStorageType() public view virtual override returns (uint256) {
        return 1;
    }

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

    function transferOwnership(address newIssuer) public virtual override {
        require(msg.sender == _issuer, "Not issuer");
        require(newIssuer != address(0), "New issuer is the zero address");
        _issuer = newIssuer;
        emit OwnershipTransferred(msg.sender, newIssuer);
    }

    function supportsInterface(bytes4 interfaceId)
        public
        view
        virtual
        returns (bool)
    {
        return
            interfaceId == _INTERFACE_ID_ERC721_METADATA ||
            interfaceId == _INTERFACE_ID_ERC721 ||
            interfaceId == _INTERFACE_ID_ERC165;
    }

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

    function ownerOf(uint256 tokenId)
        public
        view
        virtual
        override
        returns (address)
    {
        return _owners[tokenId];
    }

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

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

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

    function count() external view override returns (uint256) {
        return _count;
    }

    function tokenURI(uint256 tokenId)
        public
        view
        virtual
        override
        returns (string memory)
    {
        return _metadataURIs[tokenId];
    }

    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        require(
            _isApprovedOrOwner(msg.sender, tokenId),
            "Transfer caller is not owner nor approved"
        );
        _transfer(from, to, tokenId);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        safeTransferFrom(from, to, tokenId, "");
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) public virtual override {
        _safeTransfer(from, to, tokenId, _data);
    }

    function _safeTransfer(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) internal virtual {
        _transfer(from, to, tokenId);
        require(
            _checkOnERC721Received(from, to, tokenId, _data),
            "Transfer to non ERC721Receiver implementer"
        );
    }

    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual {
        require(to != address(0), "Transfer to the zero address");
        require(!_freezed[tokenId], "Token is freezed");
        require(
            _isApprovedOrOwner(msg.sender, tokenId),
            "Sender cannot transfer token"
        );
        _balances[from] -= 1;
        _balances[to] += 1;
        _owners[tokenId] = to;
        _approve(address(0), tokenId);
        emit Transfer(from, to, tokenId);
    }

    function exists(uint256 tokenId)
        public
        view
        virtual
        override
        returns (bool)
    {
        return _owners[tokenId] != address(0);
    }

    function voteForMinting(uint256 tokenId) public override {
        require(_voters[msg.sender] == true, "You are not a voter");
        require(
            _tokensVoters[tokenId][msg.sender] == false,
            "You have already vote for this token"
        );
        _tokensVoters[tokenId][msg.sender] = true;
        _tokensVotes[tokenId]++;
    }

    function voteForUnfreeze(uint256 tokenId) public override {
        require(_voters[msg.sender] == true, "You are not a voter");
        require(
            _unfreezeVoters[tokenId][msg.sender] == false,
            "You have already vote for this token"
        );
        _unfreezeVoters[tokenId][msg.sender] = true;
        _unfreezeVotes[tokenId]++;
    }

    function voteForAddingVoter(address newVoter) public override {
        require(_voters[msg.sender] == true, "You are not a voter");
        require(
            _addressesVoters[newVoter][msg.sender] == false,
            "You have already vote for this address"
        );
        _addressesVoters[newVoter][msg.sender] = true;
        _addressesVotes[newVoter]++;
    }

    function voteForRemovingVoter(address voter) public override {
        require(_voters[msg.sender] == true, "You are not a voter");
        require(
            _revokeAddressesVoters[voter][msg.sender] == false,
            "You have already vote for this address"
        );
        _revokeAddressesVoters[voter][msg.sender] = true;
        _revokeAddressesVotes[voter]++;
    }

    function removeVoter(address voter) public override {
        require(
            _revokeAddressesVotes[voter] >= _getNeededVotersNumber(),
            "Not enought voters"
        );
        require(_numberOfVoters > 1, "Not enought remaining voters");
        require(_voters[voter] == true, "This address is not a voter ");
        uint256 indexVoter;
        for (uint256 i = 0; i < _votersArray.length; i++) {
            address loopVoter = _votersArray[i];
            if (loopVoter == voter) {
                indexVoter = i;
            }
            _addressesVoters[voter][loopVoter] = false;
        }
        _numberOfVoters--;
        _voters[voter] = false;
        _addressesVotes[voter] = 0;
        delete _votersArray[indexVoter];
        emit VoterRemoved(voter);
    }

    function addVoter(address newVoter) public override {
        require(
            _addressesVotes[newVoter] >= _getNeededVotersNumber(),
            "Not enought voters"
        );
        require(_voters[newVoter] == false, "This address is already a voter");
        for (uint256 i = 0; i < _votersArray.length; i++) {
            _revokeAddressesVoters[newVoter][_votersArray[i]] = false;
        }
        _voters[newVoter] = true;
        _numberOfVoters++;
        _votersArray.push(newVoter);
        _revokeAddressesVotes[newVoter] = 0;
        emit VoterPromoted(newVoter);
    }

    function _safeMint(
        uint256 tokenId,
        address to,
        string calldata tokenMetadataURI
    ) internal virtual {
        require(
            _isFreeMintable ||
                _tokensVotes[tokenId] >= _getNeededVotersNumber(),
            "Not enought voters"
        );
        _owners[tokenId] = to;
        _metadataURIs[tokenId] = tokenMetadataURI;
        emit Transfer(address(0), to, tokenId);
    }

    function safeMint(
        uint256 tokenId,
        address to,
        string calldata tokenMetadataURI
    ) external override {
        require(to != address(0), "Mint to the zero address");
        require(!exists(tokenId), "Token already minted");
        _totalSupply += 1;
        require(_maxTotalSupply >= _totalSupply, "Max total supply reached");
        _count += 1;
        _balances[to] += 1;
        _safeMint(tokenId, to, tokenMetadataURI);
    }

    function multipleSafeMint(
        uint256[] calldata tokensIds,
        address to,
        string[] calldata tokenMetadataURIs
    ) external override {
        require(
            tokensIds.length == tokenMetadataURIs.length,
            "Different number of tokens and metadata provided"
        );
        require(to != address(0), "Mint to the zero address");
        require(
            _maxTotalSupply >= _totalSupply + tokensIds.length,
            "Max total supply reached"
        );
        for (uint256 i = 0; i < tokensIds.length; i++) {
            uint256 tokenId = tokensIds[i];
            require(!exists(tokenId), "Token already minted");
            _safeMint(tokenId, to, tokenMetadataURIs[i]);
        }
        _count += tokensIds.length;
        _totalSupply += tokensIds.length;
        _balances[to] += tokensIds.length;
    }

    function freezeToken(uint256 tokenId, address unfreezeAddress)
        external
        override
    {
        require(
            _isApprovedOrOwner(msg.sender, tokenId),
            "Cannot freeze token: permission denied"
        );
        require(unfreezeAddress != address(0), "Invalid unfreeze address");
        _freezed[tokenId] = true;
        _unfreezeAddresses[tokenId] = unfreezeAddress;
        emit TokenFreezed(tokenId, unfreezeAddress);
    }

    function unfreezeToken(uint256 tokenId, address newOwner)
        external
        override
    {
        require(
            _unfreezeVotes[tokenId] >= _getNeededVotersNumber(),
            "Not enought voters"
        );
         require(
            _unfreezeAddresses[tokenId] == msg.sender,
            "You're not allowed to unfreeze this token"
        );
        require(newOwner != address(0), "Invalid new owner address");
        delete _freezed[tokenId];
        delete _unfreezeAddresses[tokenId];
        _owners[tokenId] = newOwner;
        emit TokenUnfreezed(tokenId, newOwner);
    }

    function isTokenFreezed(uint256 tokenId)
        public
        view
        virtual
        override
        returns (bool)
    {
        return _freezed[tokenId];
    }

    function burn(uint256 tokenId) external override {
        require(!_freezed[tokenId], "Token is freezed");
        address __owner = ownerOf(tokenId);
        require(_isApprovedOrOwner(msg.sender, tokenId), "Permission denied");
        _totalSupply -= 1;
        _balances[__owner] -= 1;
        delete _owners[tokenId];
        for (uint256 i = 0; i < _votersArray.length; i++) {
            _tokensVoters[tokenId][_votersArray[i]] = false;
        }
        _tokensVotes[tokenId] = 0;
        _approve(address(0), tokenId);
        emit Transfer(__owner, address(0), tokenId);
    }

    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }

    function _checkOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        if (!isContract(to)) return true;
        try
            IERC721Receiver(to).onERC721Received(
                msg.sender,
                from,
                tokenId,
                _data
            )
        returns (bytes4 retval) {
            return retval == IERC721Receiver.onERC721Received.selector;
        } catch (bytes memory reason) {
            if (reason.length == 0) {
                revert("Transfer to non ERC721Receiver implementer");
            } else {
                assembly {
                    revert(add(32, reason), mload(reason))
                }
            }
        }
    }

    function _isApprovedOrOwner(address spender, uint256 tokenId)
        internal
        view
        virtual
        returns (bool)
    {
        require(exists(tokenId), "Operator query for nonexistent token");
        address __owner = ownerOf(tokenId);
        return (spender == __owner ||
            getApproved(tokenId) == spender ||
            isApprovedForAll(__owner, spender));
    }

    function _setApprovalForAll(
        address __owner,
        address operator,
        bool approved
    ) internal virtual {
        require(__owner != operator, "Approve to caller");
        _operatorApprovals[__owner][operator] = approved;
        emit ApprovalForAll(__owner, operator, approved);
    }

    function _approve(address to, uint256 tokenId) internal virtual {
        _tokenApprovals[tokenId] = to;
        emit Approval(ownerOf(tokenId), to, tokenId);
    }

    function approve(address to, uint256 tokenId) public virtual override {
        address __owner = ownerOf(tokenId);
        require(to != __owner, "Approval to current owner");
        require(
            msg.sender == __owner || isApprovedForAll(__owner, msg.sender),
            "Approve caller is not owner nor approved for all"
        );
        _approve(to, tokenId);
    }

    function getApproved(uint256 tokenId)
        public
        view
        virtual
        override
        returns (address)
    {
        require(exists(tokenId), "Approved query for nonexistent token");
        return _tokenApprovals[tokenId];
    }

    function setApprovalForAll(address operator, bool approved)
        public
        virtual
        override
    {
        _setApprovalForAll(msg.sender, operator, approved);
    }

    function isApprovedForAll(address __owner, address operator)
        public
        view
        virtual
        override
        returns (bool)
    {
        return _operatorApprovals[__owner][operator];
    }

    function _getNeededVotersNumber() internal view returns (uint256) {
        uint256 quotient = _numberOfVoters / 2;
        if (quotient == 0) {
            return 1;
        }
        uint256 remainder = _numberOfVoters - 2 * quotient;
        if (remainder > 0) {
            return quotient + 1;
        }
        return quotient;
    }

    function quorum() external view returns (uint256) {
        return _getNeededVotersNumber();
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"bool","name":"isFreeMintable_","type":"bool"},{"internalType":"uint256","name":"maxTotalSupply_","type":"uint256"},{"internalType":"address[]","name":"voters_","type":"address[]"}],"stateMutability":"nonpayable","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":"","type":"address"},{"indexed":true,"internalType":"address","name":"","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"unfreezableAddress","type":"address"}],"name":"TokenFreezed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"TokenUnfreezed","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newVoter","type":"address"}],"name":"VoterPromoted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldVoter","type":"address"}],"name":"VoterRemoved","type":"event"},{"inputs":[{"internalType":"address","name":"newVoter","type":"address"}],"name":"addVoter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"__owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"count","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"unfreezeAddress","type":"address"}],"name":"freezeToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStorageType","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVoters","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isAVoter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"__owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isLuxochainNFT","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"isTokenFreezed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokensIds","type":"uint256[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"string[]","name":"tokenMetadataURIs","type":"string[]"}],"name":"multipleSafeMint","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":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"voter","type":"address"}],"name":"removeVoter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"string","name":"tokenMetadataURI","type":"string"}],"name":"safeMint","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"newIssuer","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"newOwner","type":"address"}],"name":"unfreezeToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newVoter","type":"address"}],"name":"voteForAddingVoter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"voteForMinting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"voter","type":"address"}],"name":"voteForRemovingVoter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"voteForUnfreeze","outputs":[],"stateMutability":"nonpayable","type":"function"}]

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061021c5760003560e01c806370a0823111610125578063c87b56dd116100ad578063e985e9c51161007c578063e985e9c514610639578063f2fde38b14610669578063f4ab9adf14610685578063f626cf2c146106a1578063ff86e606146106bd5761021c565b8063c87b56dd146105b3578063ccf809c1146105e3578063cdd72253146105ff578063dc5540c01461061d5761021c565b806395e4207a116100f457806395e4207a14610525578063a142192414610541578063a22cb4651461055d578063a645b95514610579578063b88d4fde146105975761021c565b806370a082311461049d57806386c1ff68146104cd5780638da5cb5b146104e957806395d89b41146105075761021c565b806323b872dd116101a857806342842e0e1161017757806342842e0e146103e957806342966c68146104055780634f558e79146104215780636352211e14610451578063689745df146104815761021c565b806323b872dd1461036157806327f4b2eb1461037d57806327f8237d146103ad5780632ab4d052146103cb5761021c565b8063081812fc116101ef578063081812fc146102bd578063095ea7b3146102ed5780631703a018146103095780631745517d1461032757806318160ddd146103435761021c565b806301ffc9a71461022157806304915f821461025157806306661abd1461028157806306fdde031461029f575b600080fd5b61023b6004803603810190610236919061346c565b6106d9565b60405161024891906134b4565b60405180910390f35b61026b60048036038101906102669190613505565b6107c8565b60405161027891906134b4565b60405180910390f35b6102896107f2565b6040516102969190613541565b60405180910390f35b6102a76107fc565b6040516102b491906135f5565b60405180910390f35b6102d760048036038101906102d29190613505565b61088e565b6040516102e49190613658565b60405180910390f35b6103076004803603810190610302919061369f565b610913565b005b610311610a1d565b60405161031e9190613541565b60405180910390f35b610341600480360381019061033c919061379a565b610a2c565b005b61034b610c89565b6040516103589190613541565b60405180910390f35b61037b6004803603810190610376919061382f565b610c92565b005b61039760048036038101906103929190613882565b610ceb565b6040516103a491906134b4565b60405180910390f35b6103b5610d48565b6040516103c29190613541565b60405180910390f35b6103d3610d51565b6040516103e09190613541565b60405180910390f35b61040360048036038101906103fe919061382f565b610d5b565b005b61041f600480360381019061041a9190613505565b610d7b565b005b61043b60048036038101906104369190613505565b611027565b60405161044891906134b4565b60405180910390f35b61046b60048036038101906104669190613505565b611093565b6040516104789190613658565b60405180910390f35b61049b60048036038101906104969190613882565b6110d0565b005b6104b760048036038101906104b29190613882565b611320565b6040516104c49190613541565b60405180910390f35b6104e760048036038101906104e29190613882565b611369565b005b6104f1611735565b6040516104fe9190613658565b60405180910390f35b61050f61175f565b60405161051c91906135f5565b60405180910390f35b61053f600480360381019061053a9190613882565b6117f1565b005b61055b600480360381019061055691906138af565b611a41565b005b6105776004803603810190610572919061391b565b611c97565b005b610581611ca6565b60405161058e91906134b4565b60405180910390f35b6105b160048036038101906105ac9190613a8b565b611caf565b005b6105cd60048036038101906105c89190613505565b611cc1565b6040516105da91906135f5565b60405180910390f35b6105fd60048036038101906105f89190613505565b611d66565b005b610607611f32565b6040516106149190613bcc565b60405180910390f35b610637600480360381019061063291906138af565b611fc0565b005b610653600480360381019061064e9190613bee565b612134565b60405161066091906134b4565b60405180910390f35b610683600480360381019061067e9190613882565b6121c8565b005b61069f600480360381019061069a9190613882565b612366565b005b6106bb60048036038101906106b69190613c84565b6126cb565b005b6106d760048036038101906106d29190613505565b612867565b005b6000635b5e139f60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061077257506380ac58cd60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806107c157506301ffc9a760e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6000600b600083815260200190815260200160002060009054906101000a900460ff169050919050565b6000600254905090565b60606003805461080b90613d27565b80601f016020809104026020016040519081016040528092919081815260200182805461083790613d27565b80156108845780601f1061085957610100808354040283529160200191610884565b820191906000526020600020905b81548152906001019060200180831161086757829003601f168201915b5050505050905090565b600061089982611027565b6108d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cf90613dcb565b60405180910390fd5b6007600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061091e82611093565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561098f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098690613e37565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806109cf57506109ce8133612134565b5b610a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0590613ec9565b60405180910390fd5b610a188383612a33565b505050565b6000610a27612aec565b905090565b818190508585905014610a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6b90613f5b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610adb90613fc7565b60405180910390fd5b84849050600054610af59190614016565b6001541015610b39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b30906140b8565b60405180910390fd5b60005b85859050811015610bf1576000868683818110610b5c57610b5b6140d8565b5b905060200201359050610b6e81611027565b15610bae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba590614153565b60405180910390fd5b610bdd8186868686818110610bc657610bc56140d8565b5b9050602002810190610bd89190614182565b612b59565b508080610be9906141e5565b915050610b3c565b508484905060026000828254610c079190614016565b9250508190555084849050600080828254610c229190614016565b9250508190555084849050600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c7b9190614016565b925050819055505050505050565b60008054905090565b610c9c3382612ca4565b610cdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd2906142a0565b60405180910390fd5b610ce6838383612d82565b505050565b600060011515601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515149050919050565b60006001905090565b6000600154905090565b610d7683838360405180602001604052806000815250611caf565b505050565b600b600082815260200190815260200160002060009054906101000a900460ff1615610ddc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd39061430c565b60405180910390fd5b6000610de782611093565b9050610df33383612ca4565b610e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2990614378565b60405180910390fd5b6001600080828254610e449190614398565b925050819055506001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e9b9190614398565b925050819055506008600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560005b601680549050811015610fa2576000600d6000858152602001908152602001600020600060168481548110610f1357610f126140d8565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610f9a906141e5565b915050610edb565b506000600f600084815260200190815260200160002081905550610fc7600083612a33565b81600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b60008073ffffffffffffffffffffffffffffffffffffffff166008600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b60006008600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60011515601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611163576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115a90614418565b60405180910390fd5b60001515601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122a906144aa565b60405180910390fd5b6001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611318906141e5565b919050555050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611371612aec565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156113f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e990614516565b60405180910390fd5b600160175411611437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142e90614582565b60405180910390fd5b60011515601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146114ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c1906145ee565b60405180910390fd5b600080600090505b601680549050811015611603576000601682815481106114f5576114f46140d8565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561155a578192505b6000601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505080806115fb906141e5565b9150506114d2565b50601760008154809291906116179061460e565b91905055506000601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601681815481106116cd576116cc6140d8565b5b9060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690557fa14a79af012d1756818f9bd59ccfc9ad185a71df86b9392d9059d9e6faf6d644826040516117299190613658565b60405180910390a15050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461176e90613d27565b80601f016020809104026020016040519081016040528092919081815260200182805461179a90613d27565b80156117e75780601f106117bc576101008083540402835291602001916117e7565b820191906000526020600020905b8154815290600101906020018083116117ca57829003601f168201915b5050505050905090565b60011515601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187b90614418565b60405180910390fd5b60001515601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194b906144aa565b60405180910390fd5b6001601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611a39906141e5565b919050555050565b611a49612aec565b60146000848152602001908152602001600020541015611a9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9590614516565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600c600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b36906146aa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611baf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba690614716565b60405180910390fd5b600b600083815260200190815260200160002060006101000a81549060ff0219169055600c600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055806008600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f75e417375987343758f0c7626fc69322b5a41d8dec15c4c37a683c16f7f7502c8282604051611c8b929190614736565b60405180910390a15050565b611ca2338383613007565b5050565b60006001905090565b611cbb84848484613174565b50505050565b6060600a60008381526020019081526020016000208054611ce190613d27565b80601f0160208091040260200160405190810160405280929190818152602001828054611d0d90613d27565b8015611d5a5780601f10611d2f57610100808354040283529160200191611d5a565b820191906000526020600020905b815481529060010190602001808311611d3d57829003601f168201915b50505050509050919050565b60011515601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df090614418565b60405180910390fd5b60001515600d600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611e9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e94906147d1565b60405180910390fd5b6001600d600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600f60008281526020019081526020016000206000815480929190611f2a906141e5565b919050555050565b60606016805480602002602001604051908101604052809291908181526020018280548015611fb657602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611f6c575b5050505050905090565b611fca3383612ca4565b612009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200090614863565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612079576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612070906148cf565b60405180910390fd5b6001600b600084815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f682012779034abada8e790e0b1d9aa8bdd94f696ca0ef1bc73b9af4d3df7265f8282604051612128929190614736565b60405180910390a15050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224f9061493b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156122c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bf906149a7565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b61236e612aec565b601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156123ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e690614516565b60405180910390fd5b60001515601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514612482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247990614a13565b60405180910390fd5b60005b601680549050811015612578576000601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601684815481106124e9576124e86140d8565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080612570906141e5565b915050612485565b506001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601760008154809291906125e4906141e5565b91905055506016819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fea549ebb04beed850f55b99f8e130ae4bdf23f98c0df7552932f7cd5b78b5c96816040516126c09190613658565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561273b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273290613fc7565b60405180910390fd5b61274484611027565b15612784576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277b90614153565b60405180910390fd5b60016000808282546127969190614016565b9250508190555060005460015410156127e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127db906140b8565b60405180910390fd5b6001600260008282546127f79190614016565b925050819055506001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461284e9190614016565b9250508190555061286184848484612b59565b50505050565b60011515601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146128fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f190614418565b60405180910390fd5b60001515600e600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461299e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612995906147d1565b60405180910390fd5b6001600e600083815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601460008281526020019081526020016000206000815480929190612a2b906141e5565b919050555050565b816007600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16612aa683611093565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806002601754612afe9190614a62565b90506000811415612b13576001915050612b56565b6000816002612b229190614a93565b601754612b2f9190614398565b90506000811115612b5057600182612b479190614016565b92505050612b56565b81925050505b90565b601860009054906101000a900460ff1680612b8e5750612b77612aec565b600f60008681526020019081526020016000205410155b612bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc490614516565b60405180910390fd5b826008600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508181600a60008781526020019081526020016000209190612c4192919061335d565b50838373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b6000612caf82611027565b612cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce590614b5f565b60405180910390fd5b6000612cf983611093565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612d6857508373ffffffffffffffffffffffffffffffffffffffff16612d508461088e565b73ffffffffffffffffffffffffffffffffffffffff16145b80612d795750612d788185612134565b5b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612df2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de990614bcb565b60405180910390fd5b600b600082815260200190815260200160002060009054906101000a900460ff1615612e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4a9061430c565b60405180910390fd5b612e5d3382612ca4565b612e9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9390614c37565b60405180910390fd5b6001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612eec9190614398565b925050819055506001600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f439190614016565b92505081905550816008600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612fa7600082612a33565b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161306d90614ca3565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161316791906134b4565b60405180910390a3505050565b61317f848484612d82565b61318b848484846131d0565b6131ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131c190614d35565b60405180910390fd5b50505050565b60006131db8461333a565b6131e85760019050613332565b8373ffffffffffffffffffffffffffffffffffffffff1663150b7a02338786866040518563ffffffff1660e01b81526004016132279493929190614daa565b6020604051808303816000875af192505050801561326357506040513d601f19601f820116820180604052508101906132609190614e0b565b60015b6132e6573d8060008114613293576040519150601f19603f3d011682016040523d82523d6000602084013e613298565b606091505b506000815114156132de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132d590614d35565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b82805461336990613d27565b90600052602060002090601f01602090048101928261338b57600085556133d2565b82601f106133a457803560ff19168380011785556133d2565b828001600101855582156133d2579182015b828111156133d15782358255916020019190600101906133b6565b5b5090506133df91906133e3565b5090565b5b808211156133fc5760008160009055506001016133e4565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61344981613414565b811461345457600080fd5b50565b60008135905061346681613440565b92915050565b6000602082840312156134825761348161340a565b5b600061349084828501613457565b91505092915050565b60008115159050919050565b6134ae81613499565b82525050565b60006020820190506134c960008301846134a5565b92915050565b6000819050919050565b6134e2816134cf565b81146134ed57600080fd5b50565b6000813590506134ff816134d9565b92915050565b60006020828403121561351b5761351a61340a565b5b6000613529848285016134f0565b91505092915050565b61353b816134cf565b82525050565b60006020820190506135566000830184613532565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561359657808201518184015260208101905061357b565b838111156135a5576000848401525b50505050565b6000601f19601f8301169050919050565b60006135c78261355c565b6135d18185613567565b93506135e1818560208601613578565b6135ea816135ab565b840191505092915050565b6000602082019050818103600083015261360f81846135bc565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061364282613617565b9050919050565b61365281613637565b82525050565b600060208201905061366d6000830184613649565b92915050565b61367c81613637565b811461368757600080fd5b50565b60008135905061369981613673565b92915050565b600080604083850312156136b6576136b561340a565b5b60006136c48582860161368a565b92505060206136d5858286016134f0565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112613704576137036136df565b5b8235905067ffffffffffffffff811115613721576137206136e4565b5b60208301915083602082028301111561373d5761373c6136e9565b5b9250929050565b60008083601f84011261375a576137596136df565b5b8235905067ffffffffffffffff811115613777576137766136e4565b5b602083019150836020820283011115613793576137926136e9565b5b9250929050565b6000806000806000606086880312156137b6576137b561340a565b5b600086013567ffffffffffffffff8111156137d4576137d361340f565b5b6137e0888289016136ee565b955095505060206137f38882890161368a565b935050604086013567ffffffffffffffff8111156138145761381361340f565b5b61382088828901613744565b92509250509295509295909350565b6000806000606084860312156138485761384761340a565b5b60006138568682870161368a565b93505060206138678682870161368a565b9250506040613878868287016134f0565b9150509250925092565b6000602082840312156138985761389761340a565b5b60006138a68482850161368a565b91505092915050565b600080604083850312156138c6576138c561340a565b5b60006138d4858286016134f0565b92505060206138e58582860161368a565b9150509250929050565b6138f881613499565b811461390357600080fd5b50565b600081359050613915816138ef565b92915050565b600080604083850312156139325761393161340a565b5b60006139408582860161368a565b925050602061395185828601613906565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613998826135ab565b810181811067ffffffffffffffff821117156139b7576139b6613960565b5b80604052505050565b60006139ca613400565b90506139d6828261398f565b919050565b600067ffffffffffffffff8211156139f6576139f5613960565b5b6139ff826135ab565b9050602081019050919050565b82818337600083830152505050565b6000613a2e613a29846139db565b6139c0565b905082815260208101848484011115613a4a57613a4961395b565b5b613a55848285613a0c565b509392505050565b600082601f830112613a7257613a716136df565b5b8135613a82848260208601613a1b565b91505092915050565b60008060008060808587031215613aa557613aa461340a565b5b6000613ab38782880161368a565b9450506020613ac48782880161368a565b9350506040613ad5878288016134f0565b925050606085013567ffffffffffffffff811115613af657613af561340f565b5b613b0287828801613a5d565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b4381613637565b82525050565b6000613b558383613b3a565b60208301905092915050565b6000602082019050919050565b6000613b7982613b0e565b613b838185613b19565b9350613b8e83613b2a565b8060005b83811015613bbf578151613ba68882613b49565b9750613bb183613b61565b925050600181019050613b92565b5085935050505092915050565b60006020820190508181036000830152613be68184613b6e565b905092915050565b60008060408385031215613c0557613c0461340a565b5b6000613c138582860161368a565b9250506020613c248582860161368a565b9150509250929050565b60008083601f840112613c4457613c436136df565b5b8235905067ffffffffffffffff811115613c6157613c606136e4565b5b602083019150836001820283011115613c7d57613c7c6136e9565b5b9250929050565b60008060008060608587031215613c9e57613c9d61340a565b5b6000613cac878288016134f0565b9450506020613cbd8782880161368a565b935050604085013567ffffffffffffffff811115613cde57613cdd61340f565b5b613cea87828801613c2e565b925092505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613d3f57607f821691505b60208210811415613d5357613d52613cf8565b5b50919050565b7f417070726f76656420717565727920666f72206e6f6e6578697374656e74207460008201527f6f6b656e00000000000000000000000000000000000000000000000000000000602082015250565b6000613db5602483613567565b9150613dc082613d59565b604082019050919050565b60006020820190508181036000830152613de481613da8565b9050919050565b7f417070726f76616c20746f2063757272656e74206f776e657200000000000000600082015250565b6000613e21601983613567565b9150613e2c82613deb565b602082019050919050565b60006020820190508181036000830152613e5081613e14565b9050919050565b7f417070726f76652063616c6c6572206973206e6f74206f776e6572206e6f722060008201527f617070726f76656420666f7220616c6c00000000000000000000000000000000602082015250565b6000613eb3603083613567565b9150613ebe82613e57565b604082019050919050565b60006020820190508181036000830152613ee281613ea6565b9050919050565b7f446966666572656e74206e756d626572206f6620746f6b656e7320616e64206d60008201527f657461646174612070726f766964656400000000000000000000000000000000602082015250565b6000613f45603083613567565b9150613f5082613ee9565b604082019050919050565b60006020820190508181036000830152613f7481613f38565b9050919050565b7f4d696e7420746f20746865207a65726f20616464726573730000000000000000600082015250565b6000613fb1601883613567565b9150613fbc82613f7b565b602082019050919050565b60006020820190508181036000830152613fe081613fa4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614021826134cf565b915061402c836134cf565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561406157614060613fe7565b5b828201905092915050565b7f4d617820746f74616c20737570706c7920726561636865640000000000000000600082015250565b60006140a2601883613567565b91506140ad8261406c565b602082019050919050565b600060208201905081810360008301526140d181614095565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f546f6b656e20616c7265616479206d696e746564000000000000000000000000600082015250565b600061413d601483613567565b915061414882614107565b602082019050919050565b6000602082019050818103600083015261416c81614130565b9050919050565b600080fd5b600080fd5b600080fd5b6000808335600160200384360303811261419f5761419e614173565b5b80840192508235915067ffffffffffffffff8211156141c1576141c0614178565b5b6020830192506001820236038313156141dd576141dc61417d565b5b509250929050565b60006141f0826134cf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561422357614222613fe7565b5b600182019050919050565b7f5472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7260008201527f20617070726f7665640000000000000000000000000000000000000000000000602082015250565b600061428a602983613567565b91506142958261422e565b604082019050919050565b600060208201905081810360008301526142b98161427d565b9050919050565b7f546f6b656e20697320667265657a656400000000000000000000000000000000600082015250565b60006142f6601083613567565b9150614301826142c0565b602082019050919050565b60006020820190508181036000830152614325816142e9565b9050919050565b7f5065726d697373696f6e2064656e696564000000000000000000000000000000600082015250565b6000614362601183613567565b915061436d8261432c565b602082019050919050565b6000602082019050818103600083015261439181614355565b9050919050565b60006143a3826134cf565b91506143ae836134cf565b9250828210156143c1576143c0613fe7565b5b828203905092915050565b7f596f7520617265206e6f74206120766f74657200000000000000000000000000600082015250565b6000614402601383613567565b915061440d826143cc565b602082019050919050565b60006020820190508181036000830152614431816143f5565b9050919050565b7f596f75206861766520616c726561647920766f746520666f722074686973206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614494602683613567565b915061449f82614438565b604082019050919050565b600060208201905081810360008301526144c381614487565b9050919050565b7f4e6f7420656e6f7567687420766f746572730000000000000000000000000000600082015250565b6000614500601283613567565b915061450b826144ca565b602082019050919050565b6000602082019050818103600083015261452f816144f3565b9050919050565b7f4e6f7420656e6f756768742072656d61696e696e6720766f7465727300000000600082015250565b600061456c601c83613567565b915061457782614536565b602082019050919050565b6000602082019050818103600083015261459b8161455f565b9050919050565b7f546869732061646472657373206973206e6f74206120766f7465722000000000600082015250565b60006145d8601c83613567565b91506145e3826145a2565b602082019050919050565b60006020820190508181036000830152614607816145cb565b9050919050565b6000614619826134cf565b9150600082141561462d5761462c613fe7565b5b600182039050919050565b7f596f75277265206e6f7420616c6c6f77656420746f20756e667265657a65207460008201527f68697320746f6b656e0000000000000000000000000000000000000000000000602082015250565b6000614694602983613567565b915061469f82614638565b604082019050919050565b600060208201905081810360008301526146c381614687565b9050919050565b7f496e76616c6964206e6577206f776e6572206164647265737300000000000000600082015250565b6000614700601983613567565b915061470b826146ca565b602082019050919050565b6000602082019050818103600083015261472f816146f3565b9050919050565b600060408201905061474b6000830185613532565b6147586020830184613649565b9392505050565b7f596f75206861766520616c726561647920766f746520666f722074686973207460008201527f6f6b656e00000000000000000000000000000000000000000000000000000000602082015250565b60006147bb602483613567565b91506147c68261475f565b604082019050919050565b600060208201905081810360008301526147ea816147ae565b9050919050565b7f43616e6e6f7420667265657a6520746f6b656e3a207065726d697373696f6e2060008201527f64656e6965640000000000000000000000000000000000000000000000000000602082015250565b600061484d602683613567565b9150614858826147f1565b604082019050919050565b6000602082019050818103600083015261487c81614840565b9050919050565b7f496e76616c696420756e667265657a6520616464726573730000000000000000600082015250565b60006148b9601883613567565b91506148c482614883565b602082019050919050565b600060208201905081810360008301526148e8816148ac565b9050919050565b7f4e6f742069737375657200000000000000000000000000000000000000000000600082015250565b6000614925600a83613567565b9150614930826148ef565b602082019050919050565b6000602082019050818103600083015261495481614918565b9050919050565b7f4e65772069737375657220697320746865207a65726f20616464726573730000600082015250565b6000614991601e83613567565b915061499c8261495b565b602082019050919050565b600060208201905081810360008301526149c081614984565b9050919050565b7f54686973206164647265737320697320616c7265616479206120766f74657200600082015250565b60006149fd601f83613567565b9150614a08826149c7565b602082019050919050565b60006020820190508181036000830152614a2c816149f0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a6d826134cf565b9150614a78836134cf565b925082614a8857614a87614a33565b5b828204905092915050565b6000614a9e826134cf565b9150614aa9836134cf565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ae257614ae1613fe7565b5b828202905092915050565b7f4f70657261746f7220717565727920666f72206e6f6e6578697374656e74207460008201527f6f6b656e00000000000000000000000000000000000000000000000000000000602082015250565b6000614b49602483613567565b9150614b5482614aed565b604082019050919050565b60006020820190508181036000830152614b7881614b3c565b9050919050565b7f5472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b6000614bb5601c83613567565b9150614bc082614b7f565b602082019050919050565b60006020820190508181036000830152614be481614ba8565b9050919050565b7f53656e6465722063616e6e6f74207472616e7366657220746f6b656e00000000600082015250565b6000614c21601c83613567565b9150614c2c82614beb565b602082019050919050565b60006020820190508181036000830152614c5081614c14565b9050919050565b7f417070726f766520746f2063616c6c6572000000000000000000000000000000600082015250565b6000614c8d601183613567565b9150614c9882614c57565b602082019050919050565b60006020820190508181036000830152614cbc81614c80565b9050919050565b7f5472616e7366657220746f206e6f6e204552433732315265636569766572206960008201527f6d706c656d656e74657200000000000000000000000000000000000000000000602082015250565b6000614d1f602a83613567565b9150614d2a82614cc3565b604082019050919050565b60006020820190508181036000830152614d4e81614d12565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000614d7c82614d55565b614d868185614d60565b9350614d96818560208601613578565b614d9f816135ab565b840191505092915050565b6000608082019050614dbf6000830187613649565b614dcc6020830186613649565b614dd96040830185613532565b8181036060830152614deb8184614d71565b905095945050505050565b600081519050614e0581613440565b92915050565b600060208284031215614e2157614e2061340a565b5b6000614e2f84828501614df6565b9150509291505056fea264697066735822122026bb41251c79fcbf880c80fd1d7801a886d705d51fb6c78376cd305fb10ca0f464736f6c634300080c0033

Deployed Bytecode Sourcemap

3787:16549:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7131:310;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16151:178;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8145:90;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7815:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19189:260;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18793:388;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20233:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14158:878;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8035:102;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8437:311;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6380:115;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6611:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6151:106;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8756:185;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16337:600;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10081:183;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7634:173;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11017:380;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7449:177;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11801:810;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6719:97;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7923:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11405:388;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15524:619;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19457:185;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6503:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8949:214;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8243:186;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10272:361;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6265:107;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15044:472;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19650:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6824:299;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12619:603;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13676:474;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10641:368;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7131:310;7243:4;3915:10;7300:29;;7285:44;;;:11;:44;;;;:96;;;;3979:10;7361:20;;7346:35;;;:11;:35;;;;7285:96;:148;;;;4043:10;7413:20;;7398:35;;;:11;:35;;;;7285:148;7265:168;;7131:310;;;:::o;16151:178::-;16275:4;16304:8;:17;16313:7;16304:17;;;;;;;;;;;;;;;;;;;;;16297:24;;16151:178;;;:::o;8145:90::-;8194:7;8221:6;;8214:13;;8145:90;:::o;7815:100::-;7869:13;7902:5;7895:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7815:100;:::o;19189:260::-;19310:7;19343:15;19350:7;19343:6;:15::i;:::-;19335:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19417:15;:24;19433:7;19417:24;;;;;;;;;;;;;;;;;;;;;19410:31;;19189:260;;;:::o;18793:388::-;18874:15;18892:16;18900:7;18892;:16::i;:::-;18874:34;;18933:7;18927:13;;:2;:13;;;;18919:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;19017:7;19003:21;;:10;:21;;;:62;;;;19028:37;19045:7;19054:10;19028:16;:37::i;:::-;19003:62;18981:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;19152:21;19161:2;19165:7;19152:8;:21::i;:::-;18863:318;18793:388;;:::o;20233:100::-;20274:7;20301:24;:22;:24::i;:::-;20294:31;;20233:100;:::o;14158:878::-;14368:17;;:24;;14348:9;;:16;;:44;14326:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;14501:1;14487:16;;:2;:16;;;;14479:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;14599:9;;:16;;14584:12;;:31;;;;:::i;:::-;14565:15;;:50;;14543:124;;;;;;;;;;;;:::i;:::-;;;;;;;;;14683:9;14678:227;14702:9;;:16;;14698:1;:20;14678:227;;;14740:15;14758:9;;14768:1;14758:12;;;;;;;:::i;:::-;;;;;;;;14740:30;;14794:15;14801:7;14794:6;:15::i;:::-;14793:16;14785:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;14849:44;14859:7;14868:2;14872:17;;14890:1;14872:20;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;14849:9;:44::i;:::-;14725:180;14720:3;;;;;:::i;:::-;;;;14678:227;;;;14925:9;;:16;;14915:6;;:26;;;;;;;:::i;:::-;;;;;;;;14968:9;;:16;;14952:12;;:32;;;;;;;:::i;:::-;;;;;;;;15012:9;;:16;;14995:9;:13;15005:2;14995:13;;;;;;;;;;;;;;;;:33;;;;;;;:::i;:::-;;;;;;;;14158:878;;;;;:::o;8035:102::-;8090:7;8117:12;;8110:19;;8035:102;:::o;8437:311::-;8593:39;8612:10;8624:7;8593:18;:39::i;:::-;8571:130;;;;;;;;;;;;:::i;:::-;;;;;;;;;8712:28;8722:4;8728:2;8732:7;8712:9;:28::i;:::-;8437:311;;;:::o;6380:115::-;6442:4;6483;6466:21;;:7;:13;6474:4;6466:13;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;6459:28;;6380:115;;;:::o;6611:100::-;6675:7;6702:1;6695:8;;6611:100;:::o;6151:106::-;6207:7;6234:15;;6227:22;;6151:106;:::o;8756:185::-;8894:39;8911:4;8917:2;8921:7;8894:39;;;;;;;;;;;;:16;:39::i;:::-;8756:185;;;:::o;16337:600::-;16406:8;:17;16415:7;16406:17;;;;;;;;;;;;;;;;;;;;;16405:18;16397:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;16455:15;16473:16;16481:7;16473;:16::i;:::-;16455:34;;16508:39;16527:10;16539:7;16508:18;:39::i;:::-;16500:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;16596:1;16580:12;;:17;;;;;;;:::i;:::-;;;;;;;;16630:1;16608:9;:18;16618:7;16608:18;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;16649:7;:16;16657:7;16649:16;;;;;;;;;;;;16642:23;;;;;;;;;;;16681:9;16676:124;16700:12;:19;;;;16696:1;:23;16676:124;;;16783:5;16741:13;:22;16755:7;16741:22;;;;;;;;;;;:39;16764:12;16777:1;16764:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16741:39;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;16721:3;;;;;:::i;:::-;;;;16676:124;;;;16834:1;16810:12;:21;16823:7;16810:21;;;;;;;;;;;:25;;;;16846:29;16863:1;16867:7;16846:8;:29::i;:::-;16921:7;16917:1;16891:38;;16900:7;16891:38;;;;;;;;;;;;16386:551;16337:600;:::o;10081:183::-;10197:4;10254:1;10226:30;;:7;:16;10234:7;10226:16;;;;;;;;;;;;;;;;;;;;;:30;;;;10219:37;;10081:183;;;:::o;7634:173::-;7751:7;7783;:16;7791:7;7783:16;;;;;;;;;;;;;;;;;;;;;7776:23;;7634:173;;;:::o;11017:380::-;11121:4;11098:27;;:7;:19;11106:10;11098:19;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;11090:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;11224:5;11182:47;;:16;:26;11199:8;11182:26;;;;;;;;;;;;;;;:38;11209:10;11182:38;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;11160:135;;;;;;;;;;;;:::i;:::-;;;;;;;;;11347:4;11306:16;:26;11323:8;11306:26;;;;;;;;;;;;;;;:38;11333:10;11306:38;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;11362:15;:25;11378:8;11362:25;;;;;;;;;;;;;;;;:27;;;;;;;;;:::i;:::-;;;;;;11017:380;:::o;7449:177::-;7568:7;7600:9;:18;7610:7;7600:18;;;;;;;;;;;;;;;;7593:25;;7449:177;;;:::o;11801:810::-;11918:24;:22;:24::i;:::-;11886:21;:28;11908:5;11886:28;;;;;;;;;;;;;;;;:56;;11864:124;;;;;;;;;;;;:::i;:::-;;;;;;;;;12025:1;12007:15;;:19;11999:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;12096:4;12078:22;;:7;:14;12086:5;12078:14;;;;;;;;;;;;;;;;;;;;;;;;;:22;;;12070:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;12144:18;12178:9;12190:1;12178:13;;12173:256;12197:12;:19;;;;12193:1;:23;12173:256;;;12238:17;12258:12;12271:1;12258:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12238:35;;12305:5;12292:18;;:9;:18;;;12288:73;;;12344:1;12331:14;;12288:73;12412:5;12375:16;:23;12392:5;12375:23;;;;;;;;;;;;;;;:34;12399:9;12375:34;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;12223:206;12218:3;;;;;:::i;:::-;;;;12173:256;;;;12439:15;;:17;;;;;;;;;:::i;:::-;;;;;;12484:5;12467:7;:14;12475:5;12467:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;12525:1;12500:15;:22;12516:5;12500:22;;;;;;;;;;;;;;;:26;;;;12544:12;12557:10;12544:24;;;;;;;;:::i;:::-;;;;;;;;;;12537:31;;;;;;;;;;;12584:19;12597:5;12584:19;;;;;;:::i;:::-;;;;;;;;11853:758;11801:810;:::o;6719:97::-;6774:7;6801;;;;;;;;;;;6794:14;;6719:97;:::o;7923:104::-;7979:13;8012:7;8005:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7923:104;:::o;11405:388::-;11508:4;11485:27;;:7;:19;11493:10;11485:19;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;11477:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;11614:5;11569:50;;:22;:29;11592:5;11569:29;;;;;;;;;;;;;;;:41;11599:10;11569:41;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;11547:138;;;;;;;;;;;;:::i;:::-;;;;;;;;;11740:4;11696:22;:29;11719:5;11696:29;;;;;;;;;;;;;;;:41;11726:10;11696:41;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;11755:21;:28;11777:5;11755:28;;;;;;;;;;;;;;;;:30;;;;;;;;;:::i;:::-;;;;;;11405:388;:::o;15524:619::-;15683:24;:22;:24::i;:::-;15656:14;:23;15671:7;15656:23;;;;;;;;;;;;:51;;15634:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;15818:10;15787:41;;:18;:27;15806:7;15787:27;;;;;;;;;;;;;;;;;;;;;:41;;;15765:132;;;;;;;;;;;;:::i;:::-;;;;;;;;;15936:1;15916:22;;:8;:22;;;;15908:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;15986:8;:17;15995:7;15986:17;;;;;;;;;;;;15979:24;;;;;;;;;;;16021:18;:27;16040:7;16021:27;;;;;;;;;;;;16014:34;;;;;;;;;;;16078:8;16059:7;:16;16067:7;16059:16;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;16102:33;16117:7;16126:8;16102:33;;;;;;;:::i;:::-;;;;;;;;15524:619;;:::o;19457:185::-;19584:50;19603:10;19615:8;19625;19584:18;:50::i;:::-;19457:185;;:::o;6503:100::-;6567:4;6591;6584:11;;6503:100;:::o;8949:214::-;9116:39;9130:4;9136:2;9140:7;9149:5;9116:13;:39::i;:::-;8949:214;;;;:::o;8243:186::-;8361:13;8399;:22;8413:7;8399:22;;;;;;;;;;;8392:29;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8243:186;;;:::o;10272:361::-;10371:4;10348:27;;:7;:19;10356:10;10348:19;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;10340:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;10470:5;10432:43;;:13;:22;10446:7;10432:22;;;;;;;;;;;:34;10455:10;10432:34;;;;;;;;;;;;;;;;;;;;;;;;;:43;;;10410:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;10587:4;10550:13;:22;10564:7;10550:22;;;;;;;;;;;:34;10573:10;10550:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;10602:12;:21;10615:7;10602:21;;;;;;;;;;;;:23;;;;;;;;;:::i;:::-;;;;;;10272:361;:::o;6265:107::-;6316:16;6352:12;6345:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6265:107;:::o;15044:472::-;15181:39;15200:10;15212:7;15181:18;:39::i;:::-;15159:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;15332:1;15305:29;;:15;:29;;;;15297:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;15394:4;15374:8;:17;15383:7;15374:17;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;15439:15;15409:18;:27;15428:7;15409:27;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;15470:38;15483:7;15492:15;15470:38;;;;;;;:::i;:::-;;;;;;;;15044:472;;:::o;19650:218::-;19794:4;19823:18;:27;19842:7;19823:27;;;;;;;;;;;;;;;:37;19851:8;19823:37;;;;;;;;;;;;;;;;;;;;;;;;;19816:44;;19650:218;;;;:::o;6824:299::-;6927:7;;;;;;;;;;;6913:21;;:10;:21;;;6905:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;6989:1;6968:23;;:9;:23;;;;6960:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;7047:9;7037:7;;:19;;;;;;;;;;;;;;;;;;7105:9;7072:43;;7093:10;7072:43;;;;;;;;;;;;6824:299;:::o;12619:603::-;12733:24;:22;:24::i;:::-;12704:15;:25;12720:8;12704:25;;;;;;;;;;;;;;;;:53;;12682:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;12843:5;12822:26;;:7;:17;12830:8;12822:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;12814:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12900:9;12895:134;12919:12;:19;;;;12915:1;:23;12895:134;;;13012:5;12960:22;:32;12983:8;12960:32;;;;;;;;;;;;;;;:49;12993:12;13006:1;12993:15;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12960:49;;;;;;;;;;;;;;;;:57;;;;;;;;;;;;;;;;;;12940:3;;;;;:::i;:::-;;;;12895:134;;;;13059:4;13039:7;:17;13047:8;13039:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;13074:15;;:17;;;;;;;;;:::i;:::-;;;;;;13102:12;13120:8;13102:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13174:1;13140:21;:31;13162:8;13140:31;;;;;;;;;;;;;;;:35;;;;13191:23;13205:8;13191:23;;;;;;:::i;:::-;;;;;;;;12619:603;:::o;13676:474::-;13842:1;13828:16;;:2;:16;;;;13820:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;13893:15;13900:7;13893:6;:15::i;:::-;13892:16;13884:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;13960:1;13944:12;;:17;;;;;;;:::i;:::-;;;;;;;;13999:12;;13980:15;;:31;;13972:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14061:1;14051:6;;:11;;;;;;;:::i;:::-;;;;;;;;14090:1;14073:9;:13;14083:2;14073:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;14102:40;14112:7;14121:2;14125:16;;14102:9;:40::i;:::-;13676:474;;;;:::o;10641:368::-;10741:4;10718:27;;:7;:19;10726:10;10718:19;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;10710:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;10842:5;10802:45;;:15;:24;10818:7;10802:24;;;;;;;;;;;:36;10827:10;10802:36;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;10780:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;10961:4;10922:15;:24;10938:7;10922:24;;;;;;;;;;;:36;10947:10;10922:36;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;10976:14;:23;10991:7;10976:23;;;;;;;;;;;;:25;;;;;;;;;:::i;:::-;;;;;;10641:368;:::o;18618:167::-;18720:2;18693:15;:24;18709:7;18693:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;18769:7;18765:2;18738:39;;18747:16;18755:7;18747;:16::i;:::-;18738:39;;;;;;;;;;;;18618:167;;:::o;19876:349::-;19933:7;19953:16;19990:1;19972:15;;:19;;;;:::i;:::-;19953:38;;20018:1;20006:8;:13;20002:54;;;20043:1;20036:8;;;;;20002:54;20066:17;20108:8;20104:1;:12;;;;:::i;:::-;20086:15;;:30;;;;:::i;:::-;20066:50;;20143:1;20131:9;:13;20127:65;;;20179:1;20168:8;:12;;;;:::i;:::-;20161:19;;;;;;20127:65;20209:8;20202:15;;;;19876:349;;:::o;13230:438::-;13396:15;;;;;;;;;;;:85;;;;13457:24;:22;:24::i;:::-;13432:12;:21;13445:7;13432:21;;;;;;;;;;;;:49;;13396:85;13374:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;13557:2;13538:7;:16;13546:7;13538:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13595:16;;13570:13;:22;13584:7;13570:22;;;;;;;;;;;:41;;;;;;;:::i;:::-;;13652:7;13648:2;13627:33;;13644:1;13627:33;;;;;;;;;;;;13230:438;;;;:::o;17882:405::-;18011:4;18041:15;18048:7;18041:6;:15::i;:::-;18033:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;18108:15;18126:16;18134:7;18126;:16::i;:::-;18108:34;;18172:7;18161:18;;:7;:18;;;:66;;;;18220:7;18196:31;;:20;18208:7;18196:11;:20::i;:::-;:31;;;18161:66;:117;;;;18244:34;18261:7;18270;18244:16;:34::i;:::-;18161:117;18153:126;;;17882:405;;;;:::o;9523:550::-;9669:1;9655:16;;:2;:16;;;;9647:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;9724:8;:17;9733:7;9724:17;;;;;;;;;;;;;;;;;;;;;9723:18;9715:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;9795:39;9814:10;9826:7;9795:18;:39::i;:::-;9773:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;9920:1;9901:9;:15;9911:4;9901:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;9949:1;9932:9;:13;9942:2;9932:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;9980:2;9961:7;:16;9969:7;9961:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;9993:29;10010:1;10014:7;9993:8;:29::i;:::-;10057:7;10053:2;10038:27;;10047:4;10038:27;;;;;;;;;;;;9523:550;;;:::o;18295:315::-;18454:8;18443:19;;:7;:19;;;;18435:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18535:8;18495:18;:27;18514:7;18495:27;;;;;;;;;;;;;;;:37;18523:8;18495:37;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;18583:8;18559:43;;18574:7;18559:43;;;18593:8;18559:43;;;;;;:::i;:::-;;;;;;;;18295:315;;;:::o;9171:344::-;9328:28;9338:4;9344:2;9348:7;9328:9;:28::i;:::-;9389:48;9412:4;9418:2;9422:7;9431:5;9389:22;:48::i;:::-;9367:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;9171:344;;;;:::o;17068:806::-;17223:4;17245:14;17256:2;17245:10;:14::i;:::-;17240:32;;17268:4;17261:11;;;;17240:32;17316:2;17300:36;;;17355:10;17384:4;17407:7;17433:5;17300:153;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;17283:584;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17637:1;17620:6;:13;:18;17616:240;;;17659:52;;;;;;;;;;:::i;:::-;;;;;;;;17616:240;17814:6;17808:13;17799:6;17795:2;17791:15;17784:38;17283:584;17519:41;;;17509:51;;;:6;:51;;;;17502:58;;;17068:806;;;;;;;:::o;16945:115::-;17005:4;17051:1;17029:7;:19;;;:23;17022:30;;16945:115;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:77::-;1555:7;1584:5;1573:16;;1518:77;;;:::o;1601:122::-;1674:24;1692:5;1674:24;:::i;:::-;1667:5;1664:35;1654:63;;1713:1;1710;1703:12;1654:63;1601:122;:::o;1729:139::-;1775:5;1813:6;1800:20;1791:29;;1829:33;1856:5;1829:33;:::i;:::-;1729:139;;;;:::o;1874:329::-;1933:6;1982:2;1970:9;1961:7;1957:23;1953:32;1950:119;;;1988:79;;:::i;:::-;1950:119;2108:1;2133:53;2178:7;2169:6;2158:9;2154:22;2133:53;:::i;:::-;2123:63;;2079:117;1874:329;;;;:::o;2209:118::-;2296:24;2314:5;2296:24;:::i;:::-;2291:3;2284:37;2209:118;;:::o;2333:222::-;2426:4;2464:2;2453:9;2449:18;2441:26;;2477:71;2545:1;2534:9;2530:17;2521:6;2477:71;:::i;:::-;2333:222;;;;:::o;2561:99::-;2613:6;2647:5;2641:12;2631:22;;2561:99;;;:::o;2666:169::-;2750:11;2784:6;2779:3;2772:19;2824:4;2819:3;2815:14;2800:29;;2666:169;;;;:::o;2841:307::-;2909:1;2919:113;2933:6;2930:1;2927:13;2919:113;;;3018:1;3013:3;3009:11;3003:18;2999:1;2994:3;2990:11;2983:39;2955:2;2952:1;2948:10;2943:15;;2919:113;;;3050:6;3047:1;3044:13;3041:101;;;3130:1;3121:6;3116:3;3112:16;3105:27;3041:101;2890:258;2841:307;;;:::o;3154:102::-;3195:6;3246:2;3242:7;3237:2;3230:5;3226:14;3222:28;3212:38;;3154:102;;;:::o;3262:364::-;3350:3;3378:39;3411:5;3378:39;:::i;:::-;3433:71;3497:6;3492:3;3433:71;:::i;:::-;3426:78;;3513:52;3558:6;3553:3;3546:4;3539:5;3535:16;3513:52;:::i;:::-;3590:29;3612:6;3590:29;:::i;:::-;3585:3;3581:39;3574:46;;3354:272;3262:364;;;;:::o;3632:313::-;3745:4;3783:2;3772:9;3768:18;3760:26;;3832:9;3826:4;3822:20;3818:1;3807:9;3803:17;3796:47;3860:78;3933:4;3924:6;3860:78;:::i;:::-;3852:86;;3632:313;;;;:::o;3951:126::-;3988:7;4028:42;4021:5;4017:54;4006:65;;3951:126;;;:::o;4083:96::-;4120:7;4149:24;4167:5;4149:24;:::i;:::-;4138:35;;4083:96;;;:::o;4185:118::-;4272:24;4290:5;4272:24;:::i;:::-;4267:3;4260:37;4185:118;;:::o;4309:222::-;4402:4;4440:2;4429:9;4425:18;4417:26;;4453:71;4521:1;4510:9;4506:17;4497:6;4453:71;:::i;:::-;4309:222;;;;:::o;4537:122::-;4610:24;4628:5;4610:24;:::i;:::-;4603:5;4600:35;4590:63;;4649:1;4646;4639:12;4590:63;4537:122;:::o;4665:139::-;4711:5;4749:6;4736:20;4727:29;;4765:33;4792:5;4765:33;:::i;:::-;4665:139;;;;:::o;4810:474::-;4878:6;4886;4935:2;4923:9;4914:7;4910:23;4906:32;4903:119;;;4941:79;;:::i;:::-;4903:119;5061:1;5086:53;5131:7;5122:6;5111:9;5107:22;5086:53;:::i;:::-;5076:63;;5032:117;5188:2;5214:53;5259:7;5250:6;5239:9;5235:22;5214:53;:::i;:::-;5204:63;;5159:118;4810:474;;;;;:::o;5290:117::-;5399:1;5396;5389:12;5413:117;5522:1;5519;5512:12;5536:117;5645:1;5642;5635:12;5676:568;5749:8;5759:6;5809:3;5802:4;5794:6;5790:17;5786:27;5776:122;;5817:79;;:::i;:::-;5776:122;5930:6;5917:20;5907:30;;5960:18;5952:6;5949:30;5946:117;;;5982:79;;:::i;:::-;5946:117;6096:4;6088:6;6084:17;6072:29;;6150:3;6142:4;6134:6;6130:17;6120:8;6116:32;6113:41;6110:128;;;6157:79;;:::i;:::-;6110:128;5676:568;;;;;:::o;6266:580::-;6351:8;6361:6;6411:3;6404:4;6396:6;6392:17;6388:27;6378:122;;6419:79;;:::i;:::-;6378:122;6532:6;6519:20;6509:30;;6562:18;6554:6;6551:30;6548:117;;;6584:79;;:::i;:::-;6548:117;6698:4;6690:6;6686:17;6674:29;;6752:3;6744:4;6736:6;6732:17;6722:8;6718:32;6715:41;6712:128;;;6759:79;;:::i;:::-;6712:128;6266:580;;;;;:::o;6852:1103::-;6995:6;7003;7011;7019;7027;7076:2;7064:9;7055:7;7051:23;7047:32;7044:119;;;7082:79;;:::i;:::-;7044:119;7230:1;7219:9;7215:17;7202:31;7260:18;7252:6;7249:30;7246:117;;;7282:79;;:::i;:::-;7246:117;7395:80;7467:7;7458:6;7447:9;7443:22;7395:80;:::i;:::-;7377:98;;;;7173:312;7524:2;7550:53;7595:7;7586:6;7575:9;7571:22;7550:53;:::i;:::-;7540:63;;7495:118;7680:2;7669:9;7665:18;7652:32;7711:18;7703:6;7700:30;7697:117;;;7733:79;;:::i;:::-;7697:117;7846:92;7930:7;7921:6;7910:9;7906:22;7846:92;:::i;:::-;7828:110;;;;7623:325;6852:1103;;;;;;;;:::o;7961:619::-;8038:6;8046;8054;8103:2;8091:9;8082:7;8078:23;8074:32;8071:119;;;8109:79;;:::i;:::-;8071:119;8229:1;8254:53;8299:7;8290:6;8279:9;8275:22;8254:53;:::i;:::-;8244:63;;8200:117;8356:2;8382:53;8427:7;8418:6;8407:9;8403:22;8382:53;:::i;:::-;8372:63;;8327:118;8484:2;8510:53;8555:7;8546:6;8535:9;8531:22;8510:53;:::i;:::-;8500:63;;8455:118;7961:619;;;;;:::o;8586:329::-;8645:6;8694:2;8682:9;8673:7;8669:23;8665:32;8662:119;;;8700:79;;:::i;:::-;8662:119;8820:1;8845:53;8890:7;8881:6;8870:9;8866:22;8845:53;:::i;:::-;8835:63;;8791:117;8586:329;;;;:::o;8921:474::-;8989:6;8997;9046:2;9034:9;9025:7;9021:23;9017:32;9014:119;;;9052:79;;:::i;:::-;9014:119;9172:1;9197:53;9242:7;9233:6;9222:9;9218:22;9197:53;:::i;:::-;9187:63;;9143:117;9299:2;9325:53;9370:7;9361:6;9350:9;9346:22;9325:53;:::i;:::-;9315:63;;9270:118;8921:474;;;;;:::o;9401:116::-;9471:21;9486:5;9471:21;:::i;:::-;9464:5;9461:32;9451:60;;9507:1;9504;9497:12;9451:60;9401:116;:::o;9523:133::-;9566:5;9604:6;9591:20;9582:29;;9620:30;9644:5;9620:30;:::i;:::-;9523:133;;;;:::o;9662:468::-;9727:6;9735;9784:2;9772:9;9763:7;9759:23;9755:32;9752:119;;;9790:79;;:::i;:::-;9752:119;9910:1;9935:53;9980:7;9971:6;9960:9;9956:22;9935:53;:::i;:::-;9925:63;;9881:117;10037:2;10063:50;10105:7;10096:6;10085:9;10081:22;10063:50;:::i;:::-;10053:60;;10008:115;9662:468;;;;;:::o;10136:117::-;10245:1;10242;10235:12;10259:180;10307:77;10304:1;10297:88;10404:4;10401:1;10394:15;10428:4;10425:1;10418:15;10445:281;10528:27;10550:4;10528:27;:::i;:::-;10520:6;10516:40;10658:6;10646:10;10643:22;10622:18;10610:10;10607:34;10604:62;10601:88;;;10669:18;;:::i;:::-;10601:88;10709:10;10705:2;10698:22;10488:238;10445:281;;:::o;10732:129::-;10766:6;10793:20;;:::i;:::-;10783:30;;10822:33;10850:4;10842:6;10822:33;:::i;:::-;10732:129;;;:::o;10867:307::-;10928:4;11018:18;11010:6;11007:30;11004:56;;;11040:18;;:::i;:::-;11004:56;11078:29;11100:6;11078:29;:::i;:::-;11070:37;;11162:4;11156;11152:15;11144:23;;10867:307;;;:::o;11180:154::-;11264:6;11259:3;11254;11241:30;11326:1;11317:6;11312:3;11308:16;11301:27;11180:154;;;:::o;11340:410::-;11417:5;11442:65;11458:48;11499:6;11458:48;:::i;:::-;11442:65;:::i;:::-;11433:74;;11530:6;11523:5;11516:21;11568:4;11561:5;11557:16;11606:3;11597:6;11592:3;11588:16;11585:25;11582:112;;;11613:79;;:::i;:::-;11582:112;11703:41;11737:6;11732:3;11727;11703:41;:::i;:::-;11423:327;11340:410;;;;;:::o;11769:338::-;11824:5;11873:3;11866:4;11858:6;11854:17;11850:27;11840:122;;11881:79;;:::i;:::-;11840:122;11998:6;11985:20;12023:78;12097:3;12089:6;12082:4;12074:6;12070:17;12023:78;:::i;:::-;12014:87;;11830:277;11769:338;;;;:::o;12113:943::-;12208:6;12216;12224;12232;12281:3;12269:9;12260:7;12256:23;12252:33;12249:120;;;12288:79;;:::i;:::-;12249:120;12408:1;12433:53;12478:7;12469:6;12458:9;12454:22;12433:53;:::i;:::-;12423:63;;12379:117;12535:2;12561:53;12606:7;12597:6;12586:9;12582:22;12561:53;:::i;:::-;12551:63;;12506:118;12663:2;12689:53;12734:7;12725:6;12714:9;12710:22;12689:53;:::i;:::-;12679:63;;12634:118;12819:2;12808:9;12804:18;12791:32;12850:18;12842:6;12839:30;12836:117;;;12872:79;;:::i;:::-;12836:117;12977:62;13031:7;13022:6;13011:9;13007:22;12977:62;:::i;:::-;12967:72;;12762:287;12113:943;;;;;;;:::o;13062:114::-;13129:6;13163:5;13157:12;13147:22;;13062:114;;;:::o;13182:184::-;13281:11;13315:6;13310:3;13303:19;13355:4;13350:3;13346:14;13331:29;;13182:184;;;;:::o;13372:132::-;13439:4;13462:3;13454:11;;13492:4;13487:3;13483:14;13475:22;;13372:132;;;:::o;13510:108::-;13587:24;13605:5;13587:24;:::i;:::-;13582:3;13575:37;13510:108;;:::o;13624:179::-;13693:10;13714:46;13756:3;13748:6;13714:46;:::i;:::-;13792:4;13787:3;13783:14;13769:28;;13624:179;;;;:::o;13809:113::-;13879:4;13911;13906:3;13902:14;13894:22;;13809:113;;;:::o;13958:732::-;14077:3;14106:54;14154:5;14106:54;:::i;:::-;14176:86;14255:6;14250:3;14176:86;:::i;:::-;14169:93;;14286:56;14336:5;14286:56;:::i;:::-;14365:7;14396:1;14381:284;14406:6;14403:1;14400:13;14381:284;;;14482:6;14476:13;14509:63;14568:3;14553:13;14509:63;:::i;:::-;14502:70;;14595:60;14648:6;14595:60;:::i;:::-;14585:70;;14441:224;14428:1;14425;14421:9;14416:14;;14381:284;;;14385:14;14681:3;14674:10;;14082:608;;;13958:732;;;;:::o;14696:373::-;14839:4;14877:2;14866:9;14862:18;14854:26;;14926:9;14920:4;14916:20;14912:1;14901:9;14897:17;14890:47;14954:108;15057:4;15048:6;14954:108;:::i;:::-;14946:116;;14696:373;;;;:::o;15075:474::-;15143:6;15151;15200:2;15188:9;15179:7;15175:23;15171:32;15168:119;;;15206:79;;:::i;:::-;15168:119;15326:1;15351:53;15396:7;15387:6;15376:9;15372:22;15351:53;:::i;:::-;15341:63;;15297:117;15453:2;15479:53;15524:7;15515:6;15504:9;15500:22;15479:53;:::i;:::-;15469:63;;15424:118;15075:474;;;;;:::o;15569:553::-;15627:8;15637:6;15687:3;15680:4;15672:6;15668:17;15664:27;15654:122;;15695:79;;:::i;:::-;15654:122;15808:6;15795:20;15785:30;;15838:18;15830:6;15827:30;15824:117;;;15860:79;;:::i;:::-;15824:117;15974:4;15966:6;15962:17;15950:29;;16028:3;16020:4;16012:6;16008:17;15998:8;15994:32;15991:41;15988:128;;;16035:79;;:::i;:::-;15988:128;15569:553;;;;;:::o;16128:819::-;16217:6;16225;16233;16241;16290:2;16278:9;16269:7;16265:23;16261:32;16258:119;;;16296:79;;:::i;:::-;16258:119;16416:1;16441:53;16486:7;16477:6;16466:9;16462:22;16441:53;:::i;:::-;16431:63;;16387:117;16543:2;16569:53;16614:7;16605:6;16594:9;16590:22;16569:53;:::i;:::-;16559:63;;16514:118;16699:2;16688:9;16684:18;16671:32;16730:18;16722:6;16719:30;16716:117;;;16752:79;;:::i;:::-;16716:117;16865:65;16922:7;16913:6;16902:9;16898:22;16865:65;:::i;:::-;16847:83;;;;16642:298;16128:819;;;;;;;:::o;16953:180::-;17001:77;16998:1;16991:88;17098:4;17095:1;17088:15;17122:4;17119:1;17112:15;17139:320;17183:6;17220:1;17214:4;17210:12;17200:22;;17267:1;17261:4;17257:12;17288:18;17278:81;;17344:4;17336:6;17332:17;17322:27;;17278:81;17406:2;17398:6;17395:14;17375:18;17372:38;17369:84;;;17425:18;;:::i;:::-;17369:84;17190:269;17139:320;;;:::o;17465:223::-;17605:34;17601:1;17593:6;17589:14;17582:58;17674:6;17669:2;17661:6;17657:15;17650:31;17465:223;:::o;17694:366::-;17836:3;17857:67;17921:2;17916:3;17857:67;:::i;:::-;17850:74;;17933:93;18022:3;17933:93;:::i;:::-;18051:2;18046:3;18042:12;18035:19;;17694:366;;;:::o;18066:419::-;18232:4;18270:2;18259:9;18255:18;18247:26;;18319:9;18313:4;18309:20;18305:1;18294:9;18290:17;18283:47;18347:131;18473:4;18347:131;:::i;:::-;18339:139;;18066:419;;;:::o;18491:175::-;18631:27;18627:1;18619:6;18615:14;18608:51;18491:175;:::o;18672:366::-;18814:3;18835:67;18899:2;18894:3;18835:67;:::i;:::-;18828:74;;18911:93;19000:3;18911:93;:::i;:::-;19029:2;19024:3;19020:12;19013:19;;18672:366;;;:::o;19044:419::-;19210:4;19248:2;19237:9;19233:18;19225:26;;19297:9;19291:4;19287:20;19283:1;19272:9;19268:17;19261:47;19325:131;19451:4;19325:131;:::i;:::-;19317:139;;19044:419;;;:::o;19469:235::-;19609:34;19605:1;19597:6;19593:14;19586:58;19678:18;19673:2;19665:6;19661:15;19654:43;19469:235;:::o;19710:366::-;19852:3;19873:67;19937:2;19932:3;19873:67;:::i;:::-;19866:74;;19949:93;20038:3;19949:93;:::i;:::-;20067:2;20062:3;20058:12;20051:19;;19710:366;;;:::o;20082:419::-;20248:4;20286:2;20275:9;20271:18;20263:26;;20335:9;20329:4;20325:20;20321:1;20310:9;20306:17;20299:47;20363:131;20489:4;20363:131;:::i;:::-;20355:139;;20082:419;;;:::o;20507:235::-;20647:34;20643:1;20635:6;20631:14;20624:58;20716:18;20711:2;20703:6;20699:15;20692:43;20507:235;:::o;20748:366::-;20890:3;20911:67;20975:2;20970:3;20911:67;:::i;:::-;20904:74;;20987:93;21076:3;20987:93;:::i;:::-;21105:2;21100:3;21096:12;21089:19;;20748:366;;;:::o;21120:419::-;21286:4;21324:2;21313:9;21309:18;21301:26;;21373:9;21367:4;21363:20;21359:1;21348:9;21344:17;21337:47;21401:131;21527:4;21401:131;:::i;:::-;21393:139;;21120:419;;;:::o;21545:174::-;21685:26;21681:1;21673:6;21669:14;21662:50;21545:174;:::o;21725:366::-;21867:3;21888:67;21952:2;21947:3;21888:67;:::i;:::-;21881:74;;21964:93;22053:3;21964:93;:::i;:::-;22082:2;22077:3;22073:12;22066:19;;21725:366;;;:::o;22097:419::-;22263:4;22301:2;22290:9;22286:18;22278:26;;22350:9;22344:4;22340:20;22336:1;22325:9;22321:17;22314:47;22378:131;22504:4;22378:131;:::i;:::-;22370:139;;22097:419;;;:::o;22522:180::-;22570:77;22567:1;22560:88;22667:4;22664:1;22657:15;22691:4;22688:1;22681:15;22708:305;22748:3;22767:20;22785:1;22767:20;:::i;:::-;22762:25;;22801:20;22819:1;22801:20;:::i;:::-;22796:25;;22955:1;22887:66;22883:74;22880:1;22877:81;22874:107;;;22961:18;;:::i;:::-;22874:107;23005:1;23002;22998:9;22991:16;;22708:305;;;;:::o;23019:174::-;23159:26;23155:1;23147:6;23143:14;23136:50;23019:174;:::o;23199:366::-;23341:3;23362:67;23426:2;23421:3;23362:67;:::i;:::-;23355:74;;23438:93;23527:3;23438:93;:::i;:::-;23556:2;23551:3;23547:12;23540:19;;23199:366;;;:::o;23571:419::-;23737:4;23775:2;23764:9;23760:18;23752:26;;23824:9;23818:4;23814:20;23810:1;23799:9;23795:17;23788:47;23852:131;23978:4;23852:131;:::i;:::-;23844:139;;23571:419;;;:::o;23996:180::-;24044:77;24041:1;24034:88;24141:4;24138:1;24131:15;24165:4;24162:1;24155:15;24182:170;24322:22;24318:1;24310:6;24306:14;24299:46;24182:170;:::o;24358:366::-;24500:3;24521:67;24585:2;24580:3;24521:67;:::i;:::-;24514:74;;24597:93;24686:3;24597:93;:::i;:::-;24715:2;24710:3;24706:12;24699:19;;24358:366;;;:::o;24730:419::-;24896:4;24934:2;24923:9;24919:18;24911:26;;24983:9;24977:4;24973:20;24969:1;24958:9;24954:17;24947:47;25011:131;25137:4;25011:131;:::i;:::-;25003:139;;24730:419;;;:::o;25155:117::-;25264:1;25261;25254:12;25278:117;25387:1;25384;25377:12;25401:117;25510:1;25507;25500:12;25524:725;25602:4;25608:6;25664:11;25651:25;25764:1;25758:4;25754:12;25743:8;25727:14;25723:29;25719:48;25699:18;25695:73;25685:168;;25772:79;;:::i;:::-;25685:168;25884:18;25874:8;25870:33;25862:41;;25936:4;25923:18;25913:28;;25964:18;25956:6;25953:30;25950:117;;;25986:79;;:::i;:::-;25950:117;26094:2;26088:4;26084:13;26076:21;;26151:4;26143:6;26139:17;26123:14;26119:38;26113:4;26109:49;26106:136;;;26161:79;;:::i;:::-;26106:136;25615:634;25524:725;;;;;:::o;26255:233::-;26294:3;26317:24;26335:5;26317:24;:::i;:::-;26308:33;;26363:66;26356:5;26353:77;26350:103;;;26433:18;;:::i;:::-;26350:103;26480:1;26473:5;26469:13;26462:20;;26255:233;;;:::o;26494:228::-;26634:34;26630:1;26622:6;26618:14;26611:58;26703:11;26698:2;26690:6;26686:15;26679:36;26494:228;:::o;26728:366::-;26870:3;26891:67;26955:2;26950:3;26891:67;:::i;:::-;26884:74;;26967:93;27056:3;26967:93;:::i;:::-;27085:2;27080:3;27076:12;27069:19;;26728:366;;;:::o;27100:419::-;27266:4;27304:2;27293:9;27289:18;27281:26;;27353:9;27347:4;27343:20;27339:1;27328:9;27324:17;27317:47;27381:131;27507:4;27381:131;:::i;:::-;27373:139;;27100:419;;;:::o;27525:166::-;27665:18;27661:1;27653:6;27649:14;27642:42;27525:166;:::o;27697:366::-;27839:3;27860:67;27924:2;27919:3;27860:67;:::i;:::-;27853:74;;27936:93;28025:3;27936:93;:::i;:::-;28054:2;28049:3;28045:12;28038:19;;27697:366;;;:::o;28069:419::-;28235:4;28273:2;28262:9;28258:18;28250:26;;28322:9;28316:4;28312:20;28308:1;28297:9;28293:17;28286:47;28350:131;28476:4;28350:131;:::i;:::-;28342:139;;28069:419;;;:::o;28494:167::-;28634:19;28630:1;28622:6;28618:14;28611:43;28494:167;:::o;28667:366::-;28809:3;28830:67;28894:2;28889:3;28830:67;:::i;:::-;28823:74;;28906:93;28995:3;28906:93;:::i;:::-;29024:2;29019:3;29015:12;29008:19;;28667:366;;;:::o;29039:419::-;29205:4;29243:2;29232:9;29228:18;29220:26;;29292:9;29286:4;29282:20;29278:1;29267:9;29263:17;29256:47;29320:131;29446:4;29320:131;:::i;:::-;29312:139;;29039:419;;;:::o;29464:191::-;29504:4;29524:20;29542:1;29524:20;:::i;:::-;29519:25;;29558:20;29576:1;29558:20;:::i;:::-;29553:25;;29597:1;29594;29591:8;29588:34;;;29602:18;;:::i;:::-;29588:34;29647:1;29644;29640:9;29632:17;;29464:191;;;;:::o;29661:169::-;29801:21;29797:1;29789:6;29785:14;29778:45;29661:169;:::o;29836:366::-;29978:3;29999:67;30063:2;30058:3;29999:67;:::i;:::-;29992:74;;30075:93;30164:3;30075:93;:::i;:::-;30193:2;30188:3;30184:12;30177:19;;29836:366;;;:::o;30208:419::-;30374:4;30412:2;30401:9;30397:18;30389:26;;30461:9;30455:4;30451:20;30447:1;30436:9;30432:17;30425:47;30489:131;30615:4;30489:131;:::i;:::-;30481:139;;30208:419;;;:::o;30633:225::-;30773:34;30769:1;30761:6;30757:14;30750:58;30842:8;30837:2;30829:6;30825:15;30818:33;30633:225;:::o;30864:366::-;31006:3;31027:67;31091:2;31086:3;31027:67;:::i;:::-;31020:74;;31103:93;31192:3;31103:93;:::i;:::-;31221:2;31216:3;31212:12;31205:19;;30864:366;;;:::o;31236:419::-;31402:4;31440:2;31429:9;31425:18;31417:26;;31489:9;31483:4;31479:20;31475:1;31464:9;31460:17;31453:47;31517:131;31643:4;31517:131;:::i;:::-;31509:139;;31236:419;;;:::o;31661:168::-;31801:20;31797:1;31789:6;31785:14;31778:44;31661:168;:::o;31835:366::-;31977:3;31998:67;32062:2;32057:3;31998:67;:::i;:::-;31991:74;;32074:93;32163:3;32074:93;:::i;:::-;32192:2;32187:3;32183:12;32176:19;;31835:366;;;:::o;32207:419::-;32373:4;32411:2;32400:9;32396:18;32388:26;;32460:9;32454:4;32450:20;32446:1;32435:9;32431:17;32424:47;32488:131;32614:4;32488:131;:::i;:::-;32480:139;;32207:419;;;:::o;32632:178::-;32772:30;32768:1;32760:6;32756:14;32749:54;32632:178;:::o;32816:366::-;32958:3;32979:67;33043:2;33038:3;32979:67;:::i;:::-;32972:74;;33055:93;33144:3;33055:93;:::i;:::-;33173:2;33168:3;33164:12;33157:19;;32816:366;;;:::o;33188:419::-;33354:4;33392:2;33381:9;33377:18;33369:26;;33441:9;33435:4;33431:20;33427:1;33416:9;33412:17;33405:47;33469:131;33595:4;33469:131;:::i;:::-;33461:139;;33188:419;;;:::o;33613:178::-;33753:30;33749:1;33741:6;33737:14;33730:54;33613:178;:::o;33797:366::-;33939:3;33960:67;34024:2;34019:3;33960:67;:::i;:::-;33953:74;;34036:93;34125:3;34036:93;:::i;:::-;34154:2;34149:3;34145:12;34138:19;;33797:366;;;:::o;34169:419::-;34335:4;34373:2;34362:9;34358:18;34350:26;;34422:9;34416:4;34412:20;34408:1;34397:9;34393:17;34386:47;34450:131;34576:4;34450:131;:::i;:::-;34442:139;;34169:419;;;:::o;34594:171::-;34633:3;34656:24;34674:5;34656:24;:::i;:::-;34647:33;;34702:4;34695:5;34692:15;34689:41;;;34710:18;;:::i;:::-;34689:41;34757:1;34750:5;34746:13;34739:20;;34594:171;;;:::o;34771:228::-;34911:34;34907:1;34899:6;34895:14;34888:58;34980:11;34975:2;34967:6;34963:15;34956:36;34771:228;:::o;35005:366::-;35147:3;35168:67;35232:2;35227:3;35168:67;:::i;:::-;35161:74;;35244:93;35333:3;35244:93;:::i;:::-;35362:2;35357:3;35353:12;35346:19;;35005:366;;;:::o;35377:419::-;35543:4;35581:2;35570:9;35566:18;35558:26;;35630:9;35624:4;35620:20;35616:1;35605:9;35601:17;35594:47;35658:131;35784:4;35658:131;:::i;:::-;35650:139;;35377:419;;;:::o;35802:175::-;35942:27;35938:1;35930:6;35926:14;35919:51;35802:175;:::o;35983:366::-;36125:3;36146:67;36210:2;36205:3;36146:67;:::i;:::-;36139:74;;36222:93;36311:3;36222:93;:::i;:::-;36340:2;36335:3;36331:12;36324:19;;35983:366;;;:::o;36355:419::-;36521:4;36559:2;36548:9;36544:18;36536:26;;36608:9;36602:4;36598:20;36594:1;36583:9;36579:17;36572:47;36636:131;36762:4;36636:131;:::i;:::-;36628:139;;36355:419;;;:::o;36780:332::-;36901:4;36939:2;36928:9;36924:18;36916:26;;36952:71;37020:1;37009:9;37005:17;36996:6;36952:71;:::i;:::-;37033:72;37101:2;37090:9;37086:18;37077:6;37033:72;:::i;:::-;36780:332;;;;;:::o;37118:223::-;37258:34;37254:1;37246:6;37242:14;37235:58;37327:6;37322:2;37314:6;37310:15;37303:31;37118:223;:::o;37347:366::-;37489:3;37510:67;37574:2;37569:3;37510:67;:::i;:::-;37503:74;;37586:93;37675:3;37586:93;:::i;:::-;37704:2;37699:3;37695:12;37688:19;;37347:366;;;:::o;37719:419::-;37885:4;37923:2;37912:9;37908:18;37900:26;;37972:9;37966:4;37962:20;37958:1;37947:9;37943:17;37936:47;38000:131;38126:4;38000:131;:::i;:::-;37992:139;;37719:419;;;:::o;38144:225::-;38284:34;38280:1;38272:6;38268:14;38261:58;38353:8;38348:2;38340:6;38336:15;38329:33;38144:225;:::o;38375:366::-;38517:3;38538:67;38602:2;38597:3;38538:67;:::i;:::-;38531:74;;38614:93;38703:3;38614:93;:::i;:::-;38732:2;38727:3;38723:12;38716:19;;38375:366;;;:::o;38747:419::-;38913:4;38951:2;38940:9;38936:18;38928:26;;39000:9;38994:4;38990:20;38986:1;38975:9;38971:17;38964:47;39028:131;39154:4;39028:131;:::i;:::-;39020:139;;38747:419;;;:::o;39172:174::-;39312:26;39308:1;39300:6;39296:14;39289:50;39172:174;:::o;39352:366::-;39494:3;39515:67;39579:2;39574:3;39515:67;:::i;:::-;39508:74;;39591:93;39680:3;39591:93;:::i;:::-;39709:2;39704:3;39700:12;39693:19;;39352:366;;;:::o;39724:419::-;39890:4;39928:2;39917:9;39913:18;39905:26;;39977:9;39971:4;39967:20;39963:1;39952:9;39948:17;39941:47;40005:131;40131:4;40005:131;:::i;:::-;39997:139;;39724:419;;;:::o;40149:160::-;40289:12;40285:1;40277:6;40273:14;40266:36;40149:160;:::o;40315:366::-;40457:3;40478:67;40542:2;40537:3;40478:67;:::i;:::-;40471:74;;40554:93;40643:3;40554:93;:::i;:::-;40672:2;40667:3;40663:12;40656:19;;40315:366;;;:::o;40687:419::-;40853:4;40891:2;40880:9;40876:18;40868:26;;40940:9;40934:4;40930:20;40926:1;40915:9;40911:17;40904:47;40968:131;41094:4;40968:131;:::i;:::-;40960:139;;40687:419;;;:::o;41112:180::-;41252:32;41248:1;41240:6;41236:14;41229:56;41112:180;:::o;41298:366::-;41440:3;41461:67;41525:2;41520:3;41461:67;:::i;:::-;41454:74;;41537:93;41626:3;41537:93;:::i;:::-;41655:2;41650:3;41646:12;41639:19;;41298:366;;;:::o;41670:419::-;41836:4;41874:2;41863:9;41859:18;41851:26;;41923:9;41917:4;41913:20;41909:1;41898:9;41894:17;41887:47;41951:131;42077:4;41951:131;:::i;:::-;41943:139;;41670:419;;;:::o;42095:181::-;42235:33;42231:1;42223:6;42219:14;42212:57;42095:181;:::o;42282:366::-;42424:3;42445:67;42509:2;42504:3;42445:67;:::i;:::-;42438:74;;42521:93;42610:3;42521:93;:::i;:::-;42639:2;42634:3;42630:12;42623:19;;42282:366;;;:::o;42654:419::-;42820:4;42858:2;42847:9;42843:18;42835:26;;42907:9;42901:4;42897:20;42893:1;42882:9;42878:17;42871:47;42935:131;43061:4;42935:131;:::i;:::-;42927:139;;42654:419;;;:::o;43079:180::-;43127:77;43124:1;43117:88;43224:4;43221:1;43214:15;43248:4;43245:1;43238:15;43265:185;43305:1;43322:20;43340:1;43322:20;:::i;:::-;43317:25;;43356:20;43374:1;43356:20;:::i;:::-;43351:25;;43395:1;43385:35;;43400:18;;:::i;:::-;43385:35;43442:1;43439;43435:9;43430:14;;43265:185;;;;:::o;43456:348::-;43496:7;43519:20;43537:1;43519:20;:::i;:::-;43514:25;;43553:20;43571:1;43553:20;:::i;:::-;43548:25;;43741:1;43673:66;43669:74;43666:1;43663:81;43658:1;43651:9;43644:17;43640:105;43637:131;;;43748:18;;:::i;:::-;43637:131;43796:1;43793;43789:9;43778:20;;43456:348;;;;:::o;43810:223::-;43950:34;43946:1;43938:6;43934:14;43927:58;44019:6;44014:2;44006:6;44002:15;43995:31;43810:223;:::o;44039:366::-;44181:3;44202:67;44266:2;44261:3;44202:67;:::i;:::-;44195:74;;44278:93;44367:3;44278:93;:::i;:::-;44396:2;44391:3;44387:12;44380:19;;44039:366;;;:::o;44411:419::-;44577:4;44615:2;44604:9;44600:18;44592:26;;44664:9;44658:4;44654:20;44650:1;44639:9;44635:17;44628:47;44692:131;44818:4;44692:131;:::i;:::-;44684:139;;44411:419;;;:::o;44836:178::-;44976:30;44972:1;44964:6;44960:14;44953:54;44836:178;:::o;45020:366::-;45162:3;45183:67;45247:2;45242:3;45183:67;:::i;:::-;45176:74;;45259:93;45348:3;45259:93;:::i;:::-;45377:2;45372:3;45368:12;45361:19;;45020:366;;;:::o;45392:419::-;45558:4;45596:2;45585:9;45581:18;45573:26;;45645:9;45639:4;45635:20;45631:1;45620:9;45616:17;45609:47;45673:131;45799:4;45673:131;:::i;:::-;45665:139;;45392:419;;;:::o;45817:178::-;45957:30;45953:1;45945:6;45941:14;45934:54;45817:178;:::o;46001:366::-;46143:3;46164:67;46228:2;46223:3;46164:67;:::i;:::-;46157:74;;46240:93;46329:3;46240:93;:::i;:::-;46358:2;46353:3;46349:12;46342:19;;46001:366;;;:::o;46373:419::-;46539:4;46577:2;46566:9;46562:18;46554:26;;46626:9;46620:4;46616:20;46612:1;46601:9;46597:17;46590:47;46654:131;46780:4;46654:131;:::i;:::-;46646:139;;46373:419;;;:::o;46798:167::-;46938:19;46934:1;46926:6;46922:14;46915:43;46798:167;:::o;46971:366::-;47113:3;47134:67;47198:2;47193:3;47134:67;:::i;:::-;47127:74;;47210:93;47299:3;47210:93;:::i;:::-;47328:2;47323:3;47319:12;47312:19;;46971:366;;;:::o;47343:419::-;47509:4;47547:2;47536:9;47532:18;47524:26;;47596:9;47590:4;47586:20;47582:1;47571:9;47567:17;47560:47;47624:131;47750:4;47624:131;:::i;:::-;47616:139;;47343:419;;;:::o;47768:229::-;47908:34;47904:1;47896:6;47892:14;47885:58;47977:12;47972:2;47964:6;47960:15;47953:37;47768:229;:::o;48003:366::-;48145:3;48166:67;48230:2;48225:3;48166:67;:::i;:::-;48159:74;;48242:93;48331:3;48242:93;:::i;:::-;48360:2;48355:3;48351:12;48344:19;;48003:366;;;:::o;48375:419::-;48541:4;48579:2;48568:9;48564:18;48556:26;;48628:9;48622:4;48618:20;48614:1;48603:9;48599:17;48592:47;48656:131;48782:4;48656:131;:::i;:::-;48648:139;;48375:419;;;:::o;48800:98::-;48851:6;48885:5;48879:12;48869:22;;48800:98;;;:::o;48904:168::-;48987:11;49021:6;49016:3;49009:19;49061:4;49056:3;49052:14;49037:29;;48904:168;;;;:::o;49078:360::-;49164:3;49192:38;49224:5;49192:38;:::i;:::-;49246:70;49309:6;49304:3;49246:70;:::i;:::-;49239:77;;49325:52;49370:6;49365:3;49358:4;49351:5;49347:16;49325:52;:::i;:::-;49402:29;49424:6;49402:29;:::i;:::-;49397:3;49393:39;49386:46;;49168:270;49078:360;;;;:::o;49444:640::-;49639:4;49677:3;49666:9;49662:19;49654:27;;49691:71;49759:1;49748:9;49744:17;49735:6;49691:71;:::i;:::-;49772:72;49840:2;49829:9;49825:18;49816:6;49772:72;:::i;:::-;49854;49922:2;49911:9;49907:18;49898:6;49854:72;:::i;:::-;49973:9;49967:4;49963:20;49958:2;49947:9;49943:18;49936:48;50001:76;50072:4;50063:6;50001:76;:::i;:::-;49993:84;;49444:640;;;;;;;:::o;50090:141::-;50146:5;50177:6;50171:13;50162:22;;50193:32;50219:5;50193:32;:::i;:::-;50090:141;;;;:::o;50237:349::-;50306:6;50355:2;50343:9;50334:7;50330:23;50326:32;50323:119;;;50361:79;;:::i;:::-;50323:119;50481:1;50506:63;50561:7;50552:6;50541:9;50537:22;50506:63;:::i;:::-;50496:73;;50452:127;50237:349;;;;:::o

Swarm Source

ipfs://26bb41251c79fcbf880c80fd1d7801a886d705d51fb6c78376cd305fb10ca0f4

Block Transaction Gas Used Reward
view all blocks produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.