ETH Price: $2,032.48 (+3.45%)

Contract

0xbf1A67D0063FD86dcc0f620201104E784E5fcb14
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

TokenTracker

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Mint RCSA165810462023-02-08 2:22:111125 days ago1675822931IN
REKT: RCSA Token
0 ETH0.0035029330.28123523
Mint RCSA165810462023-02-08 2:22:111125 days ago1675822931IN
REKT: RCSA Token
0 ETH0.0034213329.57588555
Mint RCSA165809812023-02-08 2:09:111125 days ago1675822151IN
REKT: RCSA Token
0 ETH0.003987834.47271631
Mint RCSA165809542023-02-08 2:03:471125 days ago1675821827IN
REKT: RCSA Token
0 ETH0.0038747433.49541554
Mint RCSA165809292023-02-08 1:58:471125 days ago1675821527IN
REKT: RCSA Token
0 ETH0.0036085331.19407468
Mint RCSA165807392023-02-08 1:20:471125 days ago1675819247IN
REKT: RCSA Token
0 ETH0.0037104232.07488406
Mint RCSA165807162023-02-08 1:16:111125 days ago1675818971IN
REKT: RCSA Token
0 ETH0.0040917935.36070029
Mint RCSA165806982023-02-08 1:12:351125 days ago1675818755IN
REKT: RCSA Token
0 ETH0.0041406335.79015706
Safe Transfer Fr...165806292023-02-08 0:58:351125 days ago1675817915IN
REKT: RCSA Token
0 ETH0.0011529232.08998803
Safe Transfer Fr...165806242023-02-08 0:57:351125 days ago1675817855IN
REKT: RCSA Token
0 ETH0.0017353430.02122477
Mint RCSA165806122023-02-08 0:55:111125 days ago1675817711IN
REKT: RCSA Token
0 ETH0.0036319131.39300254
Mint RCSA165806082023-02-08 0:54:231125 days ago1675817663IN
REKT: RCSA Token
0 ETH0.0037035132.01187231

Advanced mode:
Parent Transaction Hash Method Block
From
To
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
REKT

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 1 of 3: REKT.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8;

import "./ERC1155.sol";
import "./Registry.sol";

interface iREKT {
    function exist(uint256) external view returns (bool);

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

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

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

/// RRRRRRRRRRRRRRRRR   EEEEEEEEEEEEEEEEEEEEEEKKKKKKKKK    KKKKKKKTTTTTTTTTTTTTTTTTTTTTTT
/// R::::::::::::::::R  E::::::::::::::::::::EK:::::::K    K:::::KT:::::::::::::::::::::T
/// R::::::RRRRRR:::::R E::::::::::::::::::::EK:::::::K    K:::::KT:::::::::::::::::::::T
/// RR:::::R     R:::::REE::::::EEEEEEEEE::::EK:::::::K   K::::::KT:::::TT:::::::TT:::::T
///   R::::R     R:::::R  E:::::E       EEEEEEKK::::::K  K:::::KKKTTTTTT  T:::::T  TTTTTT
///   R::::R     R:::::R  E:::::E               K:::::K K:::::K           T:::::T        
///   R::::RRRRRR:::::R   E::::::EEEEEEEEEE     K::::::K:::::K            T:::::T        
///   R:::::::::::::RR    E:::::::::::::::E     K:::::::::::K             T:::::T        
///   R::::RRRRRR:::::R   E:::::::::::::::E     K:::::::::::K             T:::::T        
///   R::::R     R:::::R  E::::::EEEEEEEEEE     K::::::K:::::K            T:::::T        
///   R::::R     R:::::R  E:::::E               K:::::K K:::::K           T:::::T        
///   R::::R     R:::::R  E:::::E       EEEEEEKK::::::K  K:::::KKK        T:::::T        
/// RR:::::R     R:::::REE::::::EEEEEEEE:::::EK:::::::K   K::::::K      TT:::::::TT      
/// R::::::R     R:::::RE::::::::::::::::::::EK:::::::K    K:::::K      T:::::::::T      
/// R::::::R     R:::::RE::::::::::::::::::::EK:::::::K    K:::::K      T:::::::::T      
/// RRRRRRRR     RRRRRRREEEEEEEEEEEEEEEEEEEEEEKKKKKKKKK    KKKKKKK      TTTTTTTTTTT      
                                                                                     
// author: jolan.eth
contract REKT is ERC1155, Registry {
    constructor() {}

    function name() public pure returns (string memory) {
        return "REKT";
    }

    function symbol() public pure returns (string memory) {
        return "RCSA";
    }

    function mintRCSA(
        address source,
        uint256 id,
        uint256 amount
    ) public {
        require(
            source != address(0),
            "REKT::mintRCSA() - source does not exist"
        );

        require(amount > 0, "REKT::mintRCSA() - amount is 0");

        uint256 tokenId = uint256(
            keccak256(abi.encodePacked(uint256(uint160(address(source))), id))
        );

        if (ERC1155.totalSupply(tokenId) == 0) {
            Registry.setRCSARegistration(tokenId, address(source), id);
        }

        ERC1155._mint(msg.sender, tokenId, amount, "");
    }

    function uri(uint256 id) public view returns (string memory) {
        require(ERC1155.totalSupply(id) > 0, "REKT::uri() - id does not exist");
        Registry.RCSA memory Entry = Registry.getREKTRegistry(id);
        iREKT Reader = iREKT(Entry.NFTContract);
        if (Reader.supportsInterface(0x80ac58cd))
            return Reader.tokenURI(Entry.id);
        if (Reader.supportsInterface(0xd9b67a26)) return Reader.uri(Entry.id);
        return "REKT";
    }

    function owner() public pure returns (address) {
        return address(0);
    }

    function encode(bytes memory data) internal pure returns (string memory) {
        uint256 len = data.length;
        if (len == 0) return "";

        uint256 encodedLen = 4 * ((len + 2) / 3);

        bytes memory result = new bytes(encodedLen + 32);

        bytes
            memory table = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

        assembly {
            let tablePtr := add(table, 1)
            let resultPtr := add(result, 32)

            for {
                let i := 0
            } lt(i, len) {

            } {
                i := add(i, 3)
                let input := and(mload(add(data, i)), 0xffffff)

                let out := mload(add(tablePtr, and(shr(18, input), 0x3F)))
                out := shl(8, out)
                out := add(
                    out,
                    and(mload(add(tablePtr, and(shr(12, input), 0x3F))), 0xFF)
                )
                out := shl(8, out)
                out := add(
                    out,
                    and(mload(add(tablePtr, and(shr(6, input), 0x3F))), 0xFF)
                )
                out := shl(8, out)
                out := add(
                    out,
                    and(mload(add(tablePtr, and(input, 0x3F))), 0xFF)
                )
                out := shl(224, out)

                mstore(resultPtr, out)

                resultPtr := add(resultPtr, 4)
            }

            switch mod(len, 3)
            case 1 {
                mstore(sub(resultPtr, 2), shl(240, 0x3d3d))
            }
            case 2 {
                mstore(sub(resultPtr, 1), shl(248, 0x3d))
            }

            mstore(result, encodedLen)
        }

        return string(result);
    }

    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);
    }
}

File 2 of 3: ERC1155.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8;

interface iERC1155 {
    function onERC1155Received(
        address,
        address,
        uint256,
        uint256,
        bytes calldata
    ) external returns (bytes4);

    function onERC1155BatchReceived(
        address,
        address,
        uint256[] calldata,
        uint256[] calldata,
        bytes calldata
    ) external returns (bytes4);
}

// author: jolan.eth
abstract contract ERC1155 {
    mapping(uint256 => uint256) supply;
    mapping(uint256 => mapping(address => uint256)) balances;
    mapping(address => mapping(address => bool)) operatorApprovals;

    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
    );

    function supportsInterface(bytes4 interfaceId) public pure returns (bool) {
        return interfaceId == 0xd9b67a26 || interfaceId == 0x0e89341c;
    }

    function totalSupply(uint256 id) public view returns (uint256) {
        return supply[id];
    }

    function balanceOf(address owner, uint256 id)
        public
        view
        returns (uint256)
    {
        require(
            owner != address(0),
            "ERC1155::balanceOf() - owner is address(0)"
        );
        return balances[id][owner];
    }

    function balanceOfBatch(address[] memory owners, uint256[] memory ids)
        public
        view
        returns (uint256[] memory)
    {
        require(
            owners.length == ids.length,
            "ERC1155::balanceOfBatch() - owners length don't match ids length"
        );

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

        uint256 i = 0;
        while (i < owners.length)
            batchBalances[i] = balanceOf(owners[i], ids[i++]);

        return batchBalances;
    }

    function isApprovedForAll(address owner, address operator)
        public
        view
        returns (bool)
    {
        return operatorApprovals[owner][operator];
    }

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

    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) public {
        require(
            from == msg.sender || isApprovedForAll(from, msg.sender),
            "ERC1155::safeTransferFrom() - msg.sender is not owner or approved"
        );

        uint256 fromBalance = balances[id][from];
        require(
            fromBalance >= amount,
            "ERC1155::safeTransferFrom() - fromBalance is lower than amount"
        );

        unchecked {
            balances[id][from] = fromBalance - amount;
        }

        balances[id][to] += amount;

        emit TransferSingle(msg.sender, from, to, id, amount);
        _doSafeTransferAcceptanceCheck(msg.sender, from, to, id, amount, data);
    }

    function safeBatchTransferFrom(
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) public {
        require(
            from == msg.sender || isApprovedForAll(from, msg.sender),
            "ERC1155::safeBatchTransferFrom() - msg.sender is not owner or approved"
        );

        require(
            ids.length == amounts.length,
            "ERC1155::safeBatchTransferFrom() - ids.length don't match amounts.length"
        );

        require(
            to != address(0),
            "ERC1155::safeBatchTransferFrom() - to is address(0)"
        );

        address operator = msg.sender;

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

            uint256 fromBalance = balances[id][from];
            require(
                fromBalance >= amount,
                "ERC1155::safeBatchTransferFrom() - balance is lower than amount"
            );
            unchecked {
                balances[id][from] = fromBalance - amount;
            }
            balances[id][to] += amount;
            ++i;
        }

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

    function safeBatchTransferFromInternal(
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal {
        require(
            ids.length == amounts.length,
            "ERC1155::safeBatchTransferFrom() - ids.length don't match amounts.length"
        );

        require(
            to != address(0),
            "ERC1155::safeBatchTransferFrom() - to is address(0)"
        );

        address operator = address(this);

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

            uint256 fromBalance = balances[id][from];
            require(
                fromBalance >= amount,
                "ERC1155::safeBatchTransferFrom() - balance is lower than amount"
            );
            unchecked {
                balances[id][from] = fromBalance - amount;
            }
            balances[id][to] += amount;
            ++i;
        }

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

    function _setApprovalForAll(
        address owner,
        address operator,
        bool approved
    ) private {
        require(owner != operator, "error owner");
        operatorApprovals[owner][operator] = approved;
        emit ApprovalForAll(owner, operator, approved);
    }

    function _mint(
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) internal {
        require(to != address(0), "ERC1155::_mint() - to is address(0)");

        supply[id]++;
        balances[id][to] += amount;
        emit TransferSingle(msg.sender, address(0), to, id, amount);
        _doSafeTransferAcceptanceCheck(
            msg.sender,
            address(0),
            to,
            id,
            amount,
            data
        );
    }

    function _doSafeTransferAcceptanceCheck(
        address operator,
        address from,
        address to,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) private {
        uint256 size;
        assembly {
            size := extcodesize(to)
        }
        if (size > 0) {
            try
                iERC1155(to).onERC1155Received(operator, from, id, amount, data)
            returns (bytes4 response) {
                if (response != iERC1155.onERC1155Received.selector) {
                    revert(
                        "ERC1155::doSafeTransferAcceptanceCheck() - error receiver"
                    );
                }
            } catch Error(string memory reason) {
                revert(reason);
            } catch {
                revert(
                    "ERC1155::doSafeTransferAcceptanceCheck() - error receiver"
                );
            }
        }
    }

    function _doSafeBatchTransferAcceptanceCheck(
        address operator,
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) private {
        uint256 size;
        assembly {
            size := extcodesize(to)
        }
        if (size > 0) {
            try
                iERC1155(to).onERC1155BatchReceived(
                    operator,
                    from,
                    ids,
                    amounts,
                    data
                )
            returns (bytes4 response) {
                if (response != iERC1155.onERC1155BatchReceived.selector) {
                    revert(
                        "ERC1155::doSafeTransferAcceptanceCheck() - error receiver"
                    );
                }
            } catch Error(string memory reason) {
                revert(reason);
            } catch {
                revert(
                    "ERC1155::doSafeTransferAcceptanceCheck() - error receiver"
                );
            }
        }
    }
}

File 3 of 3: Registry.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8;

// author: jolan.eth
abstract contract Registry {
    struct RCSA {
        address NFTContract;
        uint256 id;
    }

    mapping(uint256 => RCSA) REKTRegistry;
    
    function getREKTRegistry(uint256 id)
    public view returns (RCSA memory) {
        RCSA storage Object = REKTRegistry[id];
        return Object;
    }

    function setRCSARegistration(uint256 tokenId, address NFTContract, uint256 id)
    internal {
        REKTRegistry[tokenId] = RCSA(
            NFTContract, id
        );
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"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":"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"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"owners","type":"address[]"},{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"balanceOfBatch","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getREKTRegistry","outputs":[{"components":[{"internalType":"address","name":"NFTContract","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"internalType":"struct Registry.RCSA","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"source","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintRCSA","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","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":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"uri","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b50612fa9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100e95760003560e01c806395d89b411161008c578063bd85b03911610066578063bd85b03914610270578063be8fce66146102a0578063e985e9c5146102bc578063f242432a146102ec576100e9565b806395d89b4114610206578063999eed2314610224578063a22cb46514610254576100e9565b80630e89341c116100c85780630e89341c1461016c5780632eb2c2d61461019c5780634e1273f4146101b85780638da5cb5b146101e8576100e9565b8062fdd58e146100ee57806301ffc9a71461011e57806306fdde031461014e575b600080fd5b610108600480360381019061010391906118ef565b610308565b604051610115919061193e565b60405180910390f35b610138600480360381019061013391906119b1565b6103d1565b60405161014591906119f9565b60405180910390f35b610156610433565b6040516101639190611aa4565b60405180910390f35b61018660048036038101906101819190611ac6565b610470565b6040516101939190611aa4565b60405180910390f35b6101b660048036038101906101b19190611cf0565b610731565b005b6101d260048036038101906101cd9190611e82565b610ab1565b6040516101df9190611fb8565b60405180910390f35b6101f0610bca565b6040516101fd9190611fe9565b60405180910390f35b61020e610bcf565b60405161021b9190611aa4565b60405180910390f35b61023e60048036038101906102399190611ac6565b610c0c565b60405161024b9190612042565b60405180910390f35b61026e60048036038101906102699190612089565b610c9f565b005b61028a60048036038101906102859190611ac6565b610cae565b604051610297919061193e565b60405180910390f35b6102ba60048036038101906102b591906120c9565b610cca565b005b6102d660048036038101906102d1919061211c565b610dff565b6040516102e391906119f9565b60405180910390f35b6103066004803603810190610301919061215c565b610e93565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610378576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036f90612265565b60405180910390fd5b6001600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600063d9b67a2660e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061042c5750630e89341c60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60606040518060400160405280600481526020017f52454b5400000000000000000000000000000000000000000000000000000000815250905090565b6060600061047d83610cae565b116104bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104b4906122d1565b60405180910390fd5b60006104c883610c0c565b90506000816000015190508073ffffffffffffffffffffffffffffffffffffffff166301ffc9a76380ac58cd6040518263ffffffff1660e01b81526004016105109190612339565b602060405180830381865afa15801561052d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105519190612369565b156105e2578073ffffffffffffffffffffffffffffffffffffffff1663c87b56dd83602001516040518263ffffffff1660e01b8152600401610593919061193e565b600060405180830381865afa1580156105b0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906105d99190612437565b9250505061072c565b8073ffffffffffffffffffffffffffffffffffffffff166301ffc9a763d9b67a266040518263ffffffff1660e01b815260040161061f91906124bb565b602060405180830381865afa15801561063c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106609190612369565b156106f1578073ffffffffffffffffffffffffffffffffffffffff16630e89341c83602001516040518263ffffffff1660e01b81526004016106a2919061193e565b600060405180830381865afa1580156106bf573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906106e89190612437565b9250505061072c565b6040518060400160405280600481526020017f52454b5400000000000000000000000000000000000000000000000000000000815250925050505b919050565b3373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061077157506107708533610dff565b5b6107b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a79061256e565b60405180910390fd5b81518351146107f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107eb90612626565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a906126b8565b60405180910390fd5b600033905060005b8451811015610a1c576000858281518110610889576108886126d8565b5b6020026020010151905060008583815181106108a8576108a76126d8565b5b6020026020010151905060006001600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561094a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094190612779565b60405180910390fd5b8181036001600085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816001600085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610a0191906127c8565b9250508190555083610a12906127fc565b935050505061086b565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8888604051610a92929190612844565b60405180910390a4610aa88288888888886110fc565b50505050505050565b60608151835114610af7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aee906128ed565b60405180910390fd5b6000835167ffffffffffffffff811115610b1457610b13611af8565b5b604051908082528060200260200182016040528015610b425781602001602082028036833780820191505090505b50905060005b8451811015610bbf57610b9b858281518110610b6757610b666126d8565b5b6020026020010151858380610b7b906127fc565b945081518110610b8e57610b8d6126d8565b5b6020026020010151610308565b828281518110610bae57610bad6126d8565b5b602002602001018181525050610b48565b819250505092915050565b600090565b60606040518060400160405280600481526020017f5243534100000000000000000000000000000000000000000000000000000000815250905090565b610c14611817565b6000600360008481526020019081526020016000209050806040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481525050915050919050565b610caa3383836112bf565b5050565b6000806000838152602001908152602001600020549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d309061297f565b60405180910390fd5b60008111610d7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d73906129eb565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1683604051602001610da7929190612a2c565b6040516020818303038152906040528051906020012060001c90506000610dcd82610cae565b03610dde57610ddd81858561142b565b5b610df9338284604051806020016040528060008152506114c2565b50505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b3373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610ed35750610ed28533610dff565b5b610f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0990612af0565b60405180910390fd5b60006001600085815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610faa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa190612b82565b60405180910390fd5b8281036001600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550826001600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461106191906127c8565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6287876040516110de929190612ba2565b60405180910390a46110f4338787878787611654565b505050505050565b6000843b905060008111156112b6578473ffffffffffffffffffffffffffffffffffffffff1663bc197c8188888787876040518663ffffffff1660e01b815260040161114c959493929190612c20565b6020604051808303816000875af192505050801561118857506040513d601f19601f820116820180604052508101906111859190612c9d565b60015b61122d57611194612cd7565b806308c379a0036111f057506111a8612cf9565b806111b357506111f2565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e79190611aa4565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122490612dfb565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146112b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ab90612dfb565b60405180910390fd5b505b50505050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361132d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132490612e67565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161141e91906119f9565b60405180910390a3505050565b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001828152506003600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155905050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611531576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152890612ef9565b60405180910390fd5b6000808481526020019081526020016000206000815480929190611554906127fc565b9190505550816001600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115b991906127c8565b925050819055508373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628686604051611637929190612ba2565b60405180910390a461164e33600086868686611654565b50505050565b6000843b9050600081111561180e578473ffffffffffffffffffffffffffffffffffffffff1663f23a6e6188888787876040518663ffffffff1660e01b81526004016116a4959493929190612f19565b6020604051808303816000875af19250505080156116e057506040513d601f19601f820116820180604052508101906116dd9190612c9d565b60015b611785576116ec612cd7565b806308c379a0036117485750611700612cf9565b8061170b575061174a565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173f9190611aa4565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177c90612dfb565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461180c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180390612dfb565b60405180910390fd5b505b50505050505050565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006118868261185b565b9050919050565b6118968161187b565b81146118a157600080fd5b50565b6000813590506118b38161188d565b92915050565b6000819050919050565b6118cc816118b9565b81146118d757600080fd5b50565b6000813590506118e9816118c3565b92915050565b6000806040838503121561190657611905611851565b5b6000611914858286016118a4565b9250506020611925858286016118da565b9150509250929050565b611938816118b9565b82525050565b6000602082019050611953600083018461192f565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61198e81611959565b811461199957600080fd5b50565b6000813590506119ab81611985565b92915050565b6000602082840312156119c7576119c6611851565b5b60006119d58482850161199c565b91505092915050565b60008115159050919050565b6119f3816119de565b82525050565b6000602082019050611a0e60008301846119ea565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611a4e578082015181840152602081019050611a33565b60008484015250505050565b6000601f19601f8301169050919050565b6000611a7682611a14565b611a808185611a1f565b9350611a90818560208601611a30565b611a9981611a5a565b840191505092915050565b60006020820190508181036000830152611abe8184611a6b565b905092915050565b600060208284031215611adc57611adb611851565b5b6000611aea848285016118da565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611b3082611a5a565b810181811067ffffffffffffffff82111715611b4f57611b4e611af8565b5b80604052505050565b6000611b62611847565b9050611b6e8282611b27565b919050565b600067ffffffffffffffff821115611b8e57611b8d611af8565b5b602082029050602081019050919050565b600080fd5b6000611bb7611bb284611b73565b611b58565b90508083825260208201905060208402830185811115611bda57611bd9611b9f565b5b835b81811015611c035780611bef88826118da565b845260208401935050602081019050611bdc565b5050509392505050565b600082601f830112611c2257611c21611af3565b5b8135611c32848260208601611ba4565b91505092915050565b600080fd5b600067ffffffffffffffff821115611c5b57611c5a611af8565b5b611c6482611a5a565b9050602081019050919050565b82818337600083830152505050565b6000611c93611c8e84611c40565b611b58565b905082815260208101848484011115611caf57611cae611c3b565b5b611cba848285611c71565b509392505050565b600082601f830112611cd757611cd6611af3565b5b8135611ce7848260208601611c80565b91505092915050565b600080600080600060a08688031215611d0c57611d0b611851565b5b6000611d1a888289016118a4565b9550506020611d2b888289016118a4565b945050604086013567ffffffffffffffff811115611d4c57611d4b611856565b5b611d5888828901611c0d565b935050606086013567ffffffffffffffff811115611d7957611d78611856565b5b611d8588828901611c0d565b925050608086013567ffffffffffffffff811115611da657611da5611856565b5b611db288828901611cc2565b9150509295509295909350565b600067ffffffffffffffff821115611dda57611dd9611af8565b5b602082029050602081019050919050565b6000611dfe611df984611dbf565b611b58565b90508083825260208201905060208402830185811115611e2157611e20611b9f565b5b835b81811015611e4a5780611e3688826118a4565b845260208401935050602081019050611e23565b5050509392505050565b600082601f830112611e6957611e68611af3565b5b8135611e79848260208601611deb565b91505092915050565b60008060408385031215611e9957611e98611851565b5b600083013567ffffffffffffffff811115611eb757611eb6611856565b5b611ec385828601611e54565b925050602083013567ffffffffffffffff811115611ee457611ee3611856565b5b611ef085828601611c0d565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611f2f816118b9565b82525050565b6000611f418383611f26565b60208301905092915050565b6000602082019050919050565b6000611f6582611efa565b611f6f8185611f05565b9350611f7a83611f16565b8060005b83811015611fab578151611f928882611f35565b9750611f9d83611f4d565b925050600181019050611f7e565b5085935050505092915050565b60006020820190508181036000830152611fd28184611f5a565b905092915050565b611fe38161187b565b82525050565b6000602082019050611ffe6000830184611fda565b92915050565b61200d8161187b565b82525050565b6040820160008201516120296000850182612004565b50602082015161203c6020850182611f26565b50505050565b60006040820190506120576000830184612013565b92915050565b612066816119de565b811461207157600080fd5b50565b6000813590506120838161205d565b92915050565b600080604083850312156120a05761209f611851565b5b60006120ae858286016118a4565b92505060206120bf85828601612074565b9150509250929050565b6000806000606084860312156120e2576120e1611851565b5b60006120f0868287016118a4565b9350506020612101868287016118da565b9250506040612112868287016118da565b9150509250925092565b6000806040838503121561213357612132611851565b5b6000612141858286016118a4565b9250506020612152858286016118a4565b9150509250929050565b600080600080600060a0868803121561217857612177611851565b5b6000612186888289016118a4565b9550506020612197888289016118a4565b94505060406121a8888289016118da565b93505060606121b9888289016118da565b925050608086013567ffffffffffffffff8111156121da576121d9611856565b5b6121e688828901611cc2565b9150509295509295909350565b7f455243313135353a3a62616c616e63654f662829202d206f776e65722069732060008201527f6164647265737328302900000000000000000000000000000000000000000000602082015250565b600061224f602a83611a1f565b915061225a826121f3565b604082019050919050565b6000602082019050818103600083015261227e81612242565b9050919050565b7f52454b543a3a7572692829202d20696420646f6573206e6f7420657869737400600082015250565b60006122bb601f83611a1f565b91506122c682612285565b602082019050919050565b600060208201905081810360008301526122ea816122ae565b9050919050565b6000819050919050565b60008160e01b9050919050565b600061232361231e612319846122f1565b6122fb565b611959565b9050919050565b61233381612308565b82525050565b600060208201905061234e600083018461232a565b92915050565b6000815190506123638161205d565b92915050565b60006020828403121561237f5761237e611851565b5b600061238d84828501612354565b91505092915050565b600067ffffffffffffffff8211156123b1576123b0611af8565b5b6123ba82611a5a565b9050602081019050919050565b60006123da6123d584612396565b611b58565b9050828152602081018484840111156123f6576123f5611c3b565b5b612401848285611a30565b509392505050565b600082601f83011261241e5761241d611af3565b5b815161242e8482602086016123c7565b91505092915050565b60006020828403121561244d5761244c611851565b5b600082015167ffffffffffffffff81111561246b5761246a611856565b5b61247784828501612409565b91505092915050565b6000819050919050565b60006124a56124a061249b84612480565b6122fb565b611959565b9050919050565b6124b58161248a565b82525050565b60006020820190506124d060008301846124ac565b92915050565b7f455243313135353a3a7361666542617463685472616e7366657246726f6d282960008201527f202d206d73672e73656e646572206973206e6f74206f776e6572206f7220617060208201527f70726f7665640000000000000000000000000000000000000000000000000000604082015250565b6000612558604683611a1f565b9150612563826124d6565b606082019050919050565b600060208201905081810360008301526125878161254b565b9050919050565b7f455243313135353a3a7361666542617463685472616e7366657246726f6d282960008201527f202d206964732e6c656e67746820646f6e2774206d6174636820616d6f756e7460208201527f732e6c656e677468000000000000000000000000000000000000000000000000604082015250565b6000612610604883611a1f565b915061261b8261258e565b606082019050919050565b6000602082019050818103600083015261263f81612603565b9050919050565b7f455243313135353a3a7361666542617463685472616e7366657246726f6d282960008201527f202d20746f206973206164647265737328302900000000000000000000000000602082015250565b60006126a2603383611a1f565b91506126ad82612646565b604082019050919050565b600060208201905081810360008301526126d181612695565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f455243313135353a3a7361666542617463685472616e7366657246726f6d282960008201527f202d2062616c616e6365206973206c6f776572207468616e20616d6f756e7400602082015250565b6000612763603f83611a1f565b915061276e82612707565b604082019050919050565b6000602082019050818103600083015261279281612756565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006127d3826118b9565b91506127de836118b9565b92508282019050808211156127f6576127f5612799565b5b92915050565b6000612807826118b9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361283957612838612799565b5b600182019050919050565b6000604082019050818103600083015261285e8185611f5a565b905081810360208301526128728184611f5a565b90509392505050565b7f455243313135353a3a62616c616e63654f6642617463682829202d206f776e6560008201527f7273206c656e67746820646f6e2774206d6174636820696473206c656e677468602082015250565b60006128d7604083611a1f565b91506128e28261287b565b604082019050919050565b60006020820190508181036000830152612906816128ca565b9050919050565b7f52454b543a3a6d696e74524353412829202d20736f7572636520646f6573206e60008201527f6f74206578697374000000000000000000000000000000000000000000000000602082015250565b6000612969602883611a1f565b91506129748261290d565b604082019050919050565b600060208201905081810360008301526129988161295c565b9050919050565b7f52454b543a3a6d696e74524353412829202d20616d6f756e7420697320300000600082015250565b60006129d5601e83611a1f565b91506129e08261299f565b602082019050919050565b60006020820190508181036000830152612a04816129c8565b9050919050565b6000819050919050565b612a26612a21826118b9565b612a0b565b82525050565b6000612a388285612a15565b602082019150612a488284612a15565b6020820191508190509392505050565b7f455243313135353a3a736166655472616e7366657246726f6d2829202d206d7360008201527f672e73656e646572206973206e6f74206f776e6572206f7220617070726f766560208201527f6400000000000000000000000000000000000000000000000000000000000000604082015250565b6000612ada604183611a1f565b9150612ae582612a58565b606082019050919050565b60006020820190508181036000830152612b0981612acd565b9050919050565b7f455243313135353a3a736166655472616e7366657246726f6d2829202d20667260008201527f6f6d42616c616e6365206973206c6f776572207468616e20616d6f756e740000602082015250565b6000612b6c603e83611a1f565b9150612b7782612b10565b604082019050919050565b60006020820190508181036000830152612b9b81612b5f565b9050919050565b6000604082019050612bb7600083018561192f565b612bc4602083018461192f565b9392505050565b600081519050919050565b600082825260208201905092915050565b6000612bf282612bcb565b612bfc8185612bd6565b9350612c0c818560208601611a30565b612c1581611a5a565b840191505092915050565b600060a082019050612c356000830188611fda565b612c426020830187611fda565b8181036040830152612c548186611f5a565b90508181036060830152612c688185611f5a565b90508181036080830152612c7c8184612be7565b90509695505050505050565b600081519050612c9781611985565b92915050565b600060208284031215612cb357612cb2611851565b5b6000612cc184828501612c88565b91505092915050565b60008160e01c9050919050565b600060033d1115612cf65760046000803e612cf3600051612cca565b90505b90565b600060443d10612d8657612d0b611847565b60043d036004823e80513d602482011167ffffffffffffffff82111715612d33575050612d86565b808201805167ffffffffffffffff811115612d515750505050612d86565b80602083010160043d038501811115612d6e575050505050612d86565b612d7d82602001850186611b27565b82955050505050505b90565b7f455243313135353a3a646f536166655472616e73666572416363657074616e6360008201527f65436865636b2829202d206572726f7220726563656976657200000000000000602082015250565b6000612de5603983611a1f565b9150612df082612d89565b604082019050919050565b60006020820190508181036000830152612e1481612dd8565b9050919050565b7f6572726f72206f776e6572000000000000000000000000000000000000000000600082015250565b6000612e51600b83611a1f565b9150612e5c82612e1b565b602082019050919050565b60006020820190508181036000830152612e8081612e44565b9050919050565b7f455243313135353a3a5f6d696e742829202d20746f206973206164647265737360008201527f2830290000000000000000000000000000000000000000000000000000000000602082015250565b6000612ee3602383611a1f565b9150612eee82612e87565b604082019050919050565b60006020820190508181036000830152612f1281612ed6565b9050919050565b600060a082019050612f2e6000830188611fda565b612f3b6020830187611fda565b612f48604083018661192f565b612f55606083018561192f565b8181036080830152612f678184612be7565b9050969550505050505056fea264697066735822122003f9969002fdc62455a9c110c621c758363b52b6e527b2e9035909d8af00e33a64736f6c63430008120033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100e95760003560e01c806395d89b411161008c578063bd85b03911610066578063bd85b03914610270578063be8fce66146102a0578063e985e9c5146102bc578063f242432a146102ec576100e9565b806395d89b4114610206578063999eed2314610224578063a22cb46514610254576100e9565b80630e89341c116100c85780630e89341c1461016c5780632eb2c2d61461019c5780634e1273f4146101b85780638da5cb5b146101e8576100e9565b8062fdd58e146100ee57806301ffc9a71461011e57806306fdde031461014e575b600080fd5b610108600480360381019061010391906118ef565b610308565b604051610115919061193e565b60405180910390f35b610138600480360381019061013391906119b1565b6103d1565b60405161014591906119f9565b60405180910390f35b610156610433565b6040516101639190611aa4565b60405180910390f35b61018660048036038101906101819190611ac6565b610470565b6040516101939190611aa4565b60405180910390f35b6101b660048036038101906101b19190611cf0565b610731565b005b6101d260048036038101906101cd9190611e82565b610ab1565b6040516101df9190611fb8565b60405180910390f35b6101f0610bca565b6040516101fd9190611fe9565b60405180910390f35b61020e610bcf565b60405161021b9190611aa4565b60405180910390f35b61023e60048036038101906102399190611ac6565b610c0c565b60405161024b9190612042565b60405180910390f35b61026e60048036038101906102699190612089565b610c9f565b005b61028a60048036038101906102859190611ac6565b610cae565b604051610297919061193e565b60405180910390f35b6102ba60048036038101906102b591906120c9565b610cca565b005b6102d660048036038101906102d1919061211c565b610dff565b6040516102e391906119f9565b60405180910390f35b6103066004803603810190610301919061215c565b610e93565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610378576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036f90612265565b60405180910390fd5b6001600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600063d9b67a2660e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061042c5750630e89341c60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60606040518060400160405280600481526020017f52454b5400000000000000000000000000000000000000000000000000000000815250905090565b6060600061047d83610cae565b116104bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104b4906122d1565b60405180910390fd5b60006104c883610c0c565b90506000816000015190508073ffffffffffffffffffffffffffffffffffffffff166301ffc9a76380ac58cd6040518263ffffffff1660e01b81526004016105109190612339565b602060405180830381865afa15801561052d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105519190612369565b156105e2578073ffffffffffffffffffffffffffffffffffffffff1663c87b56dd83602001516040518263ffffffff1660e01b8152600401610593919061193e565b600060405180830381865afa1580156105b0573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906105d99190612437565b9250505061072c565b8073ffffffffffffffffffffffffffffffffffffffff166301ffc9a763d9b67a266040518263ffffffff1660e01b815260040161061f91906124bb565b602060405180830381865afa15801561063c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106609190612369565b156106f1578073ffffffffffffffffffffffffffffffffffffffff16630e89341c83602001516040518263ffffffff1660e01b81526004016106a2919061193e565b600060405180830381865afa1580156106bf573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906106e89190612437565b9250505061072c565b6040518060400160405280600481526020017f52454b5400000000000000000000000000000000000000000000000000000000815250925050505b919050565b3373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061077157506107708533610dff565b5b6107b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a79061256e565b60405180910390fd5b81518351146107f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107eb90612626565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085a906126b8565b60405180910390fd5b600033905060005b8451811015610a1c576000858281518110610889576108886126d8565b5b6020026020010151905060008583815181106108a8576108a76126d8565b5b6020026020010151905060006001600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561094a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094190612779565b60405180910390fd5b8181036001600085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816001600085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610a0191906127c8565b9250508190555083610a12906127fc565b935050505061086b565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8888604051610a92929190612844565b60405180910390a4610aa88288888888886110fc565b50505050505050565b60608151835114610af7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aee906128ed565b60405180910390fd5b6000835167ffffffffffffffff811115610b1457610b13611af8565b5b604051908082528060200260200182016040528015610b425781602001602082028036833780820191505090505b50905060005b8451811015610bbf57610b9b858281518110610b6757610b666126d8565b5b6020026020010151858380610b7b906127fc565b945081518110610b8e57610b8d6126d8565b5b6020026020010151610308565b828281518110610bae57610bad6126d8565b5b602002602001018181525050610b48565b819250505092915050565b600090565b60606040518060400160405280600481526020017f5243534100000000000000000000000000000000000000000000000000000000815250905090565b610c14611817565b6000600360008481526020019081526020016000209050806040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481525050915050919050565b610caa3383836112bf565b5050565b6000806000838152602001908152602001600020549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d309061297f565b60405180910390fd5b60008111610d7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d73906129eb565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1683604051602001610da7929190612a2c565b6040516020818303038152906040528051906020012060001c90506000610dcd82610cae565b03610dde57610ddd81858561142b565b5b610df9338284604051806020016040528060008152506114c2565b50505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b3373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610ed35750610ed28533610dff565b5b610f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0990612af0565b60405180910390fd5b60006001600085815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610faa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa190612b82565b60405180910390fd5b8281036001600086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550826001600086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461106191906127c8565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6287876040516110de929190612ba2565b60405180910390a46110f4338787878787611654565b505050505050565b6000843b905060008111156112b6578473ffffffffffffffffffffffffffffffffffffffff1663bc197c8188888787876040518663ffffffff1660e01b815260040161114c959493929190612c20565b6020604051808303816000875af192505050801561118857506040513d601f19601f820116820180604052508101906111859190612c9d565b60015b61122d57611194612cd7565b806308c379a0036111f057506111a8612cf9565b806111b357506111f2565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e79190611aa4565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122490612dfb565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146112b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ab90612dfb565b60405180910390fd5b505b50505050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361132d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132490612e67565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161141e91906119f9565b60405180910390a3505050565b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001828152506003600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155905050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611531576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152890612ef9565b60405180910390fd5b6000808481526020019081526020016000206000815480929190611554906127fc565b9190505550816001600085815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115b991906127c8565b925050819055508373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628686604051611637929190612ba2565b60405180910390a461164e33600086868686611654565b50505050565b6000843b9050600081111561180e578473ffffffffffffffffffffffffffffffffffffffff1663f23a6e6188888787876040518663ffffffff1660e01b81526004016116a4959493929190612f19565b6020604051808303816000875af19250505080156116e057506040513d601f19601f820116820180604052508101906116dd9190612c9d565b60015b611785576116ec612cd7565b806308c379a0036117485750611700612cf9565b8061170b575061174a565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173f9190611aa4565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177c90612dfb565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461180c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180390612dfb565b60405180910390fd5b505b50505050505050565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006118868261185b565b9050919050565b6118968161187b565b81146118a157600080fd5b50565b6000813590506118b38161188d565b92915050565b6000819050919050565b6118cc816118b9565b81146118d757600080fd5b50565b6000813590506118e9816118c3565b92915050565b6000806040838503121561190657611905611851565b5b6000611914858286016118a4565b9250506020611925858286016118da565b9150509250929050565b611938816118b9565b82525050565b6000602082019050611953600083018461192f565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61198e81611959565b811461199957600080fd5b50565b6000813590506119ab81611985565b92915050565b6000602082840312156119c7576119c6611851565b5b60006119d58482850161199c565b91505092915050565b60008115159050919050565b6119f3816119de565b82525050565b6000602082019050611a0e60008301846119ea565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611a4e578082015181840152602081019050611a33565b60008484015250505050565b6000601f19601f8301169050919050565b6000611a7682611a14565b611a808185611a1f565b9350611a90818560208601611a30565b611a9981611a5a565b840191505092915050565b60006020820190508181036000830152611abe8184611a6b565b905092915050565b600060208284031215611adc57611adb611851565b5b6000611aea848285016118da565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611b3082611a5a565b810181811067ffffffffffffffff82111715611b4f57611b4e611af8565b5b80604052505050565b6000611b62611847565b9050611b6e8282611b27565b919050565b600067ffffffffffffffff821115611b8e57611b8d611af8565b5b602082029050602081019050919050565b600080fd5b6000611bb7611bb284611b73565b611b58565b90508083825260208201905060208402830185811115611bda57611bd9611b9f565b5b835b81811015611c035780611bef88826118da565b845260208401935050602081019050611bdc565b5050509392505050565b600082601f830112611c2257611c21611af3565b5b8135611c32848260208601611ba4565b91505092915050565b600080fd5b600067ffffffffffffffff821115611c5b57611c5a611af8565b5b611c6482611a5a565b9050602081019050919050565b82818337600083830152505050565b6000611c93611c8e84611c40565b611b58565b905082815260208101848484011115611caf57611cae611c3b565b5b611cba848285611c71565b509392505050565b600082601f830112611cd757611cd6611af3565b5b8135611ce7848260208601611c80565b91505092915050565b600080600080600060a08688031215611d0c57611d0b611851565b5b6000611d1a888289016118a4565b9550506020611d2b888289016118a4565b945050604086013567ffffffffffffffff811115611d4c57611d4b611856565b5b611d5888828901611c0d565b935050606086013567ffffffffffffffff811115611d7957611d78611856565b5b611d8588828901611c0d565b925050608086013567ffffffffffffffff811115611da657611da5611856565b5b611db288828901611cc2565b9150509295509295909350565b600067ffffffffffffffff821115611dda57611dd9611af8565b5b602082029050602081019050919050565b6000611dfe611df984611dbf565b611b58565b90508083825260208201905060208402830185811115611e2157611e20611b9f565b5b835b81811015611e4a5780611e3688826118a4565b845260208401935050602081019050611e23565b5050509392505050565b600082601f830112611e6957611e68611af3565b5b8135611e79848260208601611deb565b91505092915050565b60008060408385031215611e9957611e98611851565b5b600083013567ffffffffffffffff811115611eb757611eb6611856565b5b611ec385828601611e54565b925050602083013567ffffffffffffffff811115611ee457611ee3611856565b5b611ef085828601611c0d565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611f2f816118b9565b82525050565b6000611f418383611f26565b60208301905092915050565b6000602082019050919050565b6000611f6582611efa565b611f6f8185611f05565b9350611f7a83611f16565b8060005b83811015611fab578151611f928882611f35565b9750611f9d83611f4d565b925050600181019050611f7e565b5085935050505092915050565b60006020820190508181036000830152611fd28184611f5a565b905092915050565b611fe38161187b565b82525050565b6000602082019050611ffe6000830184611fda565b92915050565b61200d8161187b565b82525050565b6040820160008201516120296000850182612004565b50602082015161203c6020850182611f26565b50505050565b60006040820190506120576000830184612013565b92915050565b612066816119de565b811461207157600080fd5b50565b6000813590506120838161205d565b92915050565b600080604083850312156120a05761209f611851565b5b60006120ae858286016118a4565b92505060206120bf85828601612074565b9150509250929050565b6000806000606084860312156120e2576120e1611851565b5b60006120f0868287016118a4565b9350506020612101868287016118da565b9250506040612112868287016118da565b9150509250925092565b6000806040838503121561213357612132611851565b5b6000612141858286016118a4565b9250506020612152858286016118a4565b9150509250929050565b600080600080600060a0868803121561217857612177611851565b5b6000612186888289016118a4565b9550506020612197888289016118a4565b94505060406121a8888289016118da565b93505060606121b9888289016118da565b925050608086013567ffffffffffffffff8111156121da576121d9611856565b5b6121e688828901611cc2565b9150509295509295909350565b7f455243313135353a3a62616c616e63654f662829202d206f776e65722069732060008201527f6164647265737328302900000000000000000000000000000000000000000000602082015250565b600061224f602a83611a1f565b915061225a826121f3565b604082019050919050565b6000602082019050818103600083015261227e81612242565b9050919050565b7f52454b543a3a7572692829202d20696420646f6573206e6f7420657869737400600082015250565b60006122bb601f83611a1f565b91506122c682612285565b602082019050919050565b600060208201905081810360008301526122ea816122ae565b9050919050565b6000819050919050565b60008160e01b9050919050565b600061232361231e612319846122f1565b6122fb565b611959565b9050919050565b61233381612308565b82525050565b600060208201905061234e600083018461232a565b92915050565b6000815190506123638161205d565b92915050565b60006020828403121561237f5761237e611851565b5b600061238d84828501612354565b91505092915050565b600067ffffffffffffffff8211156123b1576123b0611af8565b5b6123ba82611a5a565b9050602081019050919050565b60006123da6123d584612396565b611b58565b9050828152602081018484840111156123f6576123f5611c3b565b5b612401848285611a30565b509392505050565b600082601f83011261241e5761241d611af3565b5b815161242e8482602086016123c7565b91505092915050565b60006020828403121561244d5761244c611851565b5b600082015167ffffffffffffffff81111561246b5761246a611856565b5b61247784828501612409565b91505092915050565b6000819050919050565b60006124a56124a061249b84612480565b6122fb565b611959565b9050919050565b6124b58161248a565b82525050565b60006020820190506124d060008301846124ac565b92915050565b7f455243313135353a3a7361666542617463685472616e7366657246726f6d282960008201527f202d206d73672e73656e646572206973206e6f74206f776e6572206f7220617060208201527f70726f7665640000000000000000000000000000000000000000000000000000604082015250565b6000612558604683611a1f565b9150612563826124d6565b606082019050919050565b600060208201905081810360008301526125878161254b565b9050919050565b7f455243313135353a3a7361666542617463685472616e7366657246726f6d282960008201527f202d206964732e6c656e67746820646f6e2774206d6174636820616d6f756e7460208201527f732e6c656e677468000000000000000000000000000000000000000000000000604082015250565b6000612610604883611a1f565b915061261b8261258e565b606082019050919050565b6000602082019050818103600083015261263f81612603565b9050919050565b7f455243313135353a3a7361666542617463685472616e7366657246726f6d282960008201527f202d20746f206973206164647265737328302900000000000000000000000000602082015250565b60006126a2603383611a1f565b91506126ad82612646565b604082019050919050565b600060208201905081810360008301526126d181612695565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f455243313135353a3a7361666542617463685472616e7366657246726f6d282960008201527f202d2062616c616e6365206973206c6f776572207468616e20616d6f756e7400602082015250565b6000612763603f83611a1f565b915061276e82612707565b604082019050919050565b6000602082019050818103600083015261279281612756565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006127d3826118b9565b91506127de836118b9565b92508282019050808211156127f6576127f5612799565b5b92915050565b6000612807826118b9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361283957612838612799565b5b600182019050919050565b6000604082019050818103600083015261285e8185611f5a565b905081810360208301526128728184611f5a565b90509392505050565b7f455243313135353a3a62616c616e63654f6642617463682829202d206f776e6560008201527f7273206c656e67746820646f6e2774206d6174636820696473206c656e677468602082015250565b60006128d7604083611a1f565b91506128e28261287b565b604082019050919050565b60006020820190508181036000830152612906816128ca565b9050919050565b7f52454b543a3a6d696e74524353412829202d20736f7572636520646f6573206e60008201527f6f74206578697374000000000000000000000000000000000000000000000000602082015250565b6000612969602883611a1f565b91506129748261290d565b604082019050919050565b600060208201905081810360008301526129988161295c565b9050919050565b7f52454b543a3a6d696e74524353412829202d20616d6f756e7420697320300000600082015250565b60006129d5601e83611a1f565b91506129e08261299f565b602082019050919050565b60006020820190508181036000830152612a04816129c8565b9050919050565b6000819050919050565b612a26612a21826118b9565b612a0b565b82525050565b6000612a388285612a15565b602082019150612a488284612a15565b6020820191508190509392505050565b7f455243313135353a3a736166655472616e7366657246726f6d2829202d206d7360008201527f672e73656e646572206973206e6f74206f776e6572206f7220617070726f766560208201527f6400000000000000000000000000000000000000000000000000000000000000604082015250565b6000612ada604183611a1f565b9150612ae582612a58565b606082019050919050565b60006020820190508181036000830152612b0981612acd565b9050919050565b7f455243313135353a3a736166655472616e7366657246726f6d2829202d20667260008201527f6f6d42616c616e6365206973206c6f776572207468616e20616d6f756e740000602082015250565b6000612b6c603e83611a1f565b9150612b7782612b10565b604082019050919050565b60006020820190508181036000830152612b9b81612b5f565b9050919050565b6000604082019050612bb7600083018561192f565b612bc4602083018461192f565b9392505050565b600081519050919050565b600082825260208201905092915050565b6000612bf282612bcb565b612bfc8185612bd6565b9350612c0c818560208601611a30565b612c1581611a5a565b840191505092915050565b600060a082019050612c356000830188611fda565b612c426020830187611fda565b8181036040830152612c548186611f5a565b90508181036060830152612c688185611f5a565b90508181036080830152612c7c8184612be7565b90509695505050505050565b600081519050612c9781611985565b92915050565b600060208284031215612cb357612cb2611851565b5b6000612cc184828501612c88565b91505092915050565b60008160e01c9050919050565b600060033d1115612cf65760046000803e612cf3600051612cca565b90505b90565b600060443d10612d8657612d0b611847565b60043d036004823e80513d602482011167ffffffffffffffff82111715612d33575050612d86565b808201805167ffffffffffffffff811115612d515750505050612d86565b80602083010160043d038501811115612d6e575050505050612d86565b612d7d82602001850186611b27565b82955050505050505b90565b7f455243313135353a3a646f536166655472616e73666572416363657074616e6360008201527f65436865636b2829202d206572726f7220726563656976657200000000000000602082015250565b6000612de5603983611a1f565b9150612df082612d89565b604082019050919050565b60006020820190508181036000830152612e1481612dd8565b9050919050565b7f6572726f72206f776e6572000000000000000000000000000000000000000000600082015250565b6000612e51600b83611a1f565b9150612e5c82612e1b565b602082019050919050565b60006020820190508181036000830152612e8081612e44565b9050919050565b7f455243313135353a3a5f6d696e742829202d20746f206973206164647265737360008201527f2830290000000000000000000000000000000000000000000000000000000000602082015250565b6000612ee3602383611a1f565b9150612eee82612e87565b604082019050919050565b60006020820190508181036000830152612f1281612ed6565b9050919050565b600060a082019050612f2e6000830188611fda565b612f3b6020830187611fda565b612f48604083018661192f565b612f55606083018561192f565b8181036080830152612f678184612be7565b9050969550505050505056fea264697066735822122003f9969002fdc62455a9c110c621c758363b52b6e527b2e9035909d8af00e33a64736f6c63430008120033

Deployed Bytecode Sourcemap

1939:3650:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1367:265:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1106:152;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2002:82:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2788:463;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3280:1427:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1638:517;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3257:81:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2090:84;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;232:153:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2339:134:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1264:97;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2180:602:1;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2161:172:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2479:795;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1367:265;1458:7;1519:1;1502:19;;:5;:19;;;1481:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;1606:8;:12;1615:2;1606:12;;;;;;;;;;;:19;1619:5;1606:19;;;;;;;;;;;;;;;;1599:26;;1367:265;;;;:::o;1106:152::-;1174:4;1212:10;1197:25;;:11;:25;;;;:54;;;;1241:10;1226:25;;:11;:25;;;;1197:54;1190:61;;1106:152;;;:::o;2002:82:1:-;2039:13;2064;;;;;;;;;;;;;;;;;;;2002:82;:::o;2788:463::-;2834:13;2893:1;2867:23;2887:2;2867:19;:23::i;:::-;:27;2859:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;2940:26;2969:28;2994:2;2969:24;:28::i;:::-;2940:57;;3007:12;3028:5;:17;;;3007:39;;3060:6;:24;;;3085:10;3060:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3056:86;;;3117:6;:15;;;3133:5;:8;;;3117:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3110:32;;;;;;3056:86;3156:6;:24;;;3181:10;3156:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3152:69;;;3201:6;:10;;;3212:5;:8;;;3201:20;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3194:27;;;;;;3152:69;3231:13;;;;;;;;;;;;;;;;;;;;;2788:463;;;;:::o;3280:1427:0:-;3496:10;3488:18;;:4;:18;;;:56;;;;3510:34;3527:4;3533:10;3510:16;:34::i;:::-;3488:56;3467:173;;;;;;;;;;;;:::i;:::-;;;;;;;;;3686:7;:14;3672:3;:10;:28;3651:147;;;;;;;;;;;;:::i;:::-;;;;;;;;;3844:1;3830:16;;:2;:16;;;3809:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;3934:16;3953:10;3934:29;;3974:9;3997:474;4008:3;:10;4004:1;:14;3997:474;;;4034:10;4047:3;4051:1;4047:6;;;;;;;;:::i;:::-;;;;;;;;4034:19;;4067:14;4084:7;4092:1;4084:10;;;;;;;;:::i;:::-;;;;;;;;4067:27;;4109:19;4131:8;:12;4140:2;4131:12;;;;;;;;;;;:18;4144:4;4131:18;;;;;;;;;;;;;;;;4109:40;;4203:6;4188:11;:21;;4163:143;;;;;;;;;;;;:::i;:::-;;;;;;;;;4383:6;4369:11;:20;4348:8;:12;4357:2;4348:12;;;;;;;;;;;:18;4361:4;4348:18;;;;;;;;;;;;;;;:41;;;;4437:6;4417:8;:12;4426:2;4417:12;;;;;;;;;;;:16;4430:2;4417:16;;;;;;;;;;;;;;;;:26;;;;;;;:::i;:::-;;;;;;;;4457:3;;;;:::i;:::-;;;4020:451;;;3997:474;;;4516:2;4486:47;;4510:4;4486:47;;4500:8;4486:47;;;4520:3;4525:7;4486:47;;;;;;;:::i;:::-;;;;;;;;4543:157;4592:8;4614:4;4632:2;4648:3;4665:7;4686:4;4543:35;:157::i;:::-;3457:1250;;3280:1427;;;;;:::o;1638:517::-;1754:16;1824:3;:10;1807:6;:13;:27;1786:138;;;;;;;;;;;;:::i;:::-;;;;;;;;;1935:30;1982:6;:13;1968:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1935:61;;2007:9;2030:87;2041:6;:13;2037:1;:17;2030:87;;;2087:30;2097:6;2104:1;2097:9;;;;;;;;:::i;:::-;;;;;;;;2108:3;2112;;;;;:::i;:::-;;;2108:8;;;;;;;;:::i;:::-;;;;;;;;2087:9;:30::i;:::-;2068:13;2082:1;2068:16;;;;;;;;:::i;:::-;;;;;;;:49;;;;;2030:87;;;2135:13;2128:20;;;;1638:517;;;;:::o;3257:81:1:-;3295:7;3257:81;:::o;2090:84::-;2129:13;2154;;;;;;;;;;;;;;;;;;;2090:84;:::o;232:153:2:-;294:11;;:::i;:::-;317:19;339:12;:16;352:2;339:16;;;;;;;;;;;317:38;;372:6;365:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;232:153;;;:::o;2339:134:0:-;2416:50;2435:10;2447:8;2457;2416:18;:50::i;:::-;2339:134;;:::o;1264:97::-;1318:7;1344:6;:10;1351:2;1344:10;;;;;;;;;;;;1337:17;;1264:97;;;:::o;2180:602:1:-;2328:1;2310:20;;:6;:20;;;2289:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;2424:1;2415:6;:10;2407:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;2471:15;2561:6;2537:33;;2572:2;2520:55;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2510:66;;;;;;2489:97;;2471:115;;2633:1;2601:28;2621:7;2601:19;:28::i;:::-;:33;2597:122;;2650:58;2679:7;2696:6;2705:2;2650:28;:58::i;:::-;2597:122;2729:46;2743:10;2755:7;2764:6;2729:46;;;;;;;;;;;;:13;:46::i;:::-;2279:503;2180:602;;;:::o;2161:172:0:-;2265:4;2292:17;:24;2310:5;2292:24;;;;;;;;;;;;;;;:34;2317:8;2292:34;;;;;;;;;;;;;;;;;;;;;;;;;2285:41;;2161:172;;;;:::o;2479:795::-;2670:10;2662:18;;:4;:18;;;:56;;;;2684:34;2701:4;2707:10;2684:16;:34::i;:::-;2662:56;2641:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;2820:19;2842:8;:12;2851:2;2842:12;;;;;;;;;;;:18;2855:4;2842:18;;;;;;;;;;;;;;;;2820:40;;2906:6;2891:11;:21;;2870:130;;;;;;;;;;;;:::i;:::-;;;;;;;;;3070:6;3056:11;:20;3035:8;:12;3044:2;3035:12;;;;;;;;;;;:18;3048:4;3035:18;;;;;;;;;;;;;;;:41;;;;3117:6;3097:8;:12;3106:2;3097:12;;;;;;;;;;;:16;3110:2;3097:16;;;;;;;;;;;;;;;;:26;;;;;;;:::i;:::-;;;;;;;;3172:2;3139:48;;3166:4;3139:48;;3154:10;3139:48;;;3176:2;3180:6;3139:48;;;;;;;:::i;:::-;;;;;;;;3197:70;3228:10;3240:4;3246:2;3250;3254:6;3262:4;3197:30;:70::i;:::-;2631:643;2479:795;;;;;:::o;7697:1078::-;7925:12;7990:2;7978:15;7970:23;;8023:1;8016:4;:8;8012:757;;;8069:2;8060:35;;;8117:8;8147:4;8173:3;8198:7;8227:4;8060:189;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;8040:719;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;8592:6;8585:14;;;;;;;;;;;:::i;:::-;;;;;;;;8040:719;;;8639:105;;;;;;;;;;:::i;:::-;;;;;;;;8040:719;8322:40;;;8310:52;;;:8;:52;;;;8306:212;;8386:113;;;;;;;;;;:::i;:::-;;;;;;;;8306:212;8262:270;8012:757;7915:860;7697:1078;;;;;;:::o;5975:283::-;6116:8;6107:17;;:5;:17;;;6099:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;6187:8;6150:17;:24;6168:5;6150:24;;;;;;;;;;;;;;;:34;6175:8;6150:34;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;6232:8;6210:41;;6225:5;6210:41;;;6242:8;6210:41;;;;;;:::i;:::-;;;;;;;;5975:283;;;:::o;391:176:2:-;517:43;;;;;;;;535:11;517:43;;;;;;548:2;517:43;;;493:12;:21;506:7;493:21;;;;;;;;;;;:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;391:176;;;:::o;6264:498:0:-;6417:1;6403:16;;:2;:16;;;6395:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;6470:6;:10;6477:2;6470:10;;;;;;;;;;;;:12;;;;;;;;;:::i;:::-;;;;;;6512:6;6492:8;:12;6501:2;6492:12;;;;;;;;;;;:16;6505:2;6492:16;;;;;;;;;;;;;;;;:26;;;;;;;:::i;:::-;;;;;;;;6572:2;6533:54;;6568:1;6533:54;;6548:10;6533:54;;;6576:2;6580:6;6533:54;;;;;;;:::i;:::-;;;;;;;;6597:158;6641:10;6673:1;6689:2;6705;6721:6;6741:4;6597:30;:158::i;:::-;6264:498;;;;:::o;6768:923::-;6971:12;7036:2;7024:15;7016:23;;7069:1;7062:4;:8;7058:627;;;7115:2;7106:30;;;7137:8;7147:4;7153:2;7157:6;7165:4;7106:64;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;7086:589;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;7508:6;7501:14;;;;;;;;;;;:::i;:::-;;;;;;;;7086:589;;;7555:105;;;;;;;;;;:::i;:::-;;;;;;;;7086:589;7243:35;;;7231:47;;;:8;:47;;;;7227:207;;7302:113;;;;;;;;;;:::i;:::-;;;;;;;;7227:207;7183:265;7058:627;6961:730;6768:923;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:3:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:77::-;878:7;907:5;896:16;;841:77;;;:::o;924:122::-;997:24;1015:5;997:24;:::i;:::-;990:5;987:35;977:63;;1036:1;1033;1026:12;977:63;924:122;:::o;1052:139::-;1098:5;1136:6;1123:20;1114:29;;1152:33;1179:5;1152:33;:::i;:::-;1052:139;;;;:::o;1197:474::-;1265:6;1273;1322:2;1310:9;1301:7;1297:23;1293:32;1290:119;;;1328:79;;:::i;:::-;1290:119;1448:1;1473:53;1518:7;1509:6;1498:9;1494:22;1473:53;:::i;:::-;1463:63;;1419:117;1575:2;1601:53;1646:7;1637:6;1626:9;1622:22;1601:53;:::i;:::-;1591:63;;1546:118;1197:474;;;;;:::o;1677:118::-;1764:24;1782:5;1764:24;:::i;:::-;1759:3;1752:37;1677:118;;:::o;1801:222::-;1894:4;1932:2;1921:9;1917:18;1909:26;;1945:71;2013:1;2002:9;1998:17;1989:6;1945:71;:::i;:::-;1801:222;;;;:::o;2029:149::-;2065:7;2105:66;2098:5;2094:78;2083:89;;2029:149;;;:::o;2184:120::-;2256:23;2273:5;2256:23;:::i;:::-;2249:5;2246:34;2236:62;;2294:1;2291;2284:12;2236:62;2184:120;:::o;2310:137::-;2355:5;2393:6;2380:20;2371:29;;2409:32;2435:5;2409:32;:::i;:::-;2310:137;;;;:::o;2453:327::-;2511:6;2560:2;2548:9;2539:7;2535:23;2531:32;2528:119;;;2566:79;;:::i;:::-;2528:119;2686:1;2711:52;2755:7;2746:6;2735:9;2731:22;2711:52;:::i;:::-;2701:62;;2657:116;2453:327;;;;:::o;2786:90::-;2820:7;2863:5;2856:13;2849:21;2838:32;;2786:90;;;:::o;2882:109::-;2963:21;2978:5;2963:21;:::i;:::-;2958:3;2951:34;2882:109;;:::o;2997:210::-;3084:4;3122:2;3111:9;3107:18;3099:26;;3135:65;3197:1;3186:9;3182:17;3173:6;3135:65;:::i;:::-;2997:210;;;;:::o;3213:99::-;3265:6;3299:5;3293:12;3283:22;;3213:99;;;:::o;3318:169::-;3402:11;3436:6;3431:3;3424:19;3476:4;3471:3;3467:14;3452:29;;3318:169;;;;:::o;3493:246::-;3574:1;3584:113;3598:6;3595:1;3592:13;3584:113;;;3683:1;3678:3;3674:11;3668:18;3664:1;3659:3;3655:11;3648:39;3620:2;3617:1;3613:10;3608:15;;3584:113;;;3731:1;3722:6;3717:3;3713:16;3706:27;3555:184;3493:246;;;:::o;3745:102::-;3786:6;3837:2;3833:7;3828:2;3821:5;3817:14;3813:28;3803:38;;3745:102;;;:::o;3853:377::-;3941:3;3969:39;4002:5;3969:39;:::i;:::-;4024:71;4088:6;4083:3;4024:71;:::i;:::-;4017:78;;4104:65;4162:6;4157:3;4150:4;4143:5;4139:16;4104:65;:::i;:::-;4194:29;4216:6;4194:29;:::i;:::-;4189:3;4185:39;4178:46;;3945:285;3853:377;;;;:::o;4236:313::-;4349:4;4387:2;4376:9;4372:18;4364:26;;4436:9;4430:4;4426:20;4422:1;4411:9;4407:17;4400:47;4464:78;4537:4;4528:6;4464:78;:::i;:::-;4456:86;;4236:313;;;;:::o;4555:329::-;4614:6;4663:2;4651:9;4642:7;4638:23;4634:32;4631:119;;;4669:79;;:::i;:::-;4631:119;4789:1;4814:53;4859:7;4850:6;4839:9;4835:22;4814:53;:::i;:::-;4804:63;;4760:117;4555:329;;;;:::o;4890:117::-;4999:1;4996;4989:12;5013:180;5061:77;5058:1;5051:88;5158:4;5155:1;5148:15;5182:4;5179:1;5172:15;5199:281;5282:27;5304:4;5282:27;:::i;:::-;5274:6;5270:40;5412:6;5400:10;5397:22;5376:18;5364:10;5361:34;5358:62;5355:88;;;5423:18;;:::i;:::-;5355:88;5463:10;5459:2;5452:22;5242:238;5199:281;;:::o;5486:129::-;5520:6;5547:20;;:::i;:::-;5537:30;;5576:33;5604:4;5596:6;5576:33;:::i;:::-;5486:129;;;:::o;5621:311::-;5698:4;5788:18;5780:6;5777:30;5774:56;;;5810:18;;:::i;:::-;5774:56;5860:4;5852:6;5848:17;5840:25;;5920:4;5914;5910:15;5902:23;;5621:311;;;:::o;5938:117::-;6047:1;6044;6037:12;6078:710;6174:5;6199:81;6215:64;6272:6;6215:64;:::i;:::-;6199:81;:::i;:::-;6190:90;;6300:5;6329:6;6322:5;6315:21;6363:4;6356:5;6352:16;6345:23;;6416:4;6408:6;6404:17;6396:6;6392:30;6445:3;6437:6;6434:15;6431:122;;;6464:79;;:::i;:::-;6431:122;6579:6;6562:220;6596:6;6591:3;6588:15;6562:220;;;6671:3;6700:37;6733:3;6721:10;6700:37;:::i;:::-;6695:3;6688:50;6767:4;6762:3;6758:14;6751:21;;6638:144;6622:4;6617:3;6613:14;6606:21;;6562:220;;;6566:21;6180:608;;6078:710;;;;;:::o;6811:370::-;6882:5;6931:3;6924:4;6916:6;6912:17;6908:27;6898:122;;6939:79;;:::i;:::-;6898:122;7056:6;7043:20;7081:94;7171:3;7163:6;7156:4;7148:6;7144:17;7081:94;:::i;:::-;7072:103;;6888:293;6811:370;;;;:::o;7187:117::-;7296:1;7293;7286:12;7310:307;7371:4;7461:18;7453:6;7450:30;7447:56;;;7483:18;;:::i;:::-;7447:56;7521:29;7543:6;7521:29;:::i;:::-;7513:37;;7605:4;7599;7595:15;7587:23;;7310:307;;;:::o;7623:146::-;7720:6;7715:3;7710;7697:30;7761:1;7752:6;7747:3;7743:16;7736:27;7623:146;;;:::o;7775:423::-;7852:5;7877:65;7893:48;7934:6;7893:48;:::i;:::-;7877:65;:::i;:::-;7868:74;;7965:6;7958:5;7951:21;8003:4;7996:5;7992:16;8041:3;8032:6;8027:3;8023:16;8020:25;8017:112;;;8048:79;;:::i;:::-;8017:112;8138:54;8185:6;8180:3;8175;8138:54;:::i;:::-;7858:340;7775:423;;;;;:::o;8217:338::-;8272:5;8321:3;8314:4;8306:6;8302:17;8298:27;8288:122;;8329:79;;:::i;:::-;8288:122;8446:6;8433:20;8471:78;8545:3;8537:6;8530:4;8522:6;8518:17;8471:78;:::i;:::-;8462:87;;8278:277;8217:338;;;;:::o;8561:1509::-;8715:6;8723;8731;8739;8747;8796:3;8784:9;8775:7;8771:23;8767:33;8764:120;;;8803:79;;:::i;:::-;8764:120;8923:1;8948:53;8993:7;8984:6;8973:9;8969:22;8948:53;:::i;:::-;8938:63;;8894:117;9050:2;9076:53;9121:7;9112:6;9101:9;9097:22;9076:53;:::i;:::-;9066:63;;9021:118;9206:2;9195:9;9191:18;9178:32;9237:18;9229:6;9226:30;9223:117;;;9259:79;;:::i;:::-;9223:117;9364:78;9434:7;9425:6;9414:9;9410:22;9364:78;:::i;:::-;9354:88;;9149:303;9519:2;9508:9;9504:18;9491:32;9550:18;9542:6;9539:30;9536:117;;;9572:79;;:::i;:::-;9536:117;9677:78;9747:7;9738:6;9727:9;9723:22;9677:78;:::i;:::-;9667:88;;9462:303;9832:3;9821:9;9817:19;9804:33;9864:18;9856:6;9853:30;9850:117;;;9886:79;;:::i;:::-;9850:117;9991:62;10045:7;10036:6;10025:9;10021:22;9991:62;:::i;:::-;9981:72;;9775:288;8561:1509;;;;;;;;:::o;10076:311::-;10153:4;10243:18;10235:6;10232:30;10229:56;;;10265:18;;:::i;:::-;10229:56;10315:4;10307:6;10303:17;10295:25;;10375:4;10369;10365:15;10357:23;;10076:311;;;:::o;10410:710::-;10506:5;10531:81;10547:64;10604:6;10547:64;:::i;:::-;10531:81;:::i;:::-;10522:90;;10632:5;10661:6;10654:5;10647:21;10695:4;10688:5;10684:16;10677:23;;10748:4;10740:6;10736:17;10728:6;10724:30;10777:3;10769:6;10766:15;10763:122;;;10796:79;;:::i;:::-;10763:122;10911:6;10894:220;10928:6;10923:3;10920:15;10894:220;;;11003:3;11032:37;11065:3;11053:10;11032:37;:::i;:::-;11027:3;11020:50;11099:4;11094:3;11090:14;11083:21;;10970:144;10954:4;10949:3;10945:14;10938:21;;10894:220;;;10898:21;10512:608;;10410:710;;;;;:::o;11143:370::-;11214:5;11263:3;11256:4;11248:6;11244:17;11240:27;11230:122;;11271:79;;:::i;:::-;11230:122;11388:6;11375:20;11413:94;11503:3;11495:6;11488:4;11480:6;11476:17;11413:94;:::i;:::-;11404:103;;11220:293;11143:370;;;;:::o;11519:894::-;11637:6;11645;11694:2;11682:9;11673:7;11669:23;11665:32;11662:119;;;11700:79;;:::i;:::-;11662:119;11848:1;11837:9;11833:17;11820:31;11878:18;11870:6;11867:30;11864:117;;;11900:79;;:::i;:::-;11864:117;12005:78;12075:7;12066:6;12055:9;12051:22;12005:78;:::i;:::-;11995:88;;11791:302;12160:2;12149:9;12145:18;12132:32;12191:18;12183:6;12180:30;12177:117;;;12213:79;;:::i;:::-;12177:117;12318:78;12388:7;12379:6;12368:9;12364:22;12318:78;:::i;:::-;12308:88;;12103:303;11519:894;;;;;:::o;12419:114::-;12486:6;12520:5;12514:12;12504:22;;12419:114;;;:::o;12539:184::-;12638:11;12672:6;12667:3;12660:19;12712:4;12707:3;12703:14;12688:29;;12539:184;;;;:::o;12729:132::-;12796:4;12819:3;12811:11;;12849:4;12844:3;12840:14;12832:22;;12729:132;;;:::o;12867:108::-;12944:24;12962:5;12944:24;:::i;:::-;12939:3;12932:37;12867:108;;:::o;12981:179::-;13050:10;13071:46;13113:3;13105:6;13071:46;:::i;:::-;13149:4;13144:3;13140:14;13126:28;;12981:179;;;;:::o;13166:113::-;13236:4;13268;13263:3;13259:14;13251:22;;13166:113;;;:::o;13315:732::-;13434:3;13463:54;13511:5;13463:54;:::i;:::-;13533:86;13612:6;13607:3;13533:86;:::i;:::-;13526:93;;13643:56;13693:5;13643:56;:::i;:::-;13722:7;13753:1;13738:284;13763:6;13760:1;13757:13;13738:284;;;13839:6;13833:13;13866:63;13925:3;13910:13;13866:63;:::i;:::-;13859:70;;13952:60;14005:6;13952:60;:::i;:::-;13942:70;;13798:224;13785:1;13782;13778:9;13773:14;;13738:284;;;13742:14;14038:3;14031:10;;13439:608;;;13315:732;;;;:::o;14053:373::-;14196:4;14234:2;14223:9;14219:18;14211:26;;14283:9;14277:4;14273:20;14269:1;14258:9;14254:17;14247:47;14311:108;14414:4;14405:6;14311:108;:::i;:::-;14303:116;;14053:373;;;;:::o;14432:118::-;14519:24;14537:5;14519:24;:::i;:::-;14514:3;14507:37;14432:118;;:::o;14556:222::-;14649:4;14687:2;14676:9;14672:18;14664:26;;14700:71;14768:1;14757:9;14753:17;14744:6;14700:71;:::i;:::-;14556:222;;;;:::o;14784:108::-;14861:24;14879:5;14861:24;:::i;:::-;14856:3;14849:37;14784:108;;:::o;14950:506::-;15091:4;15086:3;15082:14;15185:4;15178:5;15174:16;15168:23;15204:63;15261:4;15256:3;15252:14;15238:12;15204:63;:::i;:::-;15106:171;15357:4;15350:5;15346:16;15340:23;15376:63;15433:4;15428:3;15424:14;15410:12;15376:63;:::i;:::-;15287:162;15060:396;14950:506;;:::o;15462:310::-;15599:4;15637:2;15626:9;15622:18;15614:26;;15650:115;15762:1;15751:9;15747:17;15738:6;15650:115;:::i;:::-;15462:310;;;;:::o;15778:116::-;15848:21;15863:5;15848:21;:::i;:::-;15841:5;15838:32;15828:60;;15884:1;15881;15874:12;15828:60;15778:116;:::o;15900:133::-;15943:5;15981:6;15968:20;15959:29;;15997:30;16021:5;15997:30;:::i;:::-;15900:133;;;;:::o;16039:468::-;16104:6;16112;16161:2;16149:9;16140:7;16136:23;16132:32;16129:119;;;16167:79;;:::i;:::-;16129:119;16287:1;16312:53;16357:7;16348:6;16337:9;16333:22;16312:53;:::i;:::-;16302:63;;16258:117;16414:2;16440:50;16482:7;16473:6;16462:9;16458:22;16440:50;:::i;:::-;16430:60;;16385:115;16039:468;;;;;:::o;16513:619::-;16590:6;16598;16606;16655:2;16643:9;16634:7;16630:23;16626:32;16623:119;;;16661:79;;:::i;:::-;16623:119;16781:1;16806:53;16851:7;16842:6;16831:9;16827:22;16806:53;:::i;:::-;16796:63;;16752:117;16908:2;16934:53;16979:7;16970:6;16959:9;16955:22;16934:53;:::i;:::-;16924:63;;16879:118;17036:2;17062:53;17107:7;17098:6;17087:9;17083:22;17062:53;:::i;:::-;17052:63;;17007:118;16513:619;;;;;:::o;17138:474::-;17206:6;17214;17263:2;17251:9;17242:7;17238:23;17234:32;17231:119;;;17269:79;;:::i;:::-;17231:119;17389:1;17414:53;17459:7;17450:6;17439:9;17435:22;17414:53;:::i;:::-;17404:63;;17360:117;17516:2;17542:53;17587:7;17578:6;17567:9;17563:22;17542:53;:::i;:::-;17532:63;;17487:118;17138:474;;;;;:::o;17618:1089::-;17722:6;17730;17738;17746;17754;17803:3;17791:9;17782:7;17778:23;17774:33;17771:120;;;17810:79;;:::i;:::-;17771:120;17930:1;17955:53;18000:7;17991:6;17980:9;17976:22;17955:53;:::i;:::-;17945:63;;17901:117;18057:2;18083:53;18128:7;18119:6;18108:9;18104:22;18083:53;:::i;:::-;18073:63;;18028:118;18185:2;18211:53;18256:7;18247:6;18236:9;18232:22;18211:53;:::i;:::-;18201:63;;18156:118;18313:2;18339:53;18384:7;18375:6;18364:9;18360:22;18339:53;:::i;:::-;18329:63;;18284:118;18469:3;18458:9;18454:19;18441:33;18501:18;18493:6;18490:30;18487:117;;;18523:79;;:::i;:::-;18487:117;18628:62;18682:7;18673:6;18662:9;18658:22;18628:62;:::i;:::-;18618:72;;18412:288;17618:1089;;;;;;;;:::o;18713:229::-;18853:34;18849:1;18841:6;18837:14;18830:58;18922:12;18917:2;18909:6;18905:15;18898:37;18713:229;:::o;18948:366::-;19090:3;19111:67;19175:2;19170:3;19111:67;:::i;:::-;19104:74;;19187:93;19276:3;19187:93;:::i;:::-;19305:2;19300:3;19296:12;19289:19;;18948:366;;;:::o;19320:419::-;19486:4;19524:2;19513:9;19509:18;19501:26;;19573:9;19567:4;19563:20;19559:1;19548:9;19544:17;19537:47;19601:131;19727:4;19601:131;:::i;:::-;19593:139;;19320:419;;;:::o;19745:181::-;19885:33;19881:1;19873:6;19869:14;19862:57;19745:181;:::o;19932:366::-;20074:3;20095:67;20159:2;20154:3;20095:67;:::i;:::-;20088:74;;20171:93;20260:3;20171:93;:::i;:::-;20289:2;20284:3;20280:12;20273:19;;19932:366;;;:::o;20304:419::-;20470:4;20508:2;20497:9;20493:18;20485:26;;20557:9;20551:4;20547:20;20543:1;20532:9;20528:17;20521:47;20585:131;20711:4;20585:131;:::i;:::-;20577:139;;20304:419;;;:::o;20729:94::-;20783:7;20812:5;20801:16;;20729:94;;;:::o;20829:96::-;20863:8;20912:5;20907:3;20903:15;20882:36;;20829:96;;;:::o;20931:180::-;20997:9;21030:75;21047:57;21062:41;21097:5;21062:41;:::i;:::-;21047:57;:::i;:::-;21030:75;:::i;:::-;21017:88;;20931:180;;;:::o;21117:163::-;21220:53;21267:5;21220:53;:::i;:::-;21215:3;21208:66;21117:163;;:::o;21286:254::-;21395:4;21433:2;21422:9;21418:18;21410:26;;21446:87;21530:1;21519:9;21515:17;21506:6;21446:87;:::i;:::-;21286:254;;;;:::o;21546:137::-;21600:5;21631:6;21625:13;21616:22;;21647:30;21671:5;21647:30;:::i;:::-;21546:137;;;;:::o;21689:345::-;21756:6;21805:2;21793:9;21784:7;21780:23;21776:32;21773:119;;;21811:79;;:::i;:::-;21773:119;21931:1;21956:61;22009:7;22000:6;21989:9;21985:22;21956:61;:::i;:::-;21946:71;;21902:125;21689:345;;;;:::o;22040:308::-;22102:4;22192:18;22184:6;22181:30;22178:56;;;22214:18;;:::i;:::-;22178:56;22252:29;22274:6;22252:29;:::i;:::-;22244:37;;22336:4;22330;22326:15;22318:23;;22040:308;;;:::o;22354:434::-;22443:5;22468:66;22484:49;22526:6;22484:49;:::i;:::-;22468:66;:::i;:::-;22459:75;;22557:6;22550:5;22543:21;22595:4;22588:5;22584:16;22633:3;22624:6;22619:3;22615:16;22612:25;22609:112;;;22640:79;;:::i;:::-;22609:112;22730:52;22775:6;22770:3;22765;22730:52;:::i;:::-;22449:339;22354:434;;;;;:::o;22808:355::-;22875:5;22924:3;22917:4;22909:6;22905:17;22901:27;22891:122;;22932:79;;:::i;:::-;22891:122;23042:6;23036:13;23067:90;23153:3;23145:6;23138:4;23130:6;23126:17;23067:90;:::i;:::-;23058:99;;22881:282;22808:355;;;;:::o;23169:524::-;23249:6;23298:2;23286:9;23277:7;23273:23;23269:32;23266:119;;;23304:79;;:::i;:::-;23266:119;23445:1;23434:9;23430:17;23424:24;23475:18;23467:6;23464:30;23461:117;;;23497:79;;:::i;:::-;23461:117;23602:74;23668:7;23659:6;23648:9;23644:22;23602:74;:::i;:::-;23592:84;;23395:291;23169:524;;;;:::o;23699:94::-;23753:7;23782:5;23771:16;;23699:94;;;:::o;23799:180::-;23865:9;23898:75;23915:57;23930:41;23965:5;23930:41;:::i;:::-;23915:57;:::i;:::-;23898:75;:::i;:::-;23885:88;;23799:180;;;:::o;23985:163::-;24088:53;24135:5;24088:53;:::i;:::-;24083:3;24076:66;23985:163;;:::o;24154:254::-;24263:4;24301:2;24290:9;24286:18;24278:26;;24314:87;24398:1;24387:9;24383:17;24374:6;24314:87;:::i;:::-;24154:254;;;;:::o;24414:294::-;24554:34;24550:1;24542:6;24538:14;24531:58;24623:34;24618:2;24610:6;24606:15;24599:59;24692:8;24687:2;24679:6;24675:15;24668:33;24414:294;:::o;24714:366::-;24856:3;24877:67;24941:2;24936:3;24877:67;:::i;:::-;24870:74;;24953:93;25042:3;24953:93;:::i;:::-;25071:2;25066:3;25062:12;25055:19;;24714:366;;;:::o;25086:419::-;25252:4;25290:2;25279:9;25275:18;25267:26;;25339:9;25333:4;25329:20;25325:1;25314:9;25310:17;25303:47;25367:131;25493:4;25367:131;:::i;:::-;25359:139;;25086:419;;;:::o;25511:296::-;25651:34;25647:1;25639:6;25635:14;25628:58;25720:34;25715:2;25707:6;25703:15;25696:59;25789:10;25784:2;25776:6;25772:15;25765:35;25511:296;:::o;25813:366::-;25955:3;25976:67;26040:2;26035:3;25976:67;:::i;:::-;25969:74;;26052:93;26141:3;26052:93;:::i;:::-;26170:2;26165:3;26161:12;26154:19;;25813:366;;;:::o;26185:419::-;26351:4;26389:2;26378:9;26374:18;26366:26;;26438:9;26432:4;26428:20;26424:1;26413:9;26409:17;26402:47;26466:131;26592:4;26466:131;:::i;:::-;26458:139;;26185:419;;;:::o;26610:238::-;26750:34;26746:1;26738:6;26734:14;26727:58;26819:21;26814:2;26806:6;26802:15;26795:46;26610:238;:::o;26854:366::-;26996:3;27017:67;27081:2;27076:3;27017:67;:::i;:::-;27010:74;;27093:93;27182:3;27093:93;:::i;:::-;27211:2;27206:3;27202:12;27195:19;;26854:366;;;:::o;27226:419::-;27392:4;27430:2;27419:9;27415:18;27407:26;;27479:9;27473:4;27469:20;27465:1;27454:9;27450:17;27443:47;27507:131;27633:4;27507:131;:::i;:::-;27499:139;;27226:419;;;:::o;27651:180::-;27699:77;27696:1;27689:88;27796:4;27793:1;27786:15;27820:4;27817:1;27810:15;27837:250;27977:34;27973:1;27965:6;27961:14;27954:58;28046:33;28041:2;28033:6;28029:15;28022:58;27837:250;:::o;28093:366::-;28235:3;28256:67;28320:2;28315:3;28256:67;:::i;:::-;28249:74;;28332:93;28421:3;28332:93;:::i;:::-;28450:2;28445:3;28441:12;28434:19;;28093:366;;;:::o;28465:419::-;28631:4;28669:2;28658:9;28654:18;28646:26;;28718:9;28712:4;28708:20;28704:1;28693:9;28689:17;28682:47;28746:131;28872:4;28746:131;:::i;:::-;28738:139;;28465:419;;;:::o;28890:180::-;28938:77;28935:1;28928:88;29035:4;29032:1;29025:15;29059:4;29056:1;29049:15;29076:191;29116:3;29135:20;29153:1;29135:20;:::i;:::-;29130:25;;29169:20;29187:1;29169:20;:::i;:::-;29164:25;;29212:1;29209;29205:9;29198:16;;29233:3;29230:1;29227:10;29224:36;;;29240:18;;:::i;:::-;29224:36;29076:191;;;;:::o;29273:233::-;29312:3;29335:24;29353:5;29335:24;:::i;:::-;29326:33;;29381:66;29374:5;29371:77;29368:103;;29451:18;;:::i;:::-;29368:103;29498:1;29491:5;29487:13;29480:20;;29273:233;;;:::o;29512:634::-;29733:4;29771:2;29760:9;29756:18;29748:26;;29820:9;29814:4;29810:20;29806:1;29795:9;29791:17;29784:47;29848:108;29951:4;29942:6;29848:108;:::i;:::-;29840:116;;30003:9;29997:4;29993:20;29988:2;29977:9;29973:18;29966:48;30031:108;30134:4;30125:6;30031:108;:::i;:::-;30023:116;;29512:634;;;;;:::o;30152:251::-;30292:34;30288:1;30280:6;30276:14;30269:58;30361:34;30356:2;30348:6;30344:15;30337:59;30152:251;:::o;30409:366::-;30551:3;30572:67;30636:2;30631:3;30572:67;:::i;:::-;30565:74;;30648:93;30737:3;30648:93;:::i;:::-;30766:2;30761:3;30757:12;30750:19;;30409:366;;;:::o;30781:419::-;30947:4;30985:2;30974:9;30970:18;30962:26;;31034:9;31028:4;31024:20;31020:1;31009:9;31005:17;30998:47;31062:131;31188:4;31062:131;:::i;:::-;31054:139;;30781:419;;;:::o;31206:227::-;31346:34;31342:1;31334:6;31330:14;31323:58;31415:10;31410:2;31402:6;31398:15;31391:35;31206:227;:::o;31439:366::-;31581:3;31602:67;31666:2;31661:3;31602:67;:::i;:::-;31595:74;;31678:93;31767:3;31678:93;:::i;:::-;31796:2;31791:3;31787:12;31780:19;;31439:366;;;:::o;31811:419::-;31977:4;32015:2;32004:9;32000:18;31992:26;;32064:9;32058:4;32054:20;32050:1;32039:9;32035:17;32028:47;32092:131;32218:4;32092:131;:::i;:::-;32084:139;;31811:419;;;:::o;32236:180::-;32376:32;32372:1;32364:6;32360:14;32353:56;32236:180;:::o;32422:366::-;32564:3;32585:67;32649:2;32644:3;32585:67;:::i;:::-;32578:74;;32661:93;32750:3;32661:93;:::i;:::-;32779:2;32774:3;32770:12;32763:19;;32422:366;;;:::o;32794:419::-;32960:4;32998:2;32987:9;32983:18;32975:26;;33047:9;33041:4;33037:20;33033:1;33022:9;33018:17;33011:47;33075:131;33201:4;33075:131;:::i;:::-;33067:139;;32794:419;;;:::o;33219:79::-;33258:7;33287:5;33276:16;;33219:79;;;:::o;33304:157::-;33409:45;33429:24;33447:5;33429:24;:::i;:::-;33409:45;:::i;:::-;33404:3;33397:58;33304:157;;:::o;33467:397::-;33607:3;33622:75;33693:3;33684:6;33622:75;:::i;:::-;33722:2;33717:3;33713:12;33706:19;;33735:75;33806:3;33797:6;33735:75;:::i;:::-;33835:2;33830:3;33826:12;33819:19;;33855:3;33848:10;;33467:397;;;;;:::o;33870:289::-;34010:34;34006:1;33998:6;33994:14;33987:58;34079:34;34074:2;34066:6;34062:15;34055:59;34148:3;34143:2;34135:6;34131:15;34124:28;33870:289;:::o;34165:366::-;34307:3;34328:67;34392:2;34387:3;34328:67;:::i;:::-;34321:74;;34404:93;34493:3;34404:93;:::i;:::-;34522:2;34517:3;34513:12;34506:19;;34165:366;;;:::o;34537:419::-;34703:4;34741:2;34730:9;34726:18;34718:26;;34790:9;34784:4;34780:20;34776:1;34765:9;34761:17;34754:47;34818:131;34944:4;34818:131;:::i;:::-;34810:139;;34537:419;;;:::o;34962:249::-;35102:34;35098:1;35090:6;35086:14;35079:58;35171:32;35166:2;35158:6;35154:15;35147:57;34962:249;:::o;35217:366::-;35359:3;35380:67;35444:2;35439:3;35380:67;:::i;:::-;35373:74;;35456:93;35545:3;35456:93;:::i;:::-;35574:2;35569:3;35565:12;35558:19;;35217:366;;;:::o;35589:419::-;35755:4;35793:2;35782:9;35778:18;35770:26;;35842:9;35836:4;35832:20;35828:1;35817:9;35813:17;35806:47;35870:131;35996:4;35870:131;:::i;:::-;35862:139;;35589:419;;;:::o;36014:332::-;36135:4;36173:2;36162:9;36158:18;36150:26;;36186:71;36254:1;36243:9;36239:17;36230:6;36186:71;:::i;:::-;36267:72;36335:2;36324:9;36320:18;36311:6;36267:72;:::i;:::-;36014:332;;;;;:::o;36352:98::-;36403:6;36437:5;36431:12;36421:22;;36352:98;;;:::o;36456:168::-;36539:11;36573:6;36568:3;36561:19;36613:4;36608:3;36604:14;36589:29;;36456:168;;;;:::o;36630:373::-;36716:3;36744:38;36776:5;36744:38;:::i;:::-;36798:70;36861:6;36856:3;36798:70;:::i;:::-;36791:77;;36877:65;36935:6;36930:3;36923:4;36916:5;36912:16;36877:65;:::i;:::-;36967:29;36989:6;36967:29;:::i;:::-;36962:3;36958:39;36951:46;;36720:283;36630:373;;;;:::o;37009:1053::-;37332:4;37370:3;37359:9;37355:19;37347:27;;37384:71;37452:1;37441:9;37437:17;37428:6;37384:71;:::i;:::-;37465:72;37533:2;37522:9;37518:18;37509:6;37465:72;:::i;:::-;37584:9;37578:4;37574:20;37569:2;37558:9;37554:18;37547:48;37612:108;37715:4;37706:6;37612:108;:::i;:::-;37604:116;;37767:9;37761:4;37757:20;37752:2;37741:9;37737:18;37730:48;37795:108;37898:4;37889:6;37795:108;:::i;:::-;37787:116;;37951:9;37945:4;37941:20;37935:3;37924:9;37920:19;37913:49;37979:76;38050:4;38041:6;37979:76;:::i;:::-;37971:84;;37009:1053;;;;;;;;:::o;38068:141::-;38124:5;38155:6;38149:13;38140:22;;38171:32;38197:5;38171:32;:::i;:::-;38068:141;;;;:::o;38215:349::-;38284:6;38333:2;38321:9;38312:7;38308:23;38304:32;38301:119;;;38339:79;;:::i;:::-;38301:119;38459:1;38484:63;38539:7;38530:6;38519:9;38515:22;38484:63;:::i;:::-;38474:73;;38430:127;38215:349;;;;:::o;38570:106::-;38614:8;38663:5;38658:3;38654:15;38633:36;;38570:106;;;:::o;38682:183::-;38717:3;38755:1;38737:16;38734:23;38731:128;;;38793:1;38790;38787;38772:23;38815:34;38846:1;38840:8;38815:34;:::i;:::-;38808:41;;38731:128;38682:183;:::o;38871:711::-;38910:3;38948:4;38930:16;38927:26;38956:5;38924:39;38985:20;;:::i;:::-;39060:1;39042:16;39038:24;39035:1;39029:4;39014:49;39093:4;39087:11;39192:16;39185:4;39177:6;39173:17;39170:39;39137:18;39129:6;39126:30;39110:113;39107:146;;;39238:5;;;;39107:146;39284:6;39278:4;39274:17;39320:3;39314:10;39347:18;39339:6;39336:30;39333:43;;;39369:5;;;;;;39333:43;39417:6;39410:4;39405:3;39401:14;39397:27;39476:1;39458:16;39454:24;39448:4;39444:35;39439:3;39436:44;39433:57;;;39483:5;;;;;;;39433:57;39500;39548:6;39542:4;39538:17;39530:6;39526:30;39520:4;39500:57;:::i;:::-;39573:3;39566:10;;38914:668;;;;;38871:711;;:::o;39588:244::-;39728:34;39724:1;39716:6;39712:14;39705:58;39797:27;39792:2;39784:6;39780:15;39773:52;39588:244;:::o;39838:366::-;39980:3;40001:67;40065:2;40060:3;40001:67;:::i;:::-;39994:74;;40077:93;40166:3;40077:93;:::i;:::-;40195:2;40190:3;40186:12;40179:19;;39838:366;;;:::o;40210:419::-;40376:4;40414:2;40403:9;40399:18;40391:26;;40463:9;40457:4;40453:20;40449:1;40438:9;40434:17;40427:47;40491:131;40617:4;40491:131;:::i;:::-;40483:139;;40210:419;;;:::o;40635:161::-;40775:13;40771:1;40763:6;40759:14;40752:37;40635:161;:::o;40802:366::-;40944:3;40965:67;41029:2;41024:3;40965:67;:::i;:::-;40958:74;;41041:93;41130:3;41041:93;:::i;:::-;41159:2;41154:3;41150:12;41143:19;;40802:366;;;:::o;41174:419::-;41340:4;41378:2;41367:9;41363:18;41355:26;;41427:9;41421:4;41417:20;41413:1;41402:9;41398:17;41391:47;41455:131;41581:4;41455:131;:::i;:::-;41447:139;;41174:419;;;:::o;41599:222::-;41739:34;41735:1;41727:6;41723:14;41716:58;41808:5;41803:2;41795:6;41791:15;41784:30;41599:222;:::o;41827:366::-;41969:3;41990:67;42054:2;42049:3;41990:67;:::i;:::-;41983:74;;42066:93;42155:3;42066:93;:::i;:::-;42184:2;42179:3;42175:12;42168:19;;41827:366;;;:::o;42199:419::-;42365:4;42403:2;42392:9;42388:18;42380:26;;42452:9;42446:4;42442:20;42438:1;42427:9;42423:17;42416:47;42480:131;42606:4;42480:131;:::i;:::-;42472:139;;42199:419;;;:::o;42624:751::-;42847:4;42885:3;42874:9;42870:19;42862:27;;42899:71;42967:1;42956:9;42952:17;42943:6;42899:71;:::i;:::-;42980:72;43048:2;43037:9;43033:18;43024:6;42980:72;:::i;:::-;43062;43130:2;43119:9;43115:18;43106:6;43062:72;:::i;:::-;43144;43212:2;43201:9;43197:18;43188:6;43144:72;:::i;:::-;43264:9;43258:4;43254:20;43248:3;43237:9;43233:19;43226:49;43292:76;43363:4;43354:6;43292:76;:::i;:::-;43284:84;;42624:751;;;;;;;;:::o

Swarm Source

ipfs://03f9969002fdc62455a9c110c621c758363b52b6e527b2e9035909d8af00e33a

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

OVERVIEW

Right Click Save As any NFT on-chain

Loading...
Loading
[ Download: CSV Export  ]

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