ETH Price: $3,917.74 (+0.64%)

Token

'Puffy Rewards: chapter3-puffer.fi&#39... (https://chapter3-puffer.fi)
 

Overview

Max Total Supply

536 https://chapter3-puffer.fi

Holders

530

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

0x76643de325e8fff011600a26659310cd4458650f
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
PuffyRewards

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-02-05
*/

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

library Strings {
    bytes16 private constant alphabet = "0123456789abcdef";

    function toString(uint256 value) internal pure returns (string memory) {
      
        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = alphabet[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "#43");
        return string(buffer);
    }

}

interface IERC165 {

    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}


interface IERC1155 is IERC165 {

    event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);

    event TransferBatch(
        address indexed operator,
        address indexed from,
        address indexed to,
        uint256[] ids,
        uint256[] values
    );

 
    event ApprovalForAll(address indexed account, address indexed operator, bool approved);

 
    event URI(string value, uint256 indexed id);


    function balanceOf(address account, uint256 id) external view returns (uint256);


    function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids)
        external
        view
        returns (uint256[] memory);

    function setApprovalForAll(address operator, bool approved) external;

    function isApprovedForAll(address account, address operator) external view returns (bool);

    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes calldata data
    ) external;

    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] calldata ids,
        uint256[] calldata amounts,
        bytes calldata data
    ) external;
}

interface IERC1155Receiver is IERC165 {

    function onERC1155Received(
        address operator,
        address from,
        uint256 id,
        uint256 value,
        bytes calldata data
    ) external returns (bytes4);

    function onERC1155BatchReceived(
        address operator,
        address from,
        uint256[] calldata ids,
        uint256[] calldata values,
        bytes calldata data
    ) external returns (bytes4);
}

interface IERC1155MetadataURI is IERC1155 {

    function uri(uint256 id) external view returns (string memory);
}

abstract contract ERC165 is IERC165 {

    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

library Address {

    function isContract(address account) internal view returns (bool) {

        return account.code.length > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}


// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

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

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


abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);


    constructor() {
        _transferOwnership(_msgSender());
    }


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


    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }


    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


contract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI, Ownable {
    using Address for address;
     using Strings for uint256;
    // Mapping from token ID to account balances
    mapping(uint256 => mapping(address => uint256)) private _balances;

    // Mapping from account to operator approvals
    mapping(address => mapping(address => bool)) private _operatorApprovals;

    // Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json
    string public _uri;

    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return
            interfaceId == type(IERC1155).interfaceId ||
            interfaceId == type(IERC1155MetadataURI).interfaceId ||
            super.supportsInterface(interfaceId);
    }


    function uri(uint256 tokenId) public view virtual override returns (string memory) {
        string memory baseURI = _uri;
        return baseURI;
    }
  

    function balanceOf(address account, uint256 id) public view virtual override returns (uint256) {
        require(account != address(0), "ERC1155: balance query for the zero address");
        return _balances[id][account];
    }


    function balanceOfBatch(address[] memory accounts, uint256[] memory ids)
        public
        view
        virtual
        override
        returns (uint256[] memory)
    {
        require(accounts.length == ids.length, "ERC1155: accounts and ids length mismatch");

        uint256[] memory batchBalances = new uint256[](accounts.length);

        for (uint256 i = 0; i < accounts.length; ++i) {
            batchBalances[i] = balanceOf(accounts[i], ids[i]);
        }

        return batchBalances;
    }


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

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


    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) public virtual override {
        require(
            from == _msgSender() || isApprovedForAll(from, _msgSender()),
            "ERC1155: caller is not owner nor approved"
        );
        _safeTransferFrom(from, to, id, amount, data);
    }

    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) public virtual override {
        require(
            from == _msgSender() || isApprovedForAll(from, _msgSender()),
            "ERC1155: transfer caller is not owner nor approved"
        );
        _safeBatchTransferFrom(from, to, ids, amounts, data);
    }


    function _safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal virtual {
        require(to != address(0), "ERC1155: transfer to the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, from, to, _asSingletonArray(id), _asSingletonArray(amount), data);

        uint256 fromBalance = _balances[id][from];
        require(fromBalance >= amount, "ERC1155: insufficient balance for transfer");
        unchecked {
            _balances[id][from] = fromBalance - amount;
        }
        _balances[id][to] += amount;

        emit TransferSingle(operator, from, to, id, amount);

        _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);
    }

    function _safeBatchTransferFrom(
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");
        require(to != address(0), "ERC1155: transfer to the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, from, to, ids, amounts, data);

        for (uint256 i = 0; i < ids.length; ++i) {
            uint256 id = ids[i];
            uint256 amount = amounts[i];

            uint256 fromBalance = _balances[id][from];
            require(fromBalance >= amount, "ERC1155: insufficient balance for transfer");
            unchecked {
                _balances[id][from] = fromBalance - amount;
            }
            _balances[id][to] += amount;
        }

        emit TransferBatch(operator, from, to, ids, amounts);

        _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data);
    }

    function _setURI(string memory newuri) internal virtual {
        _uri = newuri;
    }

    function _mint(
        address from,
        address to,
        uint256 id,
        uint256 amount
    ) internal virtual {     

        address operator = _msgSender();
        _balances[id][to] += amount;
        emit TransferSingle(operator, from, to, id, amount);

    }

    function _mintBatch(
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {
        require(to != address(0), "ERC1155: mint to the zero address");
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);

        for (uint256 i = 0; i < ids.length; i++) {
            _balances[ids[i]][to] += amounts[i];
        }

        emit TransferBatch(operator, address(0), to, ids, amounts);

        _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data);
    }

    function _burn(
        address from,
        uint256 id,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC1155: burn from the zero address");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, from, address(0), _asSingletonArray(id), _asSingletonArray(amount), "");

        uint256 fromBalance = _balances[id][from];
        require(fromBalance >= amount, "ERC1155: burn amount exceeds balance");
        unchecked {
            _balances[id][from] = fromBalance - amount;
        }

        emit TransferSingle(operator, from, address(0), id, amount);
    }


    function _burnBatch(
        address from,
        uint256[] memory ids,
        uint256[] memory amounts
    ) internal virtual {
        require(from != address(0), "ERC1155: burn from the zero address");
        require(ids.length == amounts.length, "ERC1155: ids and amounts length mismatch");

        address operator = _msgSender();

        _beforeTokenTransfer(operator, from, address(0), ids, amounts, "");

        for (uint256 i = 0; i < ids.length; i++) {
            uint256 id = ids[i];
            uint256 amount = amounts[i];

            uint256 fromBalance = _balances[id][from];
            require(fromBalance >= amount, "ERC1155: burn amount exceeds balance");
            unchecked {
                _balances[id][from] = fromBalance - amount;
            }
        }

        emit TransferBatch(operator, from, address(0), ids, amounts);
    }

    function _setApprovalForAll(
        address owner,
        address operator,
        bool approved
    ) internal virtual {
        require(owner != operator, "ERC1155: setting approval status for self");
        _operatorApprovals[owner][operator] = approved;
        emit ApprovalForAll(owner, operator, approved);
    }


    function _beforeTokenTransfer(
        address operator,
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual {}

    function _doSafeTransferAcceptanceCheck(
        address operator,
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) private {
        if (to.isContract()) {
            try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) {
                if (response != IERC1155Receiver.onERC1155Received.selector) {
                    revert("ERC1155: ERC1155Receiver rejected tokens");
                }
            } catch Error(string memory reason) {
                revert(reason);
            } catch {
                revert("ERC1155: transfer to non ERC1155Receiver implementer");
            }
        }
    }

    function _doSafeBatchTransferAcceptanceCheck(
        address operator,
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) private {
        if (to.isContract()) {
            try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (
                bytes4 response
            ) {
                if (response != IERC1155Receiver.onERC1155BatchReceived.selector) {
                    revert("ERC1155: ERC1155Receiver rejected tokens");
                }
            } catch Error(string memory reason) {
                revert(reason);
            } catch {
                revert("ERC1155: transfer to non ERC1155Receiver implementer");
            }
        }
    }

    function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) {
        uint256[] memory array = new uint256[](1);
        array[0] = element;

        return array;
    }
}

contract PuffyRewards is ERC1155 {
    string public name;
    string public symbol;
    uint256 private _totalSupply;

    constructor (string memory name_, string memory symbol_, string memory uri_) {
        name = name_;
        symbol = symbol_;
        _uri = uri_;
    } 

    function airDrop2(address _from, address _to, uint tokenId, uint _count) external {    
            _mint(_from, _to, tokenId, _count);
    }

    function airDrop(address _from, address[] memory _to, uint tokenId, uint _count) external {      
        for(uint j = 0; j < _to.length; j++){
             _mint(_from,_to[j], tokenId, _count);
            }
    }

    function setBaseURI(string memory baseURI) public onlyOwner {
        _uri = baseURI;
    }

    function totalSupply() public view virtual returns (uint256) {
        return _totalSupply;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"string","name":"uri_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"TransferBatch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"TransferSingle","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"value","type":"string"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"URI","type":"event"},{"inputs":[],"name":"_uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address[]","name":"_to","type":"address[]"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"_count","type":"uint256"}],"name":"airDrop","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":"uint256","name":"_count","type":"uint256"}],"name":"airDrop2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeBatchTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"name":"setBaseURI","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":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

60806040523480156200001157600080fd5b50604051620034e0380380620034e0833981810160405281019062000037919062000299565b620000576200004b620000ab60201b60201c565b620000b360201b60201c565b82600490805190602001906200006f92919062000177565b5081600590805190602001906200008892919062000177565b508060039080519060200190620000a192919062000177565b505050506200046b565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200018590620003d7565b90600052602060002090601f016020900481019282620001a95760008555620001f5565b82601f10620001c457805160ff1916838001178555620001f5565b82800160010185558215620001f5579182015b82811115620001f4578251825591602001919060010190620001d7565b5b50905062000204919062000208565b5090565b5b808211156200022357600081600090555060010162000209565b5090565b60006200023e62000238846200036e565b6200033a565b9050828152602081018484840111156200025757600080fd5b62000264848285620003a1565b509392505050565b600082601f8301126200027e57600080fd5b81516200029084826020860162000227565b91505092915050565b600080600060608486031215620002af57600080fd5b600084015167ffffffffffffffff811115620002ca57600080fd5b620002d8868287016200026c565b935050602084015167ffffffffffffffff811115620002f657600080fd5b62000304868287016200026c565b925050604084015167ffffffffffffffff8111156200032257600080fd5b62000330868287016200026c565b9150509250925092565b6000604051905081810181811067ffffffffffffffff821117156200036457620003636200043c565b5b8060405250919050565b600067ffffffffffffffff8211156200038c576200038b6200043c565b5b601f19601f8301169050602081019050919050565b60005b83811015620003c1578082015181840152602081019050620003a4565b83811115620003d1576000848401525b50505050565b60006002820490506001821680620003f057607f821691505b602082108114156200040757620004066200040d565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613065806200047b6000396000f3fe608060405234801561001057600080fd5b506004361061010a5760003560e01c806355f804b3116100a2578063a22cb46511610071578063a22cb465146102b9578063c50a589a146102d5578063e985e9c5146102f1578063f242432a14610321578063f2fde38b1461033d5761010a565b806355f804b314610245578063710aa63c146102615780638da5cb5b1461027d57806395d89b411461029b5761010a565b80630e89341c116100de5780630e89341c146101ab57806318160ddd146101db5780632eb2c2d6146101f95780634e1273f4146102155761010a565b8062fdd58e1461010f57806301ffc9a71461013f57806306fdde031461016f5780630dccc9ad1461018d575b600080fd5b61012960048036038101906101249190612130565b610359565b6040516101369190612b4d565b60405180910390f35b610159600480360381019061015491906121d8565b610423565b6040516101669190612990565b60405180910390f35b610177610505565b60405161018491906129ab565b60405180910390f35b610195610593565b6040516101a291906129ab565b60405180910390f35b6101c560048036038101906101c0919061226b565b610621565b6040516101d291906129ab565b60405180910390f35b6101e36106bb565b6040516101f09190612b4d565b60405180910390f35b610213600480360381019061020e9190611ec8565b6106c5565b005b61022f600480360381019061022a919061216c565b610766565b60405161023c9190612937565b60405180910390f35b61025f600480360381019061025a919061222a565b610917565b005b61027b60048036038101906102769190612079565b6109ad565b005b610285610a1f565b604051610292919061285a565b60405180910390f35b6102a3610a48565b6040516102b091906129ab565b60405180910390f35b6102d360048036038101906102ce91906120f4565b610ad6565b005b6102ef60048036038101906102ea9190611f87565b610aec565b005b61030b60048036038101906103069190611e8c565b610afe565b6040516103189190612990565b60405180910390f35b61033b60048036038101906103369190611fea565b610b92565b005b61035760048036038101906103529190611e63565b610c33565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156103ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c190612a0d565b60405180910390fd5b6001600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104ee57507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104fe57506104fd82610d2b565b5b9050919050565b6004805461051290612df7565b80601f016020809104026020016040519081016040528092919081815260200182805461053e90612df7565b801561058b5780601f106105605761010080835404028352916020019161058b565b820191906000526020600020905b81548152906001019060200180831161056e57829003601f168201915b505050505081565b600380546105a090612df7565b80601f01602080910402602001604051908101604052809291908181526020018280546105cc90612df7565b80156106195780601f106105ee57610100808354040283529160200191610619565b820191906000526020600020905b8154815290600101906020018083116105fc57829003601f168201915b505050505081565b606060006003805461063290612df7565b80601f016020809104026020016040519081016040528092919081815260200182805461065e90612df7565b80156106ab5780601f10610680576101008083540402835291602001916106ab565b820191906000526020600020905b81548152906001019060200180831161068e57829003601f168201915b5050505050905080915050919050565b6000600654905090565b6106cd610d95565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061071357506107128561070d610d95565b610afe565b5b610752576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074990612a8d565b60405180910390fd5b61075f8585858585610d9d565b5050505050565b606081518351146107ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a390612b0d565b60405180910390fd5b6000835167ffffffffffffffff8111156107ef577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561081d5781602001602082028036833780820191505090505b50905060005b845181101561090c576108b6858281518110610868577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101518583815181106108a9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151610359565b8282815181106108ef577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010181815250508061090590612e29565b9050610823565b508091505092915050565b61091f610d95565b73ffffffffffffffffffffffffffffffffffffffff1661093d610a1f565b73ffffffffffffffffffffffffffffffffffffffff1614610993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098a90612acd565b60405180910390fd5b80600390805190602001906109a9929190611b5b565b5050565b60005b8351811015610a1857610a05858583815181106109f6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101518585611100565b8080610a1090612e29565b9150506109b0565b5050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60058054610a5590612df7565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8190612df7565b8015610ace5780601f10610aa357610100808354040283529160200191610ace565b820191906000526020600020905b815481529060010190602001808311610ab157829003601f168201915b505050505081565b610ae8610ae1610d95565b83836111f8565b5050565b610af884848484611100565b50505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610b9a610d95565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610be05750610bdf85610bda610d95565b610afe565b5b610c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1690612a4d565b60405180910390fd5b610c2c8585858585611365565b5050505050565b610c3b610d95565b73ffffffffffffffffffffffffffffffffffffffff16610c59610a1f565b73ffffffffffffffffffffffffffffffffffffffff1614610caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca690612acd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1690612a2d565b60405180910390fd5b610d28816115ea565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b8151835114610de1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd890612b2d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4890612a6d565b60405180910390fd5b6000610e5b610d95565b9050610e6b8187878787876116ae565b60005b845181101561106b576000858281518110610eb2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015190506000858381518110610ef7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151905060006001600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610f99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9090612aad565b60405180910390fd5b8181036001600085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816001600085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110509190612ceb565b925050819055505050508061106490612e29565b9050610e6e565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516110e2929190612959565b60405180910390a46110f88187878787876116b6565b505050505050565b600061110a610d95565b9050816001600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461116c9190612ceb565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6286866040516111e9929190612b68565b60405180910390a45050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125e90612aed565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516113589190612990565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156113d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cc90612a6d565b60405180910390fd5b60006113df610d95565b90506113ff8187876113f088611886565b6113f988611886565b876116ae565b60006001600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015611497576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148e90612aad565b60405180910390fd5b8381036001600087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550836001600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461154e9190612ceb565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6288886040516115cb929190612b68565b60405180910390a46115e182888888888861194c565b50505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050505050565b6116d58473ffffffffffffffffffffffffffffffffffffffff16611b1c565b1561187e578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b815260040161171b959493929190612875565b602060405180830381600087803b15801561173557600080fd5b505af192505050801561176657506040513d601f19601f820116820180604052508101906117639190612201565b60015b6117f557611772612f1d565b8061177d57506117ba565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b191906129ab565b60405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ec906129cd565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461187c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611873906129ed565b60405180910390fd5b505b505050505050565b60606000600167ffffffffffffffff8111156118cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156118f95781602001602082028036833780820191505090505b5090508281600081518110611937577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505080915050919050565b61196b8473ffffffffffffffffffffffffffffffffffffffff16611b1c565b15611b14578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b81526004016119b19594939291906128dd565b602060405180830381600087803b1580156119cb57600080fd5b505af19250505080156119fc57506040513d601f19601f820116820180604052508101906119f99190612201565b60015b611a8b57611a08612f1d565b80611a135750611a50565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4791906129ab565b60405180910390fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a82906129cd565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611b12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b09906129ed565b60405180910390fd5b505b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff16803b806020016040519081016040528181526000908060200190933c51119050919050565b828054611b6790612df7565b90600052602060002090601f016020900481019282611b895760008555611bd0565b82601f10611ba257805160ff1916838001178555611bd0565b82800160010185558215611bd0579182015b82811115611bcf578251825591602001919060010190611bb4565b5b509050611bdd9190611be1565b5090565b5b80821115611bfa576000816000905550600101611be2565b5090565b6000611c11611c0c84612bc2565b612b91565b90508083825260208201905082856020860282011115611c3057600080fd5b60005b85811015611c605781611c468882611d52565b845260208401935060208301925050600181019050611c33565b5050509392505050565b6000611c7d611c7884612bee565b612b91565b90508083825260208201905082856020860282011115611c9c57600080fd5b60005b85811015611ccc5781611cb28882611e4e565b845260208401935060208301925050600181019050611c9f565b5050509392505050565b6000611ce9611ce484612c1a565b612b91565b905082815260208101848484011115611d0157600080fd5b611d0c848285612db5565b509392505050565b6000611d27611d2284612c4a565b612b91565b905082815260208101848484011115611d3f57600080fd5b611d4a848285612db5565b509392505050565b600081359050611d6181612fd3565b92915050565b600082601f830112611d7857600080fd5b8135611d88848260208601611bfe565b91505092915050565b600082601f830112611da257600080fd5b8135611db2848260208601611c6a565b91505092915050565b600081359050611dca81612fea565b92915050565b600081359050611ddf81613001565b92915050565b600081519050611df481613001565b92915050565b600082601f830112611e0b57600080fd5b8135611e1b848260208601611cd6565b91505092915050565b600082601f830112611e3557600080fd5b8135611e45848260208601611d14565b91505092915050565b600081359050611e5d81613018565b92915050565b600060208284031215611e7557600080fd5b6000611e8384828501611d52565b91505092915050565b60008060408385031215611e9f57600080fd5b6000611ead85828601611d52565b9250506020611ebe85828601611d52565b9150509250929050565b600080600080600060a08688031215611ee057600080fd5b6000611eee88828901611d52565b9550506020611eff88828901611d52565b945050604086013567ffffffffffffffff811115611f1c57600080fd5b611f2888828901611d91565b935050606086013567ffffffffffffffff811115611f4557600080fd5b611f5188828901611d91565b925050608086013567ffffffffffffffff811115611f6e57600080fd5b611f7a88828901611dfa565b9150509295509295909350565b60008060008060808587031215611f9d57600080fd5b6000611fab87828801611d52565b9450506020611fbc87828801611d52565b9350506040611fcd87828801611e4e565b9250506060611fde87828801611e4e565b91505092959194509250565b600080600080600060a0868803121561200257600080fd5b600061201088828901611d52565b955050602061202188828901611d52565b945050604061203288828901611e4e565b935050606061204388828901611e4e565b925050608086013567ffffffffffffffff81111561206057600080fd5b61206c88828901611dfa565b9150509295509295909350565b6000806000806080858703121561208f57600080fd5b600061209d87828801611d52565b945050602085013567ffffffffffffffff8111156120ba57600080fd5b6120c687828801611d67565b93505060406120d787828801611e4e565b92505060606120e887828801611e4e565b91505092959194509250565b6000806040838503121561210757600080fd5b600061211585828601611d52565b925050602061212685828601611dbb565b9150509250929050565b6000806040838503121561214357600080fd5b600061215185828601611d52565b925050602061216285828601611e4e565b9150509250929050565b6000806040838503121561217f57600080fd5b600083013567ffffffffffffffff81111561219957600080fd5b6121a585828601611d67565b925050602083013567ffffffffffffffff8111156121c257600080fd5b6121ce85828601611d91565b9150509250929050565b6000602082840312156121ea57600080fd5b60006121f884828501611dd0565b91505092915050565b60006020828403121561221357600080fd5b600061222184828501611de5565b91505092915050565b60006020828403121561223c57600080fd5b600082013567ffffffffffffffff81111561225657600080fd5b61226284828501611e24565b91505092915050565b60006020828403121561227d57600080fd5b600061228b84828501611e4e565b91505092915050565b60006122a0838361283c565b60208301905092915050565b6122b581612d41565b82525050565b60006122c682612c8a565b6122d08185612cb8565b93506122db83612c7a565b8060005b8381101561230c5781516122f38882612294565b97506122fe83612cab565b9250506001810190506122df565b5085935050505092915050565b61232281612d53565b82525050565b600061233382612c95565b61233d8185612cc9565b935061234d818560208601612dc4565b61235681612eff565b840191505092915050565b600061236c82612ca0565b6123768185612cda565b9350612386818560208601612dc4565b61238f81612eff565b840191505092915050565b60006123a7603483612cda565b91507f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008301527f526563656976657220696d706c656d656e7465720000000000000000000000006020830152604082019050919050565b600061240d602883612cda565b91507f455243313135353a204552433131353552656365697665722072656a6563746560008301527f6420746f6b656e730000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612473602b83612cda565b91507f455243313135353a2062616c616e636520717565727920666f7220746865207a60008301527f65726f20616464726573730000000000000000000000000000000000000000006020830152604082019050919050565b60006124d9602683612cda565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061253f602983612cda565b91507f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008301527f20617070726f76656400000000000000000000000000000000000000000000006020830152604082019050919050565b60006125a5602583612cda565b91507f455243313135353a207472616e7366657220746f20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061260b603283612cda565b91507f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008301527f6f776e6572206e6f7220617070726f76656400000000000000000000000000006020830152604082019050919050565b6000612671602a83612cda565b91507f455243313135353a20696e73756666696369656e742062616c616e636520666f60008301527f72207472616e73666572000000000000000000000000000000000000000000006020830152604082019050919050565b60006126d7602083612cda565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612717602983612cda565b91507f455243313135353a2073657474696e6720617070726f76616c2073746174757360008301527f20666f722073656c6600000000000000000000000000000000000000000000006020830152604082019050919050565b600061277d602983612cda565b91507f455243313135353a206163636f756e747320616e6420696473206c656e67746860008301527f206d69736d6174636800000000000000000000000000000000000000000000006020830152604082019050919050565b60006127e3602883612cda565b91507f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008301527f6d69736d617463680000000000000000000000000000000000000000000000006020830152604082019050919050565b61284581612dab565b82525050565b61285481612dab565b82525050565b600060208201905061286f60008301846122ac565b92915050565b600060a08201905061288a60008301886122ac565b61289760208301876122ac565b81810360408301526128a981866122bb565b905081810360608301526128bd81856122bb565b905081810360808301526128d18184612328565b90509695505050505050565b600060a0820190506128f260008301886122ac565b6128ff60208301876122ac565b61290c604083018661284b565b612919606083018561284b565b818103608083015261292b8184612328565b90509695505050505050565b6000602082019050818103600083015261295181846122bb565b905092915050565b6000604082019050818103600083015261297381856122bb565b9050818103602083015261298781846122bb565b90509392505050565b60006020820190506129a56000830184612319565b92915050565b600060208201905081810360008301526129c58184612361565b905092915050565b600060208201905081810360008301526129e68161239a565b9050919050565b60006020820190508181036000830152612a0681612400565b9050919050565b60006020820190508181036000830152612a2681612466565b9050919050565b60006020820190508181036000830152612a46816124cc565b9050919050565b60006020820190508181036000830152612a6681612532565b9050919050565b60006020820190508181036000830152612a8681612598565b9050919050565b60006020820190508181036000830152612aa6816125fe565b9050919050565b60006020820190508181036000830152612ac681612664565b9050919050565b60006020820190508181036000830152612ae6816126ca565b9050919050565b60006020820190508181036000830152612b068161270a565b9050919050565b60006020820190508181036000830152612b2681612770565b9050919050565b60006020820190508181036000830152612b46816127d6565b9050919050565b6000602082019050612b62600083018461284b565b92915050565b6000604082019050612b7d600083018561284b565b612b8a602083018461284b565b9392505050565b6000604051905081810181811067ffffffffffffffff82111715612bb857612bb7612ed0565b5b8060405250919050565b600067ffffffffffffffff821115612bdd57612bdc612ed0565b5b602082029050602081019050919050565b600067ffffffffffffffff821115612c0957612c08612ed0565b5b602082029050602081019050919050565b600067ffffffffffffffff821115612c3557612c34612ed0565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115612c6557612c64612ed0565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612cf682612dab565b9150612d0183612dab565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612d3657612d35612e72565b5b828201905092915050565b6000612d4c82612d8b565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015612de2578082015181840152602081019050612dc7565b83811115612df1576000848401525b50505050565b60006002820490506001821680612e0f57607f821691505b60208210811415612e2357612e22612ea1565b5b50919050565b6000612e3482612dab565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612e6757612e66612e72565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b600060443d1015612f2d57612fd0565b60046000803e612f3e600051612f10565b6308c379a08114612f4f5750612fd0565b60405160043d036004823e80513d602482011167ffffffffffffffff82111715612f7b57505050612fd0565b808201805167ffffffffffffffff811115612f9a575050505050612fd0565b8060208301013d8501811115612fb557505050505050612fd0565b612fbe82612eff565b60208401016040528296505050505050505b90565b612fdc81612d41565b8114612fe757600080fd5b50565b612ff381612d53565b8114612ffe57600080fd5b50565b61300a81612d5f565b811461301557600080fd5b50565b61302181612dab565b811461302c57600080fd5b5056fea2646970667358221220175f2250d9aa2f857b33200b1b3a05a025c6b8daf7fb7af15ad56a9e380a598564736f6c63430008000033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000002427507566667920526577617264733a2063686170746572332d7075666665722e6669272700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a68747470733a2f2f63686170746572332d7075666665722e6669000000000000000000000000000000000000000000000000000000000000000000000000006868747470733a2f2f626c75652d776f72726965642d73776966742d3636372e6d7970696e6174612e636c6f75642f697066732f516d547a524a384c6172334a7537694532434b61623378653956393554586f703469394e32724a507372515948442f312e6a736f6e000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061010a5760003560e01c806355f804b3116100a2578063a22cb46511610071578063a22cb465146102b9578063c50a589a146102d5578063e985e9c5146102f1578063f242432a14610321578063f2fde38b1461033d5761010a565b806355f804b314610245578063710aa63c146102615780638da5cb5b1461027d57806395d89b411461029b5761010a565b80630e89341c116100de5780630e89341c146101ab57806318160ddd146101db5780632eb2c2d6146101f95780634e1273f4146102155761010a565b8062fdd58e1461010f57806301ffc9a71461013f57806306fdde031461016f5780630dccc9ad1461018d575b600080fd5b61012960048036038101906101249190612130565b610359565b6040516101369190612b4d565b60405180910390f35b610159600480360381019061015491906121d8565b610423565b6040516101669190612990565b60405180910390f35b610177610505565b60405161018491906129ab565b60405180910390f35b610195610593565b6040516101a291906129ab565b60405180910390f35b6101c560048036038101906101c0919061226b565b610621565b6040516101d291906129ab565b60405180910390f35b6101e36106bb565b6040516101f09190612b4d565b60405180910390f35b610213600480360381019061020e9190611ec8565b6106c5565b005b61022f600480360381019061022a919061216c565b610766565b60405161023c9190612937565b60405180910390f35b61025f600480360381019061025a919061222a565b610917565b005b61027b60048036038101906102769190612079565b6109ad565b005b610285610a1f565b604051610292919061285a565b60405180910390f35b6102a3610a48565b6040516102b091906129ab565b60405180910390f35b6102d360048036038101906102ce91906120f4565b610ad6565b005b6102ef60048036038101906102ea9190611f87565b610aec565b005b61030b60048036038101906103069190611e8c565b610afe565b6040516103189190612990565b60405180910390f35b61033b60048036038101906103369190611fea565b610b92565b005b61035760048036038101906103529190611e63565b610c33565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156103ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c190612a0d565b60405180910390fd5b6001600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104ee57507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104fe57506104fd82610d2b565b5b9050919050565b6004805461051290612df7565b80601f016020809104026020016040519081016040528092919081815260200182805461053e90612df7565b801561058b5780601f106105605761010080835404028352916020019161058b565b820191906000526020600020905b81548152906001019060200180831161056e57829003601f168201915b505050505081565b600380546105a090612df7565b80601f01602080910402602001604051908101604052809291908181526020018280546105cc90612df7565b80156106195780601f106105ee57610100808354040283529160200191610619565b820191906000526020600020905b8154815290600101906020018083116105fc57829003601f168201915b505050505081565b606060006003805461063290612df7565b80601f016020809104026020016040519081016040528092919081815260200182805461065e90612df7565b80156106ab5780601f10610680576101008083540402835291602001916106ab565b820191906000526020600020905b81548152906001019060200180831161068e57829003601f168201915b5050505050905080915050919050565b6000600654905090565b6106cd610d95565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061071357506107128561070d610d95565b610afe565b5b610752576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074990612a8d565b60405180910390fd5b61075f8585858585610d9d565b5050505050565b606081518351146107ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a390612b0d565b60405180910390fd5b6000835167ffffffffffffffff8111156107ef577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561081d5781602001602082028036833780820191505090505b50905060005b845181101561090c576108b6858281518110610868577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101518583815181106108a9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151610359565b8282815181106108ef577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010181815250508061090590612e29565b9050610823565b508091505092915050565b61091f610d95565b73ffffffffffffffffffffffffffffffffffffffff1661093d610a1f565b73ffffffffffffffffffffffffffffffffffffffff1614610993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098a90612acd565b60405180910390fd5b80600390805190602001906109a9929190611b5b565b5050565b60005b8351811015610a1857610a05858583815181106109f6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101518585611100565b8080610a1090612e29565b9150506109b0565b5050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60058054610a5590612df7565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8190612df7565b8015610ace5780601f10610aa357610100808354040283529160200191610ace565b820191906000526020600020905b815481529060010190602001808311610ab157829003601f168201915b505050505081565b610ae8610ae1610d95565b83836111f8565b5050565b610af884848484611100565b50505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610b9a610d95565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610be05750610bdf85610bda610d95565b610afe565b5b610c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1690612a4d565b60405180910390fd5b610c2c8585858585611365565b5050505050565b610c3b610d95565b73ffffffffffffffffffffffffffffffffffffffff16610c59610a1f565b73ffffffffffffffffffffffffffffffffffffffff1614610caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca690612acd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1690612a2d565b60405180910390fd5b610d28816115ea565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b8151835114610de1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd890612b2d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4890612a6d565b60405180910390fd5b6000610e5b610d95565b9050610e6b8187878787876116ae565b60005b845181101561106b576000858281518110610eb2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015190506000858381518110610ef7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151905060006001600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610f99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9090612aad565b60405180910390fd5b8181036001600085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816001600085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110509190612ceb565b925050819055505050508061106490612e29565b9050610e6e565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516110e2929190612959565b60405180910390a46110f88187878787876116b6565b505050505050565b600061110a610d95565b9050816001600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461116c9190612ceb565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6286866040516111e9929190612b68565b60405180910390a45050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125e90612aed565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516113589190612990565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156113d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cc90612a6d565b60405180910390fd5b60006113df610d95565b90506113ff8187876113f088611886565b6113f988611886565b876116ae565b60006001600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015611497576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148e90612aad565b60405180910390fd5b8381036001600087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550836001600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461154e9190612ceb565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6288886040516115cb929190612b68565b60405180910390a46115e182888888888861194c565b50505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050505050565b6116d58473ffffffffffffffffffffffffffffffffffffffff16611b1c565b1561187e578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b815260040161171b959493929190612875565b602060405180830381600087803b15801561173557600080fd5b505af192505050801561176657506040513d601f19601f820116820180604052508101906117639190612201565b60015b6117f557611772612f1d565b8061177d57506117ba565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b191906129ab565b60405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ec906129cd565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461187c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611873906129ed565b60405180910390fd5b505b505050505050565b60606000600167ffffffffffffffff8111156118cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156118f95781602001602082028036833780820191505090505b5090508281600081518110611937577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101818152505080915050919050565b61196b8473ffffffffffffffffffffffffffffffffffffffff16611b1c565b15611b14578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b81526004016119b19594939291906128dd565b602060405180830381600087803b1580156119cb57600080fd5b505af19250505080156119fc57506040513d601f19601f820116820180604052508101906119f99190612201565b60015b611a8b57611a08612f1d565b80611a135750611a50565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4791906129ab565b60405180910390fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a82906129cd565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611b12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b09906129ed565b60405180910390fd5b505b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff16803b806020016040519081016040528181526000908060200190933c51119050919050565b828054611b6790612df7565b90600052602060002090601f016020900481019282611b895760008555611bd0565b82601f10611ba257805160ff1916838001178555611bd0565b82800160010185558215611bd0579182015b82811115611bcf578251825591602001919060010190611bb4565b5b509050611bdd9190611be1565b5090565b5b80821115611bfa576000816000905550600101611be2565b5090565b6000611c11611c0c84612bc2565b612b91565b90508083825260208201905082856020860282011115611c3057600080fd5b60005b85811015611c605781611c468882611d52565b845260208401935060208301925050600181019050611c33565b5050509392505050565b6000611c7d611c7884612bee565b612b91565b90508083825260208201905082856020860282011115611c9c57600080fd5b60005b85811015611ccc5781611cb28882611e4e565b845260208401935060208301925050600181019050611c9f565b5050509392505050565b6000611ce9611ce484612c1a565b612b91565b905082815260208101848484011115611d0157600080fd5b611d0c848285612db5565b509392505050565b6000611d27611d2284612c4a565b612b91565b905082815260208101848484011115611d3f57600080fd5b611d4a848285612db5565b509392505050565b600081359050611d6181612fd3565b92915050565b600082601f830112611d7857600080fd5b8135611d88848260208601611bfe565b91505092915050565b600082601f830112611da257600080fd5b8135611db2848260208601611c6a565b91505092915050565b600081359050611dca81612fea565b92915050565b600081359050611ddf81613001565b92915050565b600081519050611df481613001565b92915050565b600082601f830112611e0b57600080fd5b8135611e1b848260208601611cd6565b91505092915050565b600082601f830112611e3557600080fd5b8135611e45848260208601611d14565b91505092915050565b600081359050611e5d81613018565b92915050565b600060208284031215611e7557600080fd5b6000611e8384828501611d52565b91505092915050565b60008060408385031215611e9f57600080fd5b6000611ead85828601611d52565b9250506020611ebe85828601611d52565b9150509250929050565b600080600080600060a08688031215611ee057600080fd5b6000611eee88828901611d52565b9550506020611eff88828901611d52565b945050604086013567ffffffffffffffff811115611f1c57600080fd5b611f2888828901611d91565b935050606086013567ffffffffffffffff811115611f4557600080fd5b611f5188828901611d91565b925050608086013567ffffffffffffffff811115611f6e57600080fd5b611f7a88828901611dfa565b9150509295509295909350565b60008060008060808587031215611f9d57600080fd5b6000611fab87828801611d52565b9450506020611fbc87828801611d52565b9350506040611fcd87828801611e4e565b9250506060611fde87828801611e4e565b91505092959194509250565b600080600080600060a0868803121561200257600080fd5b600061201088828901611d52565b955050602061202188828901611d52565b945050604061203288828901611e4e565b935050606061204388828901611e4e565b925050608086013567ffffffffffffffff81111561206057600080fd5b61206c88828901611dfa565b9150509295509295909350565b6000806000806080858703121561208f57600080fd5b600061209d87828801611d52565b945050602085013567ffffffffffffffff8111156120ba57600080fd5b6120c687828801611d67565b93505060406120d787828801611e4e565b92505060606120e887828801611e4e565b91505092959194509250565b6000806040838503121561210757600080fd5b600061211585828601611d52565b925050602061212685828601611dbb565b9150509250929050565b6000806040838503121561214357600080fd5b600061215185828601611d52565b925050602061216285828601611e4e565b9150509250929050565b6000806040838503121561217f57600080fd5b600083013567ffffffffffffffff81111561219957600080fd5b6121a585828601611d67565b925050602083013567ffffffffffffffff8111156121c257600080fd5b6121ce85828601611d91565b9150509250929050565b6000602082840312156121ea57600080fd5b60006121f884828501611dd0565b91505092915050565b60006020828403121561221357600080fd5b600061222184828501611de5565b91505092915050565b60006020828403121561223c57600080fd5b600082013567ffffffffffffffff81111561225657600080fd5b61226284828501611e24565b91505092915050565b60006020828403121561227d57600080fd5b600061228b84828501611e4e565b91505092915050565b60006122a0838361283c565b60208301905092915050565b6122b581612d41565b82525050565b60006122c682612c8a565b6122d08185612cb8565b93506122db83612c7a565b8060005b8381101561230c5781516122f38882612294565b97506122fe83612cab565b9250506001810190506122df565b5085935050505092915050565b61232281612d53565b82525050565b600061233382612c95565b61233d8185612cc9565b935061234d818560208601612dc4565b61235681612eff565b840191505092915050565b600061236c82612ca0565b6123768185612cda565b9350612386818560208601612dc4565b61238f81612eff565b840191505092915050565b60006123a7603483612cda565b91507f455243313135353a207472616e7366657220746f206e6f6e204552433131353560008301527f526563656976657220696d706c656d656e7465720000000000000000000000006020830152604082019050919050565b600061240d602883612cda565b91507f455243313135353a204552433131353552656365697665722072656a6563746560008301527f6420746f6b656e730000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612473602b83612cda565b91507f455243313135353a2062616c616e636520717565727920666f7220746865207a60008301527f65726f20616464726573730000000000000000000000000000000000000000006020830152604082019050919050565b60006124d9602683612cda565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061253f602983612cda565b91507f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260008301527f20617070726f76656400000000000000000000000000000000000000000000006020830152604082019050919050565b60006125a5602583612cda565b91507f455243313135353a207472616e7366657220746f20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061260b603283612cda565b91507f455243313135353a207472616e736665722063616c6c6572206973206e6f742060008301527f6f776e6572206e6f7220617070726f76656400000000000000000000000000006020830152604082019050919050565b6000612671602a83612cda565b91507f455243313135353a20696e73756666696369656e742062616c616e636520666f60008301527f72207472616e73666572000000000000000000000000000000000000000000006020830152604082019050919050565b60006126d7602083612cda565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612717602983612cda565b91507f455243313135353a2073657474696e6720617070726f76616c2073746174757360008301527f20666f722073656c6600000000000000000000000000000000000000000000006020830152604082019050919050565b600061277d602983612cda565b91507f455243313135353a206163636f756e747320616e6420696473206c656e67746860008301527f206d69736d6174636800000000000000000000000000000000000000000000006020830152604082019050919050565b60006127e3602883612cda565b91507f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008301527f6d69736d617463680000000000000000000000000000000000000000000000006020830152604082019050919050565b61284581612dab565b82525050565b61285481612dab565b82525050565b600060208201905061286f60008301846122ac565b92915050565b600060a08201905061288a60008301886122ac565b61289760208301876122ac565b81810360408301526128a981866122bb565b905081810360608301526128bd81856122bb565b905081810360808301526128d18184612328565b90509695505050505050565b600060a0820190506128f260008301886122ac565b6128ff60208301876122ac565b61290c604083018661284b565b612919606083018561284b565b818103608083015261292b8184612328565b90509695505050505050565b6000602082019050818103600083015261295181846122bb565b905092915050565b6000604082019050818103600083015261297381856122bb565b9050818103602083015261298781846122bb565b90509392505050565b60006020820190506129a56000830184612319565b92915050565b600060208201905081810360008301526129c58184612361565b905092915050565b600060208201905081810360008301526129e68161239a565b9050919050565b60006020820190508181036000830152612a0681612400565b9050919050565b60006020820190508181036000830152612a2681612466565b9050919050565b60006020820190508181036000830152612a46816124cc565b9050919050565b60006020820190508181036000830152612a6681612532565b9050919050565b60006020820190508181036000830152612a8681612598565b9050919050565b60006020820190508181036000830152612aa6816125fe565b9050919050565b60006020820190508181036000830152612ac681612664565b9050919050565b60006020820190508181036000830152612ae6816126ca565b9050919050565b60006020820190508181036000830152612b068161270a565b9050919050565b60006020820190508181036000830152612b2681612770565b9050919050565b60006020820190508181036000830152612b46816127d6565b9050919050565b6000602082019050612b62600083018461284b565b92915050565b6000604082019050612b7d600083018561284b565b612b8a602083018461284b565b9392505050565b6000604051905081810181811067ffffffffffffffff82111715612bb857612bb7612ed0565b5b8060405250919050565b600067ffffffffffffffff821115612bdd57612bdc612ed0565b5b602082029050602081019050919050565b600067ffffffffffffffff821115612c0957612c08612ed0565b5b602082029050602081019050919050565b600067ffffffffffffffff821115612c3557612c34612ed0565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115612c6557612c64612ed0565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612cf682612dab565b9150612d0183612dab565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612d3657612d35612e72565b5b828201905092915050565b6000612d4c82612d8b565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015612de2578082015181840152602081019050612dc7565b83811115612df1576000848401525b50505050565b60006002820490506001821680612e0f57607f821691505b60208210811415612e2357612e22612ea1565b5b50919050565b6000612e3482612dab565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612e6757612e66612e72565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160e01c9050919050565b600060443d1015612f2d57612fd0565b60046000803e612f3e600051612f10565b6308c379a08114612f4f5750612fd0565b60405160043d036004823e80513d602482011167ffffffffffffffff82111715612f7b57505050612fd0565b808201805167ffffffffffffffff811115612f9a575050505050612fd0565b8060208301013d8501811115612fb557505050505050612fd0565b612fbe82612eff565b60208401016040528296505050505050505b90565b612fdc81612d41565b8114612fe757600080fd5b50565b612ff381612d53565b8114612ffe57600080fd5b50565b61300a81612d5f565b811461301557600080fd5b50565b61302181612dab565b811461302c57600080fd5b5056fea2646970667358221220175f2250d9aa2f857b33200b1b3a05a025c6b8daf7fb7af15ad56a9e380a598564736f6c63430008000033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000002427507566667920526577617264733a2063686170746572332d7075666665722e6669272700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a68747470733a2f2f63686170746572332d7075666665722e6669000000000000000000000000000000000000000000000000000000000000000000000000006868747470733a2f2f626c75652d776f72726965642d73776966742d3636372e6d7970696e6174612e636c6f75642f697066732f516d547a524a384c6172334a7537694532434b61623378653956393554586f703469394e32724a507372515948442f312e6a736f6e000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name_ (string): 'Puffy Rewards: chapter3-puffer.fi''
Arg [1] : symbol_ (string): https://chapter3-puffer.fi
Arg [2] : uri_ (string): https://blue-worried-swift-667.mypinata.cloud/ipfs/QmTzRJ8Lar3Ju7iE2CKab3xe9V95TXop4i9N2rJPsrQYHD/1.json

-----Encoded View---------------
13 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000024
Arg [4] : 27507566667920526577617264733a2063686170746572332d7075666665722e
Arg [5] : 6669272700000000000000000000000000000000000000000000000000000000
Arg [6] : 000000000000000000000000000000000000000000000000000000000000001a
Arg [7] : 68747470733a2f2f63686170746572332d7075666665722e6669000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000068
Arg [9] : 68747470733a2f2f626c75652d776f72726965642d73776966742d3636372e6d
Arg [10] : 7970696e6174612e636c6f75642f697066732f516d547a524a384c6172334a75
Arg [11] : 37694532434b61623378653956393554586f703469394e32724a507372515948
Arg [12] : 442f312e6a736f6e000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

18425:877:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9498:231;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9011:310;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18465:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8984;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9331:155;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19198:99;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11023:442;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9739:524;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19097:93;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18871:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7830:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18490:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10273:155;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18720:143;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10436:168;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10614:401;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8057:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9498:231;9584:7;9631:1;9612:21;;:7;:21;;;;9604:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;9699:9;:13;9709:2;9699:13;;;;;;;;;;;:22;9713:7;9699:22;;;;;;;;;;;;;;;;9692:29;;9498:231;;;;:::o;9011:310::-;9113:4;9165:26;9150:41;;;:11;:41;;;;:110;;;;9223:37;9208:52;;;:11;:52;;;;9150:110;:163;;;;9277:36;9301:11;9277:23;:36::i;:::-;9150:163;9130:183;;9011:310;;;:::o;18465:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8984:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9331:155::-;9399:13;9425:21;9449:4;9425:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9471:7;9464:14;;;9331:155;;;:::o;19198:99::-;19250:7;19277:12;;19270:19;;19198:99;:::o;11023:442::-;11264:12;:10;:12::i;:::-;11256:20;;:4;:20;;;:60;;;;11280:36;11297:4;11303:12;:10;:12::i;:::-;11280:16;:36::i;:::-;11256:60;11234:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;11405:52;11428:4;11434:2;11438:3;11443:7;11452:4;11405:22;:52::i;:::-;11023:442;;;;;:::o;9739:524::-;9895:16;9956:3;:10;9937:8;:15;:29;9929:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;10025:30;10072:8;:15;10058:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10025:63;;10106:9;10101:122;10125:8;:15;10121:1;:19;10101:122;;;10181:30;10191:8;10200:1;10191:11;;;;;;;;;;;;;;;;;;;;;;10204:3;10208:1;10204:6;;;;;;;;;;;;;;;;;;;;;;10181:9;:30::i;:::-;10162:13;10176:1;10162:16;;;;;;;;;;;;;;;;;;;;;:49;;;;;10142:3;;;;:::i;:::-;;;10101:122;;;;10242:13;10235:20;;;9739:524;;;;:::o;19097:93::-;7978:12;:10;:12::i;:::-;7967:23;;:7;:5;:7::i;:::-;:23;;;7959:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19175:7:::1;19168:4;:14;;;;;;;;;;;;:::i;:::-;;19097:93:::0;:::o;18871:218::-;18982:6;18978:104;18998:3;:10;18994:1;:14;18978:104;;;19030:36;19036:5;19042:3;19046:1;19042:6;;;;;;;;;;;;;;;;;;;;;;19050:7;19059:6;19030:5;:36::i;:::-;19010:3;;;;;:::i;:::-;;;;18978:104;;;;18871:218;;;;:::o;7830:87::-;7876:7;7903:6;;;;;;;;;;;7896:13;;7830:87;:::o;18490:20::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10273:155::-;10368:52;10387:12;:10;:12::i;:::-;10401:8;10411;10368:18;:52::i;:::-;10273:155;;:::o;18720:143::-;18821:34;18827:5;18834:3;18839:7;18848:6;18821:5;:34::i;:::-;18720:143;;;;:::o;10436:168::-;10535:4;10559:18;:27;10578:7;10559:27;;;;;;;;;;;;;;;:37;10587:8;10559:37;;;;;;;;;;;;;;;;;;;;;;;;;10552:44;;10436:168;;;;:::o;10614:401::-;10830:12;:10;:12::i;:::-;10822:20;;:4;:20;;;:60;;;;10846:36;10863:4;10869:12;:10;:12::i;:::-;10846:16;:36::i;:::-;10822:60;10800:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;10962:45;10980:4;10986:2;10990;10994:6;11002:4;10962:17;:45::i;:::-;10614:401;;;;;:::o;8057:201::-;7978:12;:10;:12::i;:::-;7967:23;;:7;:5;:7::i;:::-;:23;;;7959:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8166:1:::1;8146:22;;:8;:22;;;;8138:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8222:28;8241:8;8222:18;:28::i;:::-;8057:201:::0;:::o;3493:157::-;3578:4;3617:25;3602:40;;;:11;:40;;;;3595:47;;3493:157;;;:::o;7370:98::-;7423:7;7450:10;7443:17;;7370:98;:::o;12303:1074::-;12530:7;:14;12516:3;:10;:28;12508:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;12622:1;12608:16;;:2;:16;;;;12600:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;12679:16;12698:12;:10;:12::i;:::-;12679:31;;12723:60;12744:8;12754:4;12760:2;12764:3;12769:7;12778:4;12723:20;:60::i;:::-;12801:9;12796:421;12820:3;:10;12816:1;:14;12796:421;;;12852:10;12865:3;12869:1;12865:6;;;;;;;;;;;;;;;;;;;;;;12852:19;;12886:14;12903:7;12911:1;12903:10;;;;;;;;;;;;;;;;;;;;;;12886:27;;12930:19;12952:9;:13;12962:2;12952:13;;;;;;;;;;;:19;12966:4;12952:19;;;;;;;;;;;;;;;;12930:41;;13009:6;12994:11;:21;;12986:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;13142:6;13128:11;:20;13106:9;:13;13116:2;13106:13;;;;;;;;;;;:19;13120:4;13106:19;;;;;;;;;;;;;;;:42;;;;13199:6;13178:9;:13;13188:2;13178:13;;;;;;;;;;;:17;13192:2;13178:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;12796:421;;;12832:3;;;;:::i;:::-;;;12796:421;;;;13264:2;13234:47;;13258:4;13234:47;;13248:8;13234:47;;;13268:3;13273:7;13234:47;;;;;;;:::i;:::-;;;;;;;;13294:75;13330:8;13340:4;13346:2;13350:3;13355:7;13364:4;13294:35;:75::i;:::-;12303:1074;;;;;;:::o;13481:288::-;13628:16;13647:12;:10;:12::i;:::-;13628:31;;13691:6;13670:9;:13;13680:2;13670:13;;;;;;;;;;;:17;13684:2;13670:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;13744:2;13713:46;;13738:4;13713:46;;13728:8;13713:46;;;13748:2;13752:6;13713:46;;;;;;;:::i;:::-;;;;;;;;13481:288;;;;;:::o;16077:331::-;16232:8;16223:17;;:5;:17;;;;16215:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16335:8;16297:18;:25;16316:5;16297:25;;;;;;;;;;;;;;;:35;16323:8;16297:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;16381:8;16359:41;;16374:5;16359:41;;;16391:8;16359:41;;;;;;:::i;:::-;;;;;;;;16077:331;;;:::o;11475:820::-;11677:1;11663:16;;:2;:16;;;;11655:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;11734:16;11753:12;:10;:12::i;:::-;11734:31;;11778:96;11799:8;11809:4;11815:2;11819:21;11837:2;11819:17;:21::i;:::-;11842:25;11860:6;11842:17;:25::i;:::-;11869:4;11778:20;:96::i;:::-;11887:19;11909:9;:13;11919:2;11909:13;;;;;;;;;;;:19;11923:4;11909:19;;;;;;;;;;;;;;;;11887:41;;11962:6;11947:11;:21;;11939:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;12087:6;12073:11;:20;12051:9;:13;12061:2;12051:13;;;;;;;;;;;:19;12065:4;12051:19;;;;;;;;;;;;;;;:42;;;;12136:6;12115:9;:13;12125:2;12115:13;;;;;;;;;;;:17;12129:2;12115:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;12191:2;12160:46;;12185:4;12160:46;;12175:8;12160:46;;;12195:2;12199:6;12160:46;;;;;;;:::i;:::-;;;;;;;;12219:68;12250:8;12260:4;12266:2;12270;12274:6;12282:4;12219:30;:68::i;:::-;11475:820;;;;;;;:::o;8266:191::-;8340:16;8359:6;;;;;;;;;;;8340:25;;8385:8;8376:6;;:17;;;;;;;;;;;;;;;;;;8440:8;8409:40;;8430:8;8409:40;;;;;;;;;;;;8266:191;;:::o;16418:221::-;;;;;;;:::o;17399:813::-;17639:15;:2;:13;;;:15::i;:::-;17635:570;;;17692:2;17675:43;;;17719:8;17729:4;17735:3;17740:7;17749:4;17675:79;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;17671:523;;;;:::i;:::-;;;;;;;;18067:6;18060:14;;;;;;;;;;;:::i;:::-;;;;;;;;17671:523;18116:62;;;;;;;;;;:::i;:::-;;;;;;;;17671:523;17848:48;;;17836:60;;;:8;:60;;;;17832:159;;17921:50;;;;;;;;;;:::i;:::-;;;;;;;;17832:159;17755:251;17635:570;17399:813;;;;;;:::o;18220:198::-;18286:16;18315:22;18354:1;18340:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18315:41;;18378:7;18367:5;18373:1;18367:8;;;;;;;;;;;;;;;;;;;;;:18;;;;;18405:5;18398:12;;;18220:198;;;:::o;16647:744::-;16862:15;:2;:13;;;:15::i;:::-;16858:526;;;16915:2;16898:38;;;16937:8;16947:4;16953:2;16957:6;16965:4;16898:72;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;16894:479;;;;:::i;:::-;;;;;;;;17246:6;17239:14;;;;;;;;;;;:::i;:::-;;;;;;;;16894:479;17295:62;;;;;;;;;;:::i;:::-;;;;;;;;16894:479;17032:43;;;17020:55;;;:8;:55;;;;17016:154;;17100:50;;;;;;;;;;:::i;:::-;;;;;;;;17016:154;16971:214;16858:526;16647:744;;;;;;:::o;3682:117::-;3742:4;3790:1;3768:7;:12;;;;;;;;;;;;;;;;;;;;;;;;;:19;:23;3761:30;;3682:117;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:622:1:-;;145:80;160:64;217:6;160:64;:::i;:::-;145:80;:::i;:::-;136:89;;245:5;273:6;266:5;259:21;299:4;292:5;288:16;281:23;;324:6;374:3;366:4;358:6;354:17;349:3;345:27;342:36;339:2;;;391:1;388;381:12;339:2;419:1;404:236;429:6;426:1;423:13;404:236;;;496:3;524:37;557:3;545:10;524:37;:::i;:::-;519:3;512:50;591:4;586:3;582:14;575:21;;625:4;620:3;616:14;609:21;;464:176;451:1;448;444:9;439:14;;404:236;;;408:14;126:520;;;;;;;:::o;669:622::-;;790:80;805:64;862:6;805:64;:::i;:::-;790:80;:::i;:::-;781:89;;890:5;918:6;911:5;904:21;944:4;937:5;933:16;926:23;;969:6;1019:3;1011:4;1003:6;999:17;994:3;990:27;987:36;984:2;;;1036:1;1033;1026:12;984:2;1064:1;1049:236;1074:6;1071:1;1068:13;1049:236;;;1141:3;1169:37;1202:3;1190:10;1169:37;:::i;:::-;1164:3;1157:50;1236:4;1231:3;1227:14;1220:21;;1270:4;1265:3;1261:14;1254:21;;1109:176;1096:1;1093;1089:9;1084:14;;1049:236;;;1053:14;771:520;;;;;;;:::o;1297:342::-;;1399:64;1414:48;1455:6;1414:48;:::i;:::-;1399:64;:::i;:::-;1390:73;;1486:6;1479:5;1472:21;1524:4;1517:5;1513:16;1562:3;1553:6;1548:3;1544:16;1541:25;1538:2;;;1579:1;1576;1569:12;1538:2;1592:41;1626:6;1621:3;1616;1592:41;:::i;:::-;1380:259;;;;;;:::o;1645:344::-;;1748:65;1763:49;1805:6;1763:49;:::i;:::-;1748:65;:::i;:::-;1739:74;;1836:6;1829:5;1822:21;1874:4;1867:5;1863:16;1912:3;1903:6;1898:3;1894:16;1891:25;1888:2;;;1929:1;1926;1919:12;1888:2;1942:41;1976:6;1971:3;1966;1942:41;:::i;:::-;1729:260;;;;;;:::o;1995:139::-;;2079:6;2066:20;2057:29;;2095:33;2122:5;2095:33;:::i;:::-;2047:87;;;;:::o;2157:303::-;;2277:3;2270:4;2262:6;2258:17;2254:27;2244:2;;2295:1;2292;2285:12;2244:2;2335:6;2322:20;2360:94;2450:3;2442:6;2435:4;2427:6;2423:17;2360:94;:::i;:::-;2351:103;;2234:226;;;;;:::o;2483:303::-;;2603:3;2596:4;2588:6;2584:17;2580:27;2570:2;;2621:1;2618;2611:12;2570:2;2661:6;2648:20;2686:94;2776:3;2768:6;2761:4;2753:6;2749:17;2686:94;:::i;:::-;2677:103;;2560:226;;;;;:::o;2792:133::-;;2873:6;2860:20;2851:29;;2889:30;2913:5;2889:30;:::i;:::-;2841:84;;;;:::o;2931:137::-;;3014:6;3001:20;2992:29;;3030:32;3056:5;3030:32;:::i;:::-;2982:86;;;;:::o;3074:141::-;;3161:6;3155:13;3146:22;;3177:32;3203:5;3177:32;:::i;:::-;3136:79;;;;:::o;3234:271::-;;3338:3;3331:4;3323:6;3319:17;3315:27;3305:2;;3356:1;3353;3346:12;3305:2;3396:6;3383:20;3421:78;3495:3;3487:6;3480:4;3472:6;3468:17;3421:78;:::i;:::-;3412:87;;3295:210;;;;;:::o;3525:273::-;;3630:3;3623:4;3615:6;3611:17;3607:27;3597:2;;3648:1;3645;3638:12;3597:2;3688:6;3675:20;3713:79;3788:3;3780:6;3773:4;3765:6;3761:17;3713:79;:::i;:::-;3704:88;;3587:211;;;;;:::o;3804:139::-;;3888:6;3875:20;3866:29;;3904:33;3931:5;3904:33;:::i;:::-;3856:87;;;;:::o;3949:262::-;;4057:2;4045:9;4036:7;4032:23;4028:32;4025:2;;;4073:1;4070;4063:12;4025:2;4116:1;4141:53;4186:7;4177:6;4166:9;4162:22;4141:53;:::i;:::-;4131:63;;4087:117;4015:196;;;;:::o;4217:407::-;;;4342:2;4330:9;4321:7;4317:23;4313:32;4310:2;;;4358:1;4355;4348:12;4310:2;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4300:324;;;;;:::o;4630:1241::-;;;;;;4865:3;4853:9;4844:7;4840:23;4836:33;4833:2;;;4882:1;4879;4872:12;4833:2;4925:1;4950:53;4995:7;4986:6;4975:9;4971:22;4950:53;:::i;:::-;4940:63;;4896:117;5052:2;5078:53;5123:7;5114:6;5103:9;5099:22;5078:53;:::i;:::-;5068:63;;5023:118;5208:2;5197:9;5193:18;5180:32;5239:18;5231:6;5228:30;5225:2;;;5271:1;5268;5261:12;5225:2;5299:78;5369:7;5360:6;5349:9;5345:22;5299:78;:::i;:::-;5289:88;;5151:236;5454:2;5443:9;5439:18;5426:32;5485:18;5477:6;5474:30;5471:2;;;5517:1;5514;5507:12;5471:2;5545:78;5615:7;5606:6;5595:9;5591:22;5545:78;:::i;:::-;5535:88;;5397:236;5700:3;5689:9;5685:19;5672:33;5732:18;5724:6;5721:30;5718:2;;;5764:1;5761;5754:12;5718:2;5792:62;5846:7;5837:6;5826:9;5822:22;5792:62;:::i;:::-;5782:72;;5643:221;4823:1048;;;;;;;;:::o;5877:698::-;;;;;6036:3;6024:9;6015:7;6011:23;6007:33;6004:2;;;6053:1;6050;6043:12;6004:2;6096:1;6121:53;6166:7;6157:6;6146:9;6142:22;6121:53;:::i;:::-;6111:63;;6067:117;6223:2;6249:53;6294:7;6285:6;6274:9;6270:22;6249:53;:::i;:::-;6239:63;;6194:118;6351:2;6377:53;6422:7;6413:6;6402:9;6398:22;6377:53;:::i;:::-;6367:63;;6322:118;6479:2;6505:53;6550:7;6541:6;6530:9;6526:22;6505:53;:::i;:::-;6495:63;;6450:118;5994:581;;;;;;;:::o;6581:955::-;;;;;;6766:3;6754:9;6745:7;6741:23;6737:33;6734:2;;;6783:1;6780;6773:12;6734:2;6826:1;6851:53;6896:7;6887:6;6876:9;6872:22;6851:53;:::i;:::-;6841:63;;6797:117;6953:2;6979:53;7024:7;7015:6;7004:9;7000:22;6979:53;:::i;:::-;6969:63;;6924:118;7081:2;7107:53;7152:7;7143:6;7132:9;7128:22;7107:53;:::i;:::-;7097:63;;7052:118;7209:2;7235:53;7280:7;7271:6;7260:9;7256:22;7235:53;:::i;:::-;7225:63;;7180:118;7365:3;7354:9;7350:19;7337:33;7397:18;7389:6;7386:30;7383:2;;;7429:1;7426;7419:12;7383:2;7457:62;7511:7;7502:6;7491:9;7487:22;7457:62;:::i;:::-;7447:72;;7308:221;6724:812;;;;;;;;:::o;7542:841::-;;;;;7726:3;7714:9;7705:7;7701:23;7697:33;7694:2;;;7743:1;7740;7733:12;7694:2;7786:1;7811:53;7856:7;7847:6;7836:9;7832:22;7811:53;:::i;:::-;7801:63;;7757:117;7941:2;7930:9;7926:18;7913:32;7972:18;7964:6;7961:30;7958:2;;;8004:1;8001;7994:12;7958:2;8032:78;8102:7;8093:6;8082:9;8078:22;8032:78;:::i;:::-;8022:88;;7884:236;8159:2;8185:53;8230:7;8221:6;8210:9;8206:22;8185:53;:::i;:::-;8175:63;;8130:118;8287:2;8313:53;8358:7;8349:6;8338:9;8334:22;8313:53;:::i;:::-;8303:63;;8258:118;7684:699;;;;;;;:::o;8389:401::-;;;8511:2;8499:9;8490:7;8486:23;8482:32;8479:2;;;8527:1;8524;8517:12;8479:2;8570:1;8595:53;8640:7;8631:6;8620:9;8616:22;8595:53;:::i;:::-;8585:63;;8541:117;8697:2;8723:50;8765:7;8756:6;8745:9;8741:22;8723:50;:::i;:::-;8713:60;;8668:115;8469:321;;;;;:::o;8796:407::-;;;8921:2;8909:9;8900:7;8896:23;8892:32;8889:2;;;8937:1;8934;8927:12;8889:2;8980:1;9005:53;9050:7;9041:6;9030:9;9026:22;9005:53;:::i;:::-;8995:63;;8951:117;9107:2;9133:53;9178:7;9169:6;9158:9;9154:22;9133:53;:::i;:::-;9123:63;;9078:118;8879:324;;;;;:::o;9209:693::-;;;9384:2;9372:9;9363:7;9359:23;9355:32;9352:2;;;9400:1;9397;9390:12;9352:2;9471:1;9460:9;9456:17;9443:31;9501:18;9493:6;9490:30;9487:2;;;9533:1;9530;9523:12;9487:2;9561:78;9631:7;9622:6;9611:9;9607:22;9561:78;:::i;:::-;9551:88;;9414:235;9716:2;9705:9;9701:18;9688:32;9747:18;9739:6;9736:30;9733:2;;;9779:1;9776;9769:12;9733:2;9807:78;9877:7;9868:6;9857:9;9853:22;9807:78;:::i;:::-;9797:88;;9659:236;9342:560;;;;;:::o;9908:260::-;;10015:2;10003:9;9994:7;9990:23;9986:32;9983:2;;;10031:1;10028;10021:12;9983:2;10074:1;10099:52;10143:7;10134:6;10123:9;10119:22;10099:52;:::i;:::-;10089:62;;10045:116;9973:195;;;;:::o;10174:282::-;;10292:2;10280:9;10271:7;10267:23;10263:32;10260:2;;;10308:1;10305;10298:12;10260:2;10351:1;10376:63;10431:7;10422:6;10411:9;10407:22;10376:63;:::i;:::-;10366:73;;10322:127;10250:206;;;;:::o;10462:375::-;;10580:2;10568:9;10559:7;10555:23;10551:32;10548:2;;;10596:1;10593;10586:12;10548:2;10667:1;10656:9;10652:17;10639:31;10697:18;10689:6;10686:30;10683:2;;;10729:1;10726;10719:12;10683:2;10757:63;10812:7;10803:6;10792:9;10788:22;10757:63;:::i;:::-;10747:73;;10610:220;10538:299;;;;:::o;10843:262::-;;10951:2;10939:9;10930:7;10926:23;10922:32;10919:2;;;10967:1;10964;10957:12;10919:2;11010:1;11035:53;11080:7;11071:6;11060:9;11056:22;11035:53;:::i;:::-;11025:63;;10981:117;10909:196;;;;:::o;11111:179::-;;11201:46;11243:3;11235:6;11201:46;:::i;:::-;11279:4;11274:3;11270:14;11256:28;;11191:99;;;;:::o;11296:118::-;11383:24;11401:5;11383:24;:::i;:::-;11378:3;11371:37;11361:53;;:::o;11450:732::-;;11598:54;11646:5;11598:54;:::i;:::-;11668:86;11747:6;11742:3;11668:86;:::i;:::-;11661:93;;11778:56;11828:5;11778:56;:::i;:::-;11857:7;11888:1;11873:284;11898:6;11895:1;11892:13;11873:284;;;11974:6;11968:13;12001:63;12060:3;12045:13;12001:63;:::i;:::-;11994:70;;12087:60;12140:6;12087:60;:::i;:::-;12077:70;;11933:224;11920:1;11917;11913:9;11908:14;;11873:284;;;11877:14;12173:3;12166:10;;11574:608;;;;;;;:::o;12188:109::-;12269:21;12284:5;12269:21;:::i;:::-;12264:3;12257:34;12247:50;;:::o;12303:360::-;;12417:38;12449:5;12417:38;:::i;:::-;12471:70;12534:6;12529:3;12471:70;:::i;:::-;12464:77;;12550:52;12595:6;12590:3;12583:4;12576:5;12572:16;12550:52;:::i;:::-;12627:29;12649:6;12627:29;:::i;:::-;12622:3;12618:39;12611:46;;12393:270;;;;;:::o;12669:364::-;;12785:39;12818:5;12785:39;:::i;:::-;12840:71;12904:6;12899:3;12840:71;:::i;:::-;12833:78;;12920:52;12965:6;12960:3;12953:4;12946:5;12942:16;12920:52;:::i;:::-;12997:29;13019:6;12997:29;:::i;:::-;12992:3;12988:39;12981:46;;12761:272;;;;;:::o;13039:384::-;;13202:67;13266:2;13261:3;13202:67;:::i;:::-;13195:74;;13299:34;13295:1;13290:3;13286:11;13279:55;13365:22;13360:2;13355:3;13351:12;13344:44;13414:2;13409:3;13405:12;13398:19;;13185:238;;;:::o;13429:372::-;;13592:67;13656:2;13651:3;13592:67;:::i;:::-;13585:74;;13689:34;13685:1;13680:3;13676:11;13669:55;13755:10;13750:2;13745:3;13741:12;13734:32;13792:2;13787:3;13783:12;13776:19;;13575:226;;;:::o;13807:375::-;;13970:67;14034:2;14029:3;13970:67;:::i;:::-;13963:74;;14067:34;14063:1;14058:3;14054:11;14047:55;14133:13;14128:2;14123:3;14119:12;14112:35;14173:2;14168:3;14164:12;14157:19;;13953:229;;;:::o;14188:370::-;;14351:67;14415:2;14410:3;14351:67;:::i;:::-;14344:74;;14448:34;14444:1;14439:3;14435:11;14428:55;14514:8;14509:2;14504:3;14500:12;14493:30;14549:2;14544:3;14540:12;14533:19;;14334:224;;;:::o;14564:373::-;;14727:67;14791:2;14786:3;14727:67;:::i;:::-;14720:74;;14824:34;14820:1;14815:3;14811:11;14804:55;14890:11;14885:2;14880:3;14876:12;14869:33;14928:2;14923:3;14919:12;14912:19;;14710:227;;;:::o;14943:369::-;;15106:67;15170:2;15165:3;15106:67;:::i;:::-;15099:74;;15203:34;15199:1;15194:3;15190:11;15183:55;15269:7;15264:2;15259:3;15255:12;15248:29;15303:2;15298:3;15294:12;15287:19;;15089:223;;;:::o;15318:382::-;;15481:67;15545:2;15540:3;15481:67;:::i;:::-;15474:74;;15578:34;15574:1;15569:3;15565:11;15558:55;15644:20;15639:2;15634:3;15630:12;15623:42;15691:2;15686:3;15682:12;15675:19;;15464:236;;;:::o;15706:374::-;;15869:67;15933:2;15928:3;15869:67;:::i;:::-;15862:74;;15966:34;15962:1;15957:3;15953:11;15946:55;16032:12;16027:2;16022:3;16018:12;16011:34;16071:2;16066:3;16062:12;16055:19;;15852:228;;;:::o;16086:330::-;;16249:67;16313:2;16308:3;16249:67;:::i;:::-;16242:74;;16346:34;16342:1;16337:3;16333:11;16326:55;16407:2;16402:3;16398:12;16391:19;;16232:184;;;:::o;16422:373::-;;16585:67;16649:2;16644:3;16585:67;:::i;:::-;16578:74;;16682:34;16678:1;16673:3;16669:11;16662:55;16748:11;16743:2;16738:3;16734:12;16727:33;16786:2;16781:3;16777:12;16770:19;;16568:227;;;:::o;16801:373::-;;16964:67;17028:2;17023:3;16964:67;:::i;:::-;16957:74;;17061:34;17057:1;17052:3;17048:11;17041:55;17127:11;17122:2;17117:3;17113:12;17106:33;17165:2;17160:3;17156:12;17149:19;;16947:227;;;:::o;17180:372::-;;17343:67;17407:2;17402:3;17343:67;:::i;:::-;17336:74;;17440:34;17436:1;17431:3;17427:11;17420:55;17506:10;17501:2;17496:3;17492:12;17485:32;17543:2;17538:3;17534:12;17527:19;;17326:226;;;:::o;17558:108::-;17635:24;17653:5;17635:24;:::i;:::-;17630:3;17623:37;17613:53;;:::o;17672:118::-;17759:24;17777:5;17759:24;:::i;:::-;17754:3;17747:37;17737:53;;:::o;17796:222::-;;17927:2;17916:9;17912:18;17904:26;;17940:71;18008:1;17997:9;17993:17;17984:6;17940:71;:::i;:::-;17894:124;;;;:::o;18024:1053::-;;18385:3;18374:9;18370:19;18362:27;;18399:71;18467:1;18456:9;18452:17;18443:6;18399:71;:::i;:::-;18480:72;18548:2;18537:9;18533:18;18524:6;18480:72;:::i;:::-;18599:9;18593:4;18589:20;18584:2;18573:9;18569:18;18562:48;18627:108;18730:4;18721:6;18627:108;:::i;:::-;18619:116;;18782:9;18776:4;18772:20;18767:2;18756:9;18752:18;18745:48;18810:108;18913:4;18904:6;18810:108;:::i;:::-;18802:116;;18966:9;18960:4;18956:20;18950:3;18939:9;18935:19;18928:49;18994:76;19065:4;19056:6;18994:76;:::i;:::-;18986:84;;18352:725;;;;;;;;:::o;19083:751::-;;19344:3;19333:9;19329:19;19321:27;;19358:71;19426:1;19415:9;19411:17;19402:6;19358:71;:::i;:::-;19439:72;19507:2;19496:9;19492:18;19483:6;19439:72;:::i;:::-;19521;19589:2;19578:9;19574:18;19565:6;19521:72;:::i;:::-;19603;19671:2;19660:9;19656:18;19647:6;19603:72;:::i;:::-;19723:9;19717:4;19713:20;19707:3;19696:9;19692:19;19685:49;19751:76;19822:4;19813:6;19751:76;:::i;:::-;19743:84;;19311:523;;;;;;;;:::o;19840:373::-;;20021:2;20010:9;20006:18;19998:26;;20070:9;20064:4;20060:20;20056:1;20045:9;20041:17;20034:47;20098:108;20201:4;20192:6;20098:108;:::i;:::-;20090:116;;19988:225;;;;:::o;20219:634::-;;20478:2;20467:9;20463:18;20455:26;;20527:9;20521:4;20517:20;20513:1;20502:9;20498:17;20491:47;20555:108;20658:4;20649:6;20555:108;:::i;:::-;20547:116;;20710:9;20704:4;20700:20;20695:2;20684:9;20680:18;20673:48;20738:108;20841:4;20832:6;20738:108;:::i;:::-;20730:116;;20445:408;;;;;:::o;20859:210::-;;20984:2;20973:9;20969:18;20961:26;;20997:65;21059:1;21048:9;21044:17;21035:6;20997:65;:::i;:::-;20951:118;;;;:::o;21075:313::-;;21226:2;21215:9;21211:18;21203:26;;21275:9;21269:4;21265:20;21261:1;21250:9;21246:17;21239:47;21303:78;21376:4;21367:6;21303:78;:::i;:::-;21295:86;;21193:195;;;;:::o;21394:419::-;;21598:2;21587:9;21583:18;21575:26;;21647:9;21641:4;21637:20;21633:1;21622:9;21618:17;21611:47;21675:131;21801:4;21675:131;:::i;:::-;21667:139;;21565:248;;;:::o;21819:419::-;;22023:2;22012:9;22008:18;22000:26;;22072:9;22066:4;22062:20;22058:1;22047:9;22043:17;22036:47;22100:131;22226:4;22100:131;:::i;:::-;22092:139;;21990:248;;;:::o;22244:419::-;;22448:2;22437:9;22433:18;22425:26;;22497:9;22491:4;22487:20;22483:1;22472:9;22468:17;22461:47;22525:131;22651:4;22525:131;:::i;:::-;22517:139;;22415:248;;;:::o;22669:419::-;;22873:2;22862:9;22858:18;22850:26;;22922:9;22916:4;22912:20;22908:1;22897:9;22893:17;22886:47;22950:131;23076:4;22950:131;:::i;:::-;22942:139;;22840:248;;;:::o;23094:419::-;;23298:2;23287:9;23283:18;23275:26;;23347:9;23341:4;23337:20;23333:1;23322:9;23318:17;23311:47;23375:131;23501:4;23375:131;:::i;:::-;23367:139;;23265:248;;;:::o;23519:419::-;;23723:2;23712:9;23708:18;23700:26;;23772:9;23766:4;23762:20;23758:1;23747:9;23743:17;23736:47;23800:131;23926:4;23800:131;:::i;:::-;23792:139;;23690:248;;;:::o;23944:419::-;;24148:2;24137:9;24133:18;24125:26;;24197:9;24191:4;24187:20;24183:1;24172:9;24168:17;24161:47;24225:131;24351:4;24225:131;:::i;:::-;24217:139;;24115:248;;;:::o;24369:419::-;;24573:2;24562:9;24558:18;24550:26;;24622:9;24616:4;24612:20;24608:1;24597:9;24593:17;24586:47;24650:131;24776:4;24650:131;:::i;:::-;24642:139;;24540:248;;;:::o;24794:419::-;;24998:2;24987:9;24983:18;24975:26;;25047:9;25041:4;25037:20;25033:1;25022:9;25018:17;25011:47;25075:131;25201:4;25075:131;:::i;:::-;25067:139;;24965:248;;;:::o;25219:419::-;;25423:2;25412:9;25408:18;25400:26;;25472:9;25466:4;25462:20;25458:1;25447:9;25443:17;25436:47;25500:131;25626:4;25500:131;:::i;:::-;25492:139;;25390:248;;;:::o;25644:419::-;;25848:2;25837:9;25833:18;25825:26;;25897:9;25891:4;25887:20;25883:1;25872:9;25868:17;25861:47;25925:131;26051:4;25925:131;:::i;:::-;25917:139;;25815:248;;;:::o;26069:419::-;;26273:2;26262:9;26258:18;26250:26;;26322:9;26316:4;26312:20;26308:1;26297:9;26293:17;26286:47;26350:131;26476:4;26350:131;:::i;:::-;26342:139;;26240:248;;;:::o;26494:222::-;;26625:2;26614:9;26610:18;26602:26;;26638:71;26706:1;26695:9;26691:17;26682:6;26638:71;:::i;:::-;26592:124;;;;:::o;26722:332::-;;26881:2;26870:9;26866:18;26858:26;;26894:71;26962:1;26951:9;26947:17;26938:6;26894:71;:::i;:::-;26975:72;27043:2;27032:9;27028:18;27019:6;26975:72;:::i;:::-;26848:206;;;;;:::o;27060:283::-;;27126:2;27120:9;27110:19;;27168:4;27160:6;27156:17;27275:6;27263:10;27260:22;27239:18;27227:10;27224:34;27221:62;27218:2;;;27286:18;;:::i;:::-;27218:2;27326:10;27322:2;27315:22;27100:243;;;;:::o;27349:311::-;;27516:18;27508:6;27505:30;27502:2;;;27538:18;;:::i;:::-;27502:2;27588:4;27580:6;27576:17;27568:25;;27648:4;27642;27638:15;27630:23;;27431:229;;;:::o;27666:311::-;;27833:18;27825:6;27822:30;27819:2;;;27855:18;;:::i;:::-;27819:2;27905:4;27897:6;27893:17;27885:25;;27965:4;27959;27955:15;27947:23;;27748:229;;;:::o;27983:331::-;;28134:18;28126:6;28123:30;28120:2;;;28156:18;;:::i;:::-;28120:2;28241:4;28237:9;28230:4;28222:6;28218:17;28214:33;28206:41;;28302:4;28296;28292:15;28284:23;;28049:265;;;:::o;28320:332::-;;28472:18;28464:6;28461:30;28458:2;;;28494:18;;:::i;:::-;28458:2;28579:4;28575:9;28568:4;28560:6;28556:17;28552:33;28544:41;;28640:4;28634;28630:15;28622:23;;28387:265;;;:::o;28658:132::-;;28748:3;28740:11;;28778:4;28773:3;28769:14;28761:22;;28730:60;;;:::o;28796:114::-;;28897:5;28891:12;28881:22;;28870:40;;;:::o;28916:98::-;;29001:5;28995:12;28985:22;;28974:40;;;:::o;29020:99::-;;29106:5;29100:12;29090:22;;29079:40;;;:::o;29125:113::-;;29227:4;29222:3;29218:14;29210:22;;29200:38;;;:::o;29244:184::-;;29377:6;29372:3;29365:19;29417:4;29412:3;29408:14;29393:29;;29355:73;;;;:::o;29434:168::-;;29551:6;29546:3;29539:19;29591:4;29586:3;29582:14;29567:29;;29529:73;;;;:::o;29608:169::-;;29726:6;29721:3;29714:19;29766:4;29761:3;29757:14;29742:29;;29704:73;;;;:::o;29783:305::-;;29842:20;29860:1;29842:20;:::i;:::-;29837:25;;29876:20;29894:1;29876:20;:::i;:::-;29871:25;;30030:1;29962:66;29958:74;29955:1;29952:81;29949:2;;;30036:18;;:::i;:::-;29949:2;30080:1;30077;30073:9;30066:16;;29827:261;;;;:::o;30094:96::-;;30160:24;30178:5;30160:24;:::i;:::-;30149:35;;30139:51;;;:::o;30196:90::-;;30273:5;30266:13;30259:21;30248:32;;30238:48;;;:::o;30292:149::-;;30368:66;30361:5;30357:78;30346:89;;30336:105;;;:::o;30447:126::-;;30524:42;30517:5;30513:54;30502:65;;30492:81;;;:::o;30579:77::-;;30645:5;30634:16;;30624:32;;;:::o;30662:154::-;30746:6;30741:3;30736;30723:30;30808:1;30799:6;30794:3;30790:16;30783:27;30713:103;;;:::o;30822:307::-;30890:1;30900:113;30914:6;30911:1;30908:13;30900:113;;;30999:1;30994:3;30990:11;30984:18;30980:1;30975:3;30971:11;30964:39;30936:2;30933:1;30929:10;30924:15;;30900:113;;;31031:6;31028:1;31025:13;31022:2;;;31111:1;31102:6;31097:3;31093:16;31086:27;31022:2;30871:258;;;;:::o;31135:320::-;;31216:1;31210:4;31206:12;31196:22;;31263:1;31257:4;31253:12;31284:18;31274:2;;31340:4;31332:6;31328:17;31318:27;;31274:2;31402;31394:6;31391:14;31371:18;31368:38;31365:2;;;31421:18;;:::i;:::-;31365:2;31186:269;;;;:::o;31461:233::-;;31523:24;31541:5;31523:24;:::i;:::-;31514:33;;31569:66;31562:5;31559:77;31556:2;;;31639:18;;:::i;:::-;31556:2;31686:1;31679:5;31675:13;31668:20;;31504:190;;;:::o;31700:180::-;31748:77;31745:1;31738:88;31845:4;31842:1;31835:15;31869:4;31866:1;31859:15;31886:180;31934:77;31931:1;31924:88;32031:4;32028:1;32021:15;32055:4;32052:1;32045:15;32072:180;32120:77;32117:1;32110:88;32217:4;32214:1;32207:15;32241:4;32238:1;32231:15;32258:102;;32350:2;32346:7;32341:2;32334:5;32330:14;32326:28;32316:38;;32306:54;;;:::o;32366:106::-;;32459:5;32454:3;32450:15;32429:36;;32419:53;;;:::o;32478:833::-;;32555:4;32537:16;32534:26;32531:2;;;32563:5;;32531:2;32601:1;32598;32595;32580:23;32623:34;32654:1;32648:8;32623:34;:::i;:::-;32684:10;32679:3;32676:19;32666:2;;32699:5;;;32666:2;32734;32728:9;32792:1;32774:16;32770:24;32767:1;32761:4;32746:49;32825:4;32819:11;32924:16;32917:4;32909:6;32905:17;32902:39;32869:18;32861:6;32858:30;32842:113;32839:2;;;32970:5;;;;;32839:2;33016:6;33010:4;33006:17;33052:3;33046:10;33079:18;33071:6;33068:30;33065:2;;;33101:5;;;;;;;33065:2;33149:6;33142:4;33137:3;33133:14;33129:27;33186:16;33180:4;33176:27;33171:3;33168:36;33165:2;;;33207:5;;;;;;;;33165:2;33255:29;33277:6;33255:29;:::i;:::-;33248:4;33243:3;33239:14;33235:50;33231:2;33224:62;33302:3;33295:10;;32521:790;;;;;;;;:::o;33317:122::-;33390:24;33408:5;33390:24;:::i;:::-;33383:5;33380:35;33370:2;;33429:1;33426;33419:12;33370:2;33360:79;:::o;33445:116::-;33515:21;33530:5;33515:21;:::i;:::-;33508:5;33505:32;33495:2;;33551:1;33548;33541:12;33495:2;33485:76;:::o;33567:120::-;33639:23;33656:5;33639:23;:::i;:::-;33632:5;33629:34;33619:2;;33677:1;33674;33667:12;33619:2;33609:78;:::o;33693:122::-;33766:24;33784:5;33766:24;:::i;:::-;33759:5;33756:35;33746:2;;33805:1;33802;33795:12;33746:2;33736:79;:::o

Swarm Source

ipfs://175f2250d9aa2f857b33200b1b3a05a025c6b8daf7fb7af15ad56a9e380a5985
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.