{
    "_format": "hh-sol-artifact-1",
    "contractName": "LockedNORIV1",
    "sourceName": "contracts/deprecated/LockedNORIV1.sol",
    "abi": [
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "value",
                    "type": "uint256"
                }
            ],
            "name": "Approval",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "tokenHolder",
                    "type": "address"
                }
            ],
            "name": "AuthorizedOperator",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "bytes",
                    "name": "data",
                    "type": "bytes"
                },
                {
                    "indexed": false,
                    "internalType": "bytes",
                    "name": "operatorData",
                    "type": "bytes"
                }
            ],
            "name": "Burned",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "uint8",
                    "name": "version",
                    "type": "uint8"
                }
            ],
            "name": "Initialized",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "bytes",
                    "name": "data",
                    "type": "bytes"
                },
                {
                    "indexed": false,
                    "internalType": "bytes",
                    "name": "operatorData",
                    "type": "bytes"
                }
            ],
            "name": "Minted",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "Paused",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "tokenHolder",
                    "type": "address"
                }
            ],
            "name": "RevokedOperator",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                },
                {
                    "indexed": true,
                    "internalType": "bytes32",
                    "name": "previousAdminRole",
                    "type": "bytes32"
                },
                {
                    "indexed": true,
                    "internalType": "bytes32",
                    "name": "newAdminRole",
                    "type": "bytes32"
                }
            ],
            "name": "RoleAdminChanged",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "sender",
                    "type": "address"
                }
            ],
            "name": "RoleGranted",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "sender",
                    "type": "address"
                }
            ],
            "name": "RoleRevoked",
            "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": "amount",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "bytes",
                    "name": "data",
                    "type": "bytes"
                },
                {
                    "indexed": false,
                    "internalType": "bytes",
                    "name": "operatorData",
                    "type": "bytes"
                }
            ],
            "name": "Sent",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "address[]",
                    "name": "recipients",
                    "type": "address[]"
                },
                {
                    "indexed": false,
                    "internalType": "uint256[]",
                    "name": "amounts",
                    "type": "uint256[]"
                },
                {
                    "indexed": false,
                    "internalType": "bytes[]",
                    "name": "userData",
                    "type": "bytes[]"
                },
                {
                    "indexed": false,
                    "internalType": "bytes[]",
                    "name": "operatorData",
                    "type": "bytes[]"
                },
                {
                    "indexed": false,
                    "internalType": "bool[]",
                    "name": "requireReceptionAck",
                    "type": "bool[]"
                }
            ],
            "name": "SentBatch",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "recipient",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "startTime",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "vestEndTime",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "unlockEndTime",
                    "type": "uint256"
                }
            ],
            "name": "TokenGrantCreated",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "quantity",
                    "type": "uint256"
                }
            ],
            "name": "TokensClaimed",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "value",
                    "type": "uint256"
                }
            ],
            "name": "Transfer",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "Unpaused",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "atTime",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "quantity",
                    "type": "uint256"
                }
            ],
            "name": "UnvestedTokensRevoked",
            "type": "event"
        },
        {
            "inputs": [],
            "name": "DEFAULT_ADMIN_ROLE",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "ERC777_TOKENS_RECIPIENT_HASH",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "PAUSER_ROLE",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "TOKEN_GRANTER_ROLE",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "holder",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                }
            ],
            "name": "allowance",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "spender",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "value",
                    "type": "uint256"
                }
            ],
            "name": "approve",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                }
            ],
            "name": "authorizeOperator",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "tokenHolder",
                    "type": "address"
                }
            ],
            "name": "balanceOf",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address[]",
                    "name": "accounts",
                    "type": "address[]"
                }
            ],
            "name": "balanceOfBatch",
            "outputs": [
                {
                    "internalType": "uint256[]",
                    "name": "",
                    "type": "uint256[]"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address[]",
                    "name": "accounts",
                    "type": "address[]"
                }
            ],
            "name": "batchGetGrant",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "uint256",
                            "name": "grantAmount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "address",
                            "name": "recipient",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "startTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "vestEndTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "unlockEndTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "cliff1Time",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "cliff2Time",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "vestCliff1Amount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "vestCliff2Amount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "unlockCliff1Amount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "unlockCliff2Amount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "claimedAmount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "originalAmount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "lastRevocationTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "lastQuantityRevoked",
                            "type": "uint256"
                        },
                        {
                            "internalType": "bool",
                            "name": "exists",
                            "type": "bool"
                        }
                    ],
                    "internalType": "struct LockedNORIV1.TokenGrantDetail[]",
                    "name": "",
                    "type": "tuple[]"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address[]",
                    "name": "fromAccounts",
                    "type": "address[]"
                },
                {
                    "internalType": "address[]",
                    "name": "toAccounts",
                    "type": "address[]"
                },
                {
                    "internalType": "uint256[]",
                    "name": "atTimes",
                    "type": "uint256[]"
                },
                {
                    "internalType": "uint256[]",
                    "name": "amounts",
                    "type": "uint256[]"
                }
            ],
            "name": "batchRevokeUnvestedTokenAmounts",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes",
                    "name": "",
                    "type": "bytes"
                }
            ],
            "name": "burn",
            "outputs": [],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "recipient",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "startTime",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "vestEndTime",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "unlockEndTime",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "cliff1Time",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "cliff2Time",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "vestCliff1Amount",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "vestCliff2Amount",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "unlockCliff1Amount",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "unlockCliff2Amount",
                    "type": "uint256"
                }
            ],
            "name": "createGrant",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "decimals",
            "outputs": [
                {
                    "internalType": "uint8",
                    "name": "",
                    "type": "uint8"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "defaultOperators",
            "outputs": [
                {
                    "internalType": "address[]",
                    "name": "",
                    "type": "address[]"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "getGrant",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "uint256",
                            "name": "grantAmount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "address",
                            "name": "recipient",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "startTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "vestEndTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "unlockEndTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "cliff1Time",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "cliff2Time",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "vestCliff1Amount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "vestCliff2Amount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "unlockCliff1Amount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "unlockCliff2Amount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "claimedAmount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "originalAmount",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "lastRevocationTime",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "lastQuantityRevoked",
                            "type": "uint256"
                        },
                        {
                            "internalType": "bool",
                            "name": "exists",
                            "type": "bool"
                        }
                    ],
                    "internalType": "struct LockedNORIV1.TokenGrantDetail",
                    "name": "",
                    "type": "tuple"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                }
            ],
            "name": "getRoleAdmin",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                },
                {
                    "internalType": "uint256",
                    "name": "index",
                    "type": "uint256"
                }
            ],
            "name": "getRoleMember",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                }
            ],
            "name": "getRoleMemberCount",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "grantRole",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "granularity",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "hasRole",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "contract IERC777Upgradeable",
                    "name": "bridgedPolygonNoriAddress",
                    "type": "address"
                }
            ],
            "name": "initialize",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "tokenHolder",
                    "type": "address"
                }
            ],
            "name": "isOperatorFor",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "name",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes",
                    "name": "",
                    "type": "bytes"
                },
                {
                    "internalType": "bytes",
                    "name": "",
                    "type": "bytes"
                }
            ],
            "name": "operatorBurn",
            "outputs": [],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes",
                    "name": "",
                    "type": "bytes"
                },
                {
                    "internalType": "bytes",
                    "name": "",
                    "type": "bytes"
                }
            ],
            "name": "operatorSend",
            "outputs": [],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "pause",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "paused",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "quantityRevokedFrom",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "renounceRole",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                }
            ],
            "name": "revokeOperator",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "revokeRole",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes",
                    "name": "",
                    "type": "bytes"
                }
            ],
            "name": "send",
            "outputs": [],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes4",
                    "name": "interfaceId",
                    "type": "bytes4"
                }
            ],
            "name": "supportsInterface",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "symbol",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "sender",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes",
                    "name": "userData",
                    "type": "bytes"
                },
                {
                    "internalType": "bytes",
                    "name": "operatorData",
                    "type": "bytes"
                }
            ],
            "name": "tokensReceived",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "totalSupply",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "name": "transfer",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "name": "transferFrom",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "unlockedBalanceOf",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "unpause",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "vestedBalanceOf",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "recipient",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "withdrawTo",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "bytecode": "0x60806040523480156200001157600080fd5b5061839780620000226000396000f3fe608060405234801561001057600080fd5b50600436106102035760003560e01c806223de291461020857806301ffc9a71461022457806306e485381461025457806306fdde0314610272578063095ea7b3146102905780630e2d1a2a146102c057806318160ddd146102f0578063205c28781461030e57806323b872dd1461033e578063248a9ca31461036e578063271c6e1a1461039e5780632f2ff15d146103ba578063313ce567146103d657806336568abe146103f45780633f4ba83a14610410578063458c738e1461041a578063521189a91461044a578063556f0dc7146104685780635c975abb1461048657806362ad1b83146104a4578063633d9be0146104c057806370a08231146104de5780638456cb591461050e57806384955c88146105185780639010d07c1461054857806391d1485414610578578063959b8c3f146105a857806395d89b41146105c45780639952d6e4146105e25780639bd9bbc6146105fe5780639e3f3cac1461061a5780639f916c211461064a578063a217fddf1461067a578063a9059cbb14610698578063bf31dbf4146106c8578063c4d66de8146106f8578063ca15c87314610714578063d547741f14610744578063d95b637114610760578063dd62ed3e14610790578063e63ab1e9146107c0578063fad8b32a146107de578063fc673c4f146107fa578063fe9d930314610816575b600080fd5b610222600480360381019061021d9190614ee9565b610832565b005b61023e60048036038101906102399190615010565b6109ce565b60405161024b9190615058565b60405180910390f35b61025c610a48565b6040516102699190615131565b60405180910390f35b61027a610ad6565b60405161028791906151e3565b60405180910390f35b6102aa60048036038101906102a59190615205565b610b68565b6040516102b79190615058565b60405180910390f35b6102da60048036038101906102d59190615245565b610b8e565b6040516102e79190615281565b60405180910390f35b6102f8610ba1565b6040516103059190615281565b60405180910390f35b61032860048036038101906103239190615205565b610bab565b6040516103359190615058565b60405180910390f35b6103586004803603810190610353919061529c565b610d4a565b6040516103659190615058565b60405180910390f35b61038860048036038101906103839190615325565b610d87565b6040516103959190615361565b60405180910390f35b6103b860048036038101906103b3919061537c565b610da7565b005b6103d460048036038101906103cf9190615470565b610e28565b005b6103de610e49565b6040516103eb91906154cc565b60405180910390f35b61040e60048036038101906104099190615470565b610e52565b005b610418610ed5565b005b610434600480360381019061042f9190615625565b610f0a565b604051610441919061572c565b60405180910390f35b610452610fc3565b60405161045f9190615361565b60405180910390f35b610470610fe7565b60405161047d9190615281565b60405180910390f35b61048e610ff0565b60405161049b9190615058565b60405180910390f35b6104be60048036038101906104b99190615803565b611007565b005b6104c8611042565b6040516104d59190615361565b60405180910390f35b6104f860048036038101906104f39190615245565b611066565b6040516105059190615281565b60405180910390f35b6105166110af565b005b610532600480360381019061052d9190615245565b6110e4565b60405161053f9190615281565b60405180910390f35b610562600480360381019061055d91906158b6565b6110f7565b60405161056f9190615905565b60405180910390f35b610592600480360381019061058d9190615470565b611126565b60405161059f9190615058565b60405180910390f35b6105c260048036038101906105bd9190615245565b611191565b005b6105cc6111a8565b6040516105d991906151e3565b60405180910390f35b6105fc60048036038101906105f791906159cc565b61123a565b005b61061860048036038101906106139190615ab5565b6113fd565b005b610634600480360381019061062f9190615245565b611438565b6040516106419190615281565b60405180910390f35b610664600480360381019061065f9190615b24565b611499565b6040516106719190615d7a565b60405180910390f35b610682611570565b60405161068f9190615361565b60405180910390f35b6106b260048036038101906106ad9190615205565b611577565b6040516106bf9190615058565b60405180910390f35b6106e260048036038101906106dd9190615245565b6115b4565b6040516106ef9190615ee6565b60405180910390f35b610712600480360381019061070d9190615f40565b611769565b005b61072e60048036038101906107299190615325565b611b00565b60405161073b9190615281565b60405180910390f35b61075e60048036038101906107599190615470565b611b24565b005b61077a60048036038101906107759190615f6d565b611b45565b6040516107879190615058565b60405180910390f35b6107aa60048036038101906107a59190615f6d565b611cf6565b6040516107b79190615281565b60405180910390f35b6107c8611d7d565b6040516107d59190615361565b60405180910390f35b6107f860048036038101906107f39190615245565b611da1565b005b610814600480360381019061080f9190615fad565b611db8565b005b610830600480360381019061082b919061604c565b611df3565b005b61016060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610874611e2e565b73ffffffffffffffffffffffffffffffffffffffff16146108ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c1906160f4565b60405180910390fd5b6108f47fa52f07bb8dc8df886598eb50edeaba2b8e45715237ed244354b60ea04d0390b889611126565b610933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092a90616186565b60405180910390fd5b6000848481019061094491906161e4565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ac90616283565b60405180910390fd5b6109c28686868686611e36565b50505050505050505050565b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610a415750610a4082611fe0565b5b9050919050565b60606037805480602002602001604051908101604052809291908181526020018280548015610acc57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610a82575b5050505050905090565b606060358054610ae5906162d2565b80601f0160208091040260200160405190810160405280929190818152602001828054610b11906162d2565b8015610b5e5780601f10610b3357610100808354040283529160200191610b5e565b820191906000526020600020905b815481529060010190602001808311610b4157829003601f168201915b5050505050905090565b6000610b7261205a565b610b7c83836120a4565b610b8683836120df565b905092915050565b6000610b9a8242612102565b9050919050565b6000603454905090565b60008061015f6000610bbb611e2e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050610c28610c02611e2e565b846040518060200160405280600081525060405180602001604052806000815250612246565b61016060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639bd9bbc685856040518363ffffffff1660e01b8152600401610c8692919061633a565b600060405180830381600087803b158015610ca057600080fd5b505af1158015610cb4573d6000803e3d6000fd5b505050508281600d016000828254610ccc91906163a5565b925050819055508373ffffffffffffffffffffffffffffffffffffffff16610cf2611e2e565b73ffffffffffffffffffffffffffffffffffffffff167fa86305abc2db271df4609aa86a8d044bc11fb36939841bfdad6c1ab2b26e947185604051610d379190615281565b60405180910390a3600191505092915050565b60006040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7e90616425565b60405180910390fd5b600060c96000838152602001908152602001600020600101549050919050565b610daf61205a565b7fa52f07bb8dc8df886598eb50edeaba2b8e45715237ed244354b60ea04d0390b8610dd98161248b565b60008b8b8b8b8b8b8b8b8b8b604051602001610dfe9a99989796959493929190616445565b6040516020818303038152906040529050610e198d8261249f565b50505050505050505050505050565b610e3182610d87565b610e3a8161248b565b610e4483836128e7565b505050565b60006012905090565b610e5a611e2e565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610ec7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebe90616553565b60405180910390fd5b610ed182826128ff565b5050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610eff8161248b565b610f07612917565b50565b60606000825167ffffffffffffffff811115610f2957610f286154e7565b5b604051908082528060200260200182016040528015610f575781602001602082028036833780820191505090505b50905060005b8351811015610fb957610f89848281518110610f7c57610f7b616573565b5b6020026020010151611066565b828281518110610f9c57610f9b616573565b5b60200260200101818152505080610fb2906165a2565b9050610f5d565b5080915050919050565b7fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b81565b60006001905090565b6000606560009054906101000a900460ff16905090565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103990616636565b60405180910390fd5b7fa52f07bb8dc8df886598eb50edeaba2b8e45715237ed244354b60ea04d0390b881565b6000603360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6110d98161248b565b6110e161297a565b50565b60006110f082426129dd565b9050919050565b600061111e8260fb6000868152602001908152602001600020612b3390919063ffffffff16565b905092915050565b600060c9600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61119c8160006120a4565b6111a581612b4d565b50565b6060603680546111b7906162d2565b80601f01602080910402602001604051908101604052809291908181526020018280546111e3906162d2565b80156112305780601f1061120557610100808354040283529160200191611230565b820191906000526020600020905b81548152906001019060200180831161121357829003601f168201915b5050505050905090565b61124261205a565b7fa52f07bb8dc8df886598eb50edeaba2b8e45715237ed244354b60ea04d0390b861126c8161248b565b8686905089899050146112b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ab906166c8565b60405180910390fd5b8484905087879050146112fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f39061675a565b60405180910390fd5b828290508585905014611344576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133b906167ec565b60405180910390fd5b60005b898990508110156113f1576113de8a8a8381811061136857611367616573565b5b905060200201602081019061137d9190615245565b8989848181106113905761138f616573565b5b90506020020160208101906113a59190615245565b8888858181106113b8576113b7616573565b5b905060200201358787868181106113d2576113d1616573565b5b90506020020135612dad565b80806113e9906165a2565b915050611347565b50505050505050505050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142f90616858565b60405180910390fd5b60008061015f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600c015481600e01546114919190616878565b915050919050565b606060008383905067ffffffffffffffff8111156114ba576114b96154e7565b5b6040519080825280602002602001820160405280156114f357816020015b6114e0614ca0565b8152602001906001900390816114d85790505b50905060005b848490508110156115655761153485858381811061151a57611519616573565b5b905060200201602081019061152f9190615245565b6115b4565b82828151811061154757611546616573565b5b6020026020010181905250808061155d906165a2565b9150506114f9565b508091505092915050565b6000801b81565b60006040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ab906168f8565b60405180910390fd5b6115bc614ca0565b600061015f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060405180610200016040528082600c015481526020018473ffffffffffffffffffffffffffffffffffffffff16815260200182600601600001548152602001826000016001015481526020018260060160010154815260200182600601600301600080815260200190815260200160002060000154815260200182600601600301600060018152602001908152602001600020600001548152602001826000016003016000808152602001908152602001600020600101548152602001826000016003016000600181526020019081526020016000206001015481526020018260060160030160008081526020019081526020016000206001015481526020018260060160030160006001815260200190815260200160002060010154815260200182600d0154815260200182600e01548152602001826010015481526020018260110154815260200182600f0160009054906101000a900460ff161515815250915050919050565b60008060019054906101000a900460ff1615905080801561179a5750600160008054906101000a900460ff1660ff16105b806117c757506117a930613153565b1580156117c65750600160008054906101000a900460ff1660ff16145b5b611806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fd9061698a565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015611843576001600060016101000a81548160ff0219169083151502179055505b6000600167ffffffffffffffff8111156118605761185f6154e7565b5b60405190808252806020026020018201604052801561188e5781602001602082028036833780820191505090505b509050611899611e2e565b816000815181106118ad576118ac616573565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506118ef613176565b6118f76131c7565b6118ff613218565b611907613269565b61190f6132ba565b611917613326565b61198c6040518060400160405280600b81526020017f4c6f636b6564204e4f52490000000000000000000000000000000000000000008152506040518060400160405280600581526020017f6c4e4f5249000000000000000000000000000000000000000000000000000000815250836133bc565b8261016060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff166329965a1d307fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b306040518463ffffffff1660e01b8152600401611a3f939291906169aa565b600060405180830381600087803b158015611a5957600080fd5b505af1158015611a6d573d6000803e3d6000fd5b50505050611aa27fa52f07bb8dc8df886598eb50edeaba2b8e45715237ed244354b60ea04d0390b8611a9d611e2e565b6128e7565b508015611afc5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051611af39190616a26565b60405180910390a15b5050565b6000611b1d60fb600084815260200190815260200160002061361f565b9050919050565b611b2d82610d87565b611b368161248b565b611b4083836128ff565b505050565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611c5d5750603860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611c5c5750603a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b80611cee5750603960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b905092915050565b6000603b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b611dac8160006120a4565b611db581613634565b50565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dea90616a8d565b60405180910390fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2590616a8d565b60405180910390fd5b600033905090565b6000808585810190611e489190616b02565b9050600081602001511115611ea657611ea58787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061249f565b5b61015f6000826000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600f0160009054906101000a900460ff16611f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3190616ba1565b60405180910390fd5b611fd281600001518888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613894565b600191505095945050505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806120535750612052826138a8565b5b9050919050565b612062610ff0565b156120a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209990616c0d565b60405180910390fd5b565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d690616c79565b60405180910390fd5b6000806120ea611e2e565b90506120f7818585613912565b600191505092915050565b60008061015f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060003073ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b81526004016121829190615905565b602060405180830381865afa15801561219f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c39190616cae565b905081600f0160009054906101000a900460ff161561223b576121e585613adb565b156122235781600d01546122126122088685600001613b4d90919063ffffffff16565b84600c0154613b75565b61221c9190616878565b905061223a565b81600d015482600c01546122379190616878565b90505b5b809250505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036122b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ac90616d4d565b60405180910390fd5b60006122bf611e2e565b90506122ce8186600087613b8e565b6000603360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905084811015612355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234c90616ddf565b60405180910390fd5b848103603360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555084603460008282546123ad9190616878565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a409887878760405161241593929190616e43565b60405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405161247b9190615281565b60405180910390a3505050505050565b61249c81612497611e2e565b613d2c565b50565b6000818060200190518101906124b59190616f93565b9050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361252a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252190617033565b60405180910390fd5b6125587fa52f07bb8dc8df886598eb50edeaba2b8e45715237ed244354b60ea04d0390b88260000151611126565b15612598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258f906170c5565b60405180910390fd5b80606001518160200151106125e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d990617157565b60405180910390fd5b80606001514210612628576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261f906171e9565b60405180910390fd5b61015f6000826000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600f0160009054906101000a900460ff16156126bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b490617255565b60405180910390fd5b600061015f6000836000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508381600c01819055508381600e0181905550600181600f0160006101000a81548160ff021916908315150217905550816020015182604001511115612811578161010001518260c0015110158061276557508161012001518260e0015110155b6127a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279b906172c1565b60405180910390fd5b83816000016002018190555081602001518160000160000181905550816040015181600001600101819055506127f082608001518360c0015183600001613db19092919063ffffffff16565b6128108260a001518360e0015183600001613db19092919063ffffffff16565b5b838160060160020181905550816020015181600601600001819055508160600151816006016001018190555061285e826080015183610100015183600601613db19092919063ffffffff16565b61287f8260a0015183610120015183600601613db19092919063ffffffff16565b816020015184836000015173ffffffffffffffffffffffffffffffffffffffff167f17161516b6ce34594617177a800b150a86ddee02c06993a73ef000a02367d119856040015186606001516040516128d99291906172e1565b60405180910390a450505050565b6128f18282613f80565b6128fb8282614047565b5050565b6129098282613f80565b612913828261407b565b5050565b61291f6140af565b6000606560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612963611e2e565b6040516129709190615905565b60405180910390a1565b61298261205a565b6001606560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586129c6611e2e565b6040516129d39190615905565b60405180910390a1565b60008061015f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060003073ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401612a5d9190615905565b602060405180830381865afa158015612a7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a9e9190616cae565b90506000612aab86613adb565b612ab95782600c0154612ad0565b612acf8584600001613b4d90919063ffffffff16565b5b905082600f0160009054906101000a900460ff1615612b275782600d0154612b1a612b1083612b0b8988600601613b4d90919063ffffffff16565b613b75565b85600c0154613b75565b612b249190616878565b91505b81935050505092915050565b6000612b4283600001836140f8565b60001c905092915050565b8073ffffffffffffffffffffffffffffffffffffffff16612b6c611e2e565b73ffffffffffffffffffffffffffffffffffffffff1603612bc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb99061737c565b60405180910390fd5b603860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612cac57603a6000612c20611e2e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055612d49565b600160396000612cba611e2e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b612d51611e2e565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f960405160405180910390a350565b600082148015612dbd5750600081115b80612dd45750600082118015612dd35750600081145b5b612e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0a9061740e565b60405180910390fd5b600061015f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600f0160009054906101000a900460ff16612ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9f9061747a565b60405180910390fd5b612eb185613adb565b612ef0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ee79061750c565b60405180910390fd5b60008084148015612f015750600083115b612f0b5783612f0d565b425b905042811015612f52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f499061759e565b60405180910390fd5b6000612f6a8284600001613b4d90919063ffffffff16565b905082600c01548110612fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fa99061760a565b60405180910390fd5b60008184600c0154612fc49190616878565b905060008086111561301b5781861115613013576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300a90617676565b60405180910390fd5b85905061301f565b8190505b8085600c015461302f9190616878565b85600c018190555083856010018190555080856011018190555061307389826040518060200160405280600081525060405180602001604052806000815250612246565b61016060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639bd9bbc689836040518363ffffffff1660e01b81526004016130d192919061633a565b600060405180830381600087803b1580156130eb57600080fd5b505af11580156130ff573d6000803e3d6000fd5b50505050808973ffffffffffffffffffffffffffffffffffffffff16857f0bbe3f9ae306d75ae6df08cd4a79ac5c6eae93ffae7d7e52f2859bf27592519d60405160405180910390a4505050505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff166131c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131bc90617708565b60405180910390fd5b565b600060019054906101000a900460ff16613216576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320d90617708565b60405180910390fd5b565b600060019054906101000a900460ff16613267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325e90617708565b60405180910390fd5b565b600060019054906101000a900460ff166132b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132af90617708565b60405180910390fd5b565b600060019054906101000a900460ff16613309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161330090617708565b60405180910390fd5b6000606560006101000a81548160ff021916908315150217905550565b600060019054906101000a900460ff16613375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161336c90617708565b60405180910390fd5b6133896000801b613384611e2e565b6128e7565b6133ba7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6133b5611e2e565b6128e7565b565b600060019054906101000a900460ff1661340b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161340290617708565b60405180910390fd5b826035908161341a91906178ca565b50816036908161342a91906178ca565b508060379080519060200190613441929190614d35565b5060005b81518110156134d35760016038600084848151811061346757613466616573565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806134cb906165a2565b915050613445565b50731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff166329965a1d307fac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce2177054306040518463ffffffff1660e01b8152600401613545939291906169aa565b600060405180830381600087803b15801561355f57600080fd5b505af1158015613573573d6000803e3d6000fd5b50505050731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff166329965a1d307faea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a306040518463ffffffff1660e01b81526004016135e8939291906169aa565b600060405180830381600087803b15801561360257600080fd5b505af1158015613616573d6000803e3d6000fd5b50505050505050565b600061362d82600001614123565b9050919050565b61363c611e2e565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036136a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136a090617a0e565b60405180910390fd5b603860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561379c576001603a6000613709611e2e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613830565b603960006137a8611e2e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b613838611e2e565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa160405160405180910390a350565b6138a2848484846001614134565b50505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613981576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161397890617aa0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036139f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139e790617b32565b60405180910390fd5b80603b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051613ace9190615281565b60405180910390a3505050565b60008061015f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600f0160009054906101000a900460ff168015613b45575060008160000160000154115b915050919050565b6000613b598383614312565b613b6384846143e2565b613b6d91906163a5565b905092915050565b6000818310613b845781613b86565b825b905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614905060008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490506000613c207fa52f07bb8dc8df886598eb50edeaba2b8e45715237ed244354b60ea04d0390b888611126565b905060008673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16141590506000613c61886110e4565b8611159050838015613c705750815b8015613c795750825b15613cce5785613c8889611066565b1015613cc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cc090617b9e565b60405180910390fd5b613d15565b84613d145780613d13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d0a90617b9e565b60405180910390fd5b5b5b613d218989898961446f565b505050505050505050565b613d368282611126565b613dad57613d4381614489565b613d518360001c60206144b6565b604051602001613d62929190617c92565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613da491906151e3565b60405180910390fd5b5050565b6000836004015490506000846004015403613e12578360000154831015613e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e0490617d3e565b60405180910390fd5b613e7a565b836003016000600183613e259190616878565b815260200190815260200160002060000154831015613e79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e7090617dd0565b60405180910390fd5b5b8360010154831115613ec1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613eb890617e62565b60405180910390fd5b8360020154828560050154613ed691906163a5565b1115613f17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f0e90617ef4565b60405180910390fd5b600084600301600083815260200190815260200160002090508381600001819055508281600101819055506001856004016000828254613f5791906163a5565b9250508190555082856005016000828254613f7291906163a5565b925050819055505050505050565b613f8a82826146f2565b7fa52f07bb8dc8df886598eb50edeaba2b8e45715237ed244354b60ea04d0390b882036140435761015f60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600f0160009054906101000a900460ff1615614042576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161403990617f86565b60405180910390fd5b5b5050565b61405182826146fe565b6140768160fb60008581526020019081526020016000206147df90919063ffffffff16565b505050565b614085828261480f565b6140aa8160fb60008581526020019081526020016000206148f190919063ffffffff16565b505050565b6140b7610ff0565b6140f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140ed90617ff2565b60405180910390fd5b565b60008260000182815481106141105761410f616573565b5b9060005260206000200154905092915050565b600081600001805490509050919050565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036141a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161419a9061805e565b60405180910390fd5b60006141ad611e2e565b90506141bc8160008888613b8e565b84603460008282546141ce91906163a5565b9250508190555084603360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461422491906163a5565b9250508190555061423b8160008888888888614921565b8573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d87878760405161429c93929190616e43565b60405180910390a38573ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516143029190615281565b60405180910390a3505050505050565b600080836005015484600201541061433b57836005015484600201546143389190616878565b90505b8360010154831061434f57809150506143dc565b600084600001549050600085600401541115614391578460030160006001876004015461437c9190616878565b81526020019081526020016000206000015490505b60008186600101546143a39190616878565b90508185106143d3578082866143b99190616878565b846143c4919061807e565b6143ce91906180ef565b6143d6565b60005b93505050505b92915050565b6000806000905060008460040154905060005b818110156144565785600301600082815260200190815260200160002060000154851061444357856003016000828152602001908152602001600020600101548361444091906163a5565b92505b808061444e906165a2565b9150506143f5565b50614465856002015483613b75565b9250505092915050565b61447761205a565b61448384848484614af3565b50505050565b60606144af8273ffffffffffffffffffffffffffffffffffffffff16601460ff166144b6565b9050919050565b6060600060028360026144c9919061807e565b6144d391906163a5565b67ffffffffffffffff8111156144ec576144eb6154e7565b5b6040519080825280601f01601f19166020018201604052801561451e5781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061455657614555616573565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106145ba576145b9616573565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026145fa919061807e565b61460491906163a5565b90505b60018111156146a4577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061464657614645616573565b5b1a60f81b82828151811061465d5761465c616573565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061469d90618120565b9050614607565b50600084146146e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016146df90618195565b60405180910390fd5b8091505092915050565b6146fa61205a565b5050565b6147088282611126565b6147db57600160c9600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550614780611e2e565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000614807836000018373ffffffffffffffffffffffffffffffffffffffff1660001b614af9565b905092915050565b6148198282611126565b156148ed57600060c9600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550614892611e2e565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000614919836000018373ffffffffffffffffffffffffffffffffffffffff1660001b614b69565b905092915050565b6000731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6040518363ffffffff1660e01b81526004016149929291906181b5565b602060405180830381865afa1580156149af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149d391906181de565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614614a82578073ffffffffffffffffffffffffffffffffffffffff166223de298989898989896040518763ffffffff1660e01b8152600401614a4b9695949392919061820b565b600060405180830381600087803b158015614a6557600080fd5b505af1158015614a79573d6000803e3d6000fd5b50505050614ae9565b8115614ae857614aa78673ffffffffffffffffffffffffffffffffffffffff16613153565b15614ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614ade90618312565b60405180910390fd5b5b5b5050505050505050565b50505050565b6000614b058383614c7d565b614b5e578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050614b63565b600090505b92915050565b60008083600101600084815260200190815260200160002054905060008114614c71576000600182614b9b9190616878565b9050600060018660000180549050614bb39190616878565b9050818114614c22576000866000018281548110614bd457614bd3616573565b5b9060005260206000200154905080876000018481548110614bf857614bf7616573565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b85600001805480614c3657614c35618332565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050614c77565b60009150505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b60405180610200016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b828054828255906000526020600020908101928215614dae579160200282015b82811115614dad5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190614d55565b5b509050614dbb9190614dbf565b5090565b5b80821115614dd8576000816000905550600101614dc0565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614e1b82614df0565b9050919050565b614e2b81614e10565b8114614e3657600080fd5b50565b600081359050614e4881614e22565b92915050565b6000819050919050565b614e6181614e4e565b8114614e6c57600080fd5b50565b600081359050614e7e81614e58565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112614ea957614ea8614e84565b5b8235905067ffffffffffffffff811115614ec657614ec5614e89565b5b602083019150836001820283011115614ee257614ee1614e8e565b5b9250929050565b60008060008060008060008060c0898b031215614f0957614f08614de6565b5b6000614f178b828c01614e39565b9850506020614f288b828c01614e39565b9750506040614f398b828c01614e39565b9650506060614f4a8b828c01614e6f565b955050608089013567ffffffffffffffff811115614f6b57614f6a614deb565b5b614f778b828c01614e93565b945094505060a089013567ffffffffffffffff811115614f9a57614f99614deb565b5b614fa68b828c01614e93565b92509250509295985092959890939650565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b614fed81614fb8565b8114614ff857600080fd5b50565b60008135905061500a81614fe4565b92915050565b60006020828403121561502657615025614de6565b5b600061503484828501614ffb565b91505092915050565b60008115159050919050565b6150528161503d565b82525050565b600060208201905061506d6000830184615049565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6150a881614e10565b82525050565b60006150ba838361509f565b60208301905092915050565b6000602082019050919050565b60006150de82615073565b6150e8818561507e565b93506150f38361508f565b8060005b8381101561512457815161510b88826150ae565b9750615116836150c6565b9250506001810190506150f7565b5085935050505092915050565b6000602082019050818103600083015261514b81846150d3565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561518d578082015181840152602081019050615172565b60008484015250505050565b6000601f19601f8301169050919050565b60006151b582615153565b6151bf818561515e565b93506151cf81856020860161516f565b6151d881615199565b840191505092915050565b600060208201905081810360008301526151fd81846151aa565b905092915050565b6000806040838503121561521c5761521b614de6565b5b600061522a85828601614e39565b925050602061523b85828601614e6f565b9150509250929050565b60006020828403121561525b5761525a614de6565b5b600061526984828501614e39565b91505092915050565b61527b81614e4e565b82525050565b60006020820190506152966000830184615272565b92915050565b6000806000606084860312156152b5576152b4614de6565b5b60006152c386828701614e39565b93505060206152d486828701614e39565b92505060406152e586828701614e6f565b9150509250925092565b6000819050919050565b615302816152ef565b811461530d57600080fd5b50565b60008135905061531f816152f9565b92915050565b60006020828403121561533b5761533a614de6565b5b600061534984828501615310565b91505092915050565b61535b816152ef565b82525050565b60006020820190506153766000830184615352565b92915050565b60008060008060008060008060008060006101608c8e0312156153a2576153a1614de6565b5b60006153b08e828f01614e6f565b9b505060206153c18e828f01614e39565b9a505060406153d28e828f01614e6f565b99505060606153e38e828f01614e6f565b98505060806153f48e828f01614e6f565b97505060a06154058e828f01614e6f565b96505060c06154168e828f01614e6f565b95505060e06154278e828f01614e6f565b9450506101006154398e828f01614e6f565b93505061012061544b8e828f01614e6f565b92505061014061545d8e828f01614e6f565b9150509295989b509295989b9093969950565b6000806040838503121561548757615486614de6565b5b600061549585828601615310565b92505060206154a685828601614e39565b9150509250929050565b600060ff82169050919050565b6154c6816154b0565b82525050565b60006020820190506154e160008301846154bd565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61551f82615199565b810181811067ffffffffffffffff8211171561553e5761553d6154e7565b5b80604052505050565b6000615551614ddc565b905061555d8282615516565b919050565b600067ffffffffffffffff82111561557d5761557c6154e7565b5b602082029050602081019050919050565b60006155a161559c84615562565b615547565b905080838252602082019050602084028301858111156155c4576155c3614e8e565b5b835b818110156155ed57806155d98882614e39565b8452602084019350506020810190506155c6565b5050509392505050565b600082601f83011261560c5761560b614e84565b5b813561561c84826020860161558e565b91505092915050565b60006020828403121561563b5761563a614de6565b5b600082013567ffffffffffffffff81111561565957615658614deb565b5b615665848285016155f7565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6156a381614e4e565b82525050565b60006156b5838361569a565b60208301905092915050565b6000602082019050919050565b60006156d98261566e565b6156e38185615679565b93506156ee8361568a565b8060005b8381101561571f57815161570688826156a9565b9750615711836156c1565b9250506001810190506156f2565b5085935050505092915050565b6000602082019050818103600083015261574681846156ce565b905092915050565b600080fd5b600067ffffffffffffffff82111561576e5761576d6154e7565b5b61577782615199565b9050602081019050919050565b82818337600083830152505050565b60006157a66157a184615753565b615547565b9050828152602081018484840111156157c2576157c161574e565b5b6157cd848285615784565b509392505050565b600082601f8301126157ea576157e9614e84565b5b81356157fa848260208601615793565b91505092915050565b600080600080600060a0868803121561581f5761581e614de6565b5b600061582d88828901614e39565b955050602061583e88828901614e39565b945050604061584f88828901614e6f565b935050606086013567ffffffffffffffff8111156158705761586f614deb565b5b61587c888289016157d5565b925050608086013567ffffffffffffffff81111561589d5761589c614deb565b5b6158a9888289016157d5565b9150509295509295909350565b600080604083850312156158cd576158cc614de6565b5b60006158db85828601615310565b92505060206158ec85828601614e6f565b9150509250929050565b6158ff81614e10565b82525050565b600060208201905061591a60008301846158f6565b92915050565b60008083601f84011261593657615935614e84565b5b8235905067ffffffffffffffff81111561595357615952614e89565b5b60208301915083602082028301111561596f5761596e614e8e565b5b9250929050565b60008083601f84011261598c5761598b614e84565b5b8235905067ffffffffffffffff8111156159a9576159a8614e89565b5b6020830191508360208202830111156159c5576159c4614e8e565b5b9250929050565b6000806000806000806000806080898b0312156159ec576159eb614de6565b5b600089013567ffffffffffffffff811115615a0a57615a09614deb565b5b615a168b828c01615920565b9850985050602089013567ffffffffffffffff811115615a3957615a38614deb565b5b615a458b828c01615920565b9650965050604089013567ffffffffffffffff811115615a6857615a67614deb565b5b615a748b828c01615976565b9450945050606089013567ffffffffffffffff811115615a9757615a96614deb565b5b615aa38b828c01615976565b92509250509295985092959890939650565b600080600060608486031215615ace57615acd614de6565b5b6000615adc86828701614e39565b9350506020615aed86828701614e6f565b925050604084013567ffffffffffffffff811115615b0e57615b0d614deb565b5b615b1a868287016157d5565b9150509250925092565b60008060208385031215615b3b57615b3a614de6565b5b600083013567ffffffffffffffff811115615b5957615b58614deb565b5b615b6585828601615920565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615ba68161503d565b82525050565b61020082016000820151615bc3600085018261569a565b506020820151615bd6602085018261509f565b506040820151615be9604085018261569a565b506060820151615bfc606085018261569a565b506080820151615c0f608085018261569a565b5060a0820151615c2260a085018261569a565b5060c0820151615c3560c085018261569a565b5060e0820151615c4860e085018261569a565b50610100820151615c5d61010085018261569a565b50610120820151615c7261012085018261569a565b50610140820151615c8761014085018261569a565b50610160820151615c9c61016085018261569a565b50610180820151615cb161018085018261569a565b506101a0820151615cc66101a085018261569a565b506101c0820151615cdb6101c085018261569a565b506101e0820151615cf06101e0850182615b9d565b50505050565b6000615d028383615bac565b6102008301905092915050565b6000602082019050919050565b6000615d2782615b71565b615d318185615b7c565b9350615d3c83615b8d565b8060005b83811015615d6d578151615d548882615cf6565b9750615d5f83615d0f565b925050600181019050615d40565b5085935050505092915050565b60006020820190508181036000830152615d948184615d1c565b905092915050565b61020082016000820151615db3600085018261569a565b506020820151615dc6602085018261509f565b506040820151615dd9604085018261569a565b506060820151615dec606085018261569a565b506080820151615dff608085018261569a565b5060a0820151615e1260a085018261569a565b5060c0820151615e2560c085018261569a565b5060e0820151615e3860e085018261569a565b50610100820151615e4d61010085018261569a565b50610120820151615e6261012085018261569a565b50610140820151615e7761014085018261569a565b50610160820151615e8c61016085018261569a565b50610180820151615ea161018085018261569a565b506101a0820151615eb66101a085018261569a565b506101c0820151615ecb6101c085018261569a565b506101e0820151615ee06101e0850182615b9d565b50505050565b600061020082019050615efc6000830184615d9c565b92915050565b6000615f0d82614e10565b9050919050565b615f1d81615f02565b8114615f2857600080fd5b50565b600081359050615f3a81615f14565b92915050565b600060208284031215615f5657615f55614de6565b5b6000615f6484828501615f2b565b91505092915050565b60008060408385031215615f8457615f83614de6565b5b6000615f9285828601614e39565b9250506020615fa385828601614e39565b9150509250929050565b60008060008060808587031215615fc757615fc6614de6565b5b6000615fd587828801614e39565b9450506020615fe687828801614e6f565b935050604085013567ffffffffffffffff81111561600757616006614deb565b5b616013878288016157d5565b925050606085013567ffffffffffffffff81111561603457616033614deb565b5b616040878288016157d5565b91505092959194509250565b6000806040838503121561606357616062614de6565b5b600061607185828601614e6f565b925050602083013567ffffffffffffffff81111561609257616091614deb565b5b61609e858286016157d5565b9150509250929050565b7f6c4e4f52493a206e6f742042726964676564506f6c79676f6e4e4f5249000000600082015250565b60006160de601d8361515e565b91506160e9826160a8565b602082019050919050565b6000602082019050818103600083015261610d816160d1565b9050919050565b7f6c4e4f52493a2073656e646572206973206d697373696e6720726f6c6520544f60008201527f4b454e5f4752414e5445525f524f4c4500000000000000000000000000000000602082015250565b600061617060308361515e565b915061617b82616114565b604082019050919050565b6000602082019050818103600083015261619f81616163565b9050919050565b60006161b182614df0565b9050919050565b6161c1816161a6565b81146161cc57600080fd5b50565b6000813590506161de816161b8565b92915050565b6000602082840312156161fa576161f9614de6565b5b6000616208848285016161cf565b91505092915050565b7f6c4e4f52493a20746f6b656e2073656e64206d697373696e672072657175697260008201527f6564207573657244617461000000000000000000000000000000000000000000602082015250565b600061626d602b8361515e565b915061627882616211565b604082019050919050565b6000602082019050818103600083015261629c81616260565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806162ea57607f821691505b6020821081036162fd576162fc6162a3565b5b50919050565b600082825260208201905092915050565b50565b6000616324600083616303565b915061632f82616314565b600082019050919050565b600060608201905061634f60008301856158f6565b61635c6020830184615272565b818103604083015261636d81616317565b90509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006163b082614e4e565b91506163bb83614e4e565b92508282019050808211156163d3576163d2616376565b5b92915050565b7f6c4e4f52493a207472616e7366657246726f6d2064697361626c656400000000600082015250565b600061640f601c8361515e565b915061641a826163d9565b602082019050919050565b6000602082019050818103600083015261643e81616402565b9050919050565b60006101408201905061645b600083018d6158f6565b616468602083018c615272565b616475604083018b615272565b616482606083018a615272565b61648f6080830189615272565b61649c60a0830188615272565b6164a960c0830187615272565b6164b660e0830186615272565b6164c4610100830185615272565b6164d2610120830184615272565b9b9a5050505050505050505050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b600061653d602f8361515e565b9150616548826164e1565b604082019050919050565b6000602082019050818103600083015261656c81616530565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006165ad82614e4e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036165df576165de616376565b5b600182019050919050565b7f6c4e4f52493a206f70657261746f7253656e642064697361626c656400000000600082015250565b6000616620601c8361515e565b915061662b826165ea565b602082019050919050565b6000602082019050818103600083015261664f81616613565b9050919050565b7f6c4e4f52493a2066726f6d4163636f756e747320616e6420746f4163636f756e60008201527f7473206c656e677468206d69736d617463680000000000000000000000000000602082015250565b60006166b260328361515e565b91506166bd82616656565b604082019050919050565b600060208201905081810360008301526166e1816166a5565b9050919050565b7f6c4e4f52493a20746f4163636f756e747320616e6420617454696d6573206c6560008201527f6e677468206d69736d6174636800000000000000000000000000000000000000602082015250565b6000616744602d8361515e565b915061674f826166e8565b604082019050919050565b6000602082019050818103600083015261677381616737565b9050919050565b7f6c4e4f52493a20617454696d657320616e6420616d6f756e7473206c656e677460008201527f68206d69736d6174636800000000000000000000000000000000000000000000602082015250565b60006167d6602a8361515e565b91506167e18261677a565b604082019050919050565b60006020820190508181036000830152616805816167c9565b9050919050565b7f6c4e4f52493a2073656e642064697361626c6564000000000000000000000000600082015250565b600061684260148361515e565b915061684d8261680c565b602082019050919050565b6000602082019050818103600083015261687181616835565b9050919050565b600061688382614e4e565b915061688e83614e4e565b92508282039050818111156168a6576168a5616376565b5b92915050565b7f6c4e4f52493a207472616e736665722064697361626c65640000000000000000600082015250565b60006168e260188361515e565b91506168ed826168ac565b602082019050919050565b60006020820190508181036000830152616911816168d5565b9050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000616974602e8361515e565b915061697f82616918565b604082019050919050565b600060208201905081810360008301526169a381616967565b9050919050565b60006060820190506169bf60008301866158f6565b6169cc6020830185615352565b6169d960408301846158f6565b949350505050565b6000819050919050565b6000819050919050565b6000616a10616a0b616a06846169e1565b6169eb565b6154b0565b9050919050565b616a20816169f5565b82525050565b6000602082019050616a3b6000830184616a17565b92915050565b7f6c4e4f52493a206275726e696e67206e6f7420737570706f7274656400000000600082015250565b6000616a77601c8361515e565b9150616a8282616a41565b602082019050919050565b60006020820190508181036000830152616aa681616a6a565b9050919050565b600080fd5b600060408284031215616ac857616ac7616aad565b5b616ad26040615547565b90506000616ae284828501614e39565b6000830152506020616af684828501614e6f565b60208301525092915050565b600060408284031215616b1857616b17614de6565b5b6000616b2684828501616ab2565b91505092915050565b7f6c4e4f52493a2043616e6e6f74206465706f73697420776974686f757420612060008201527f6772616e74000000000000000000000000000000000000000000000000000000602082015250565b6000616b8b60258361515e565b9150616b9682616b2f565b604082019050919050565b60006020820190508181036000830152616bba81616b7e565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000616bf760108361515e565b9150616c0282616bc1565b602082019050919050565b60006020820190508181036000830152616c2681616bea565b9050919050565b7f6c4e4f52493a206f70657261746f7220616374696f6e732064697361626c6564600082015250565b6000616c6360208361515e565b9150616c6e82616c2d565b602082019050919050565b60006020820190508181036000830152616c9281616c56565b9050919050565b600081519050616ca881614e58565b92915050565b600060208284031215616cc457616cc3614de6565b5b6000616cd284828501616c99565b91505092915050565b7f4552433737373a206275726e2066726f6d20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000616d3760228361515e565b9150616d4282616cdb565b604082019050919050565b60006020820190508181036000830152616d6681616d2a565b9050919050565b7f4552433737373a206275726e20616d6f756e7420657863656564732062616c6160008201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b6000616dc960238361515e565b9150616dd482616d6d565b604082019050919050565b60006020820190508181036000830152616df881616dbc565b9050919050565b600081519050919050565b6000616e1582616dff565b616e1f8185616303565b9350616e2f81856020860161516f565b616e3881615199565b840191505092915050565b6000606082019050616e586000830186615272565b8181036020830152616e6a8185616e0a565b90508181036040830152616e7e8184616e0a565b9050949350505050565b600081519050616e9781614e22565b92915050565b60006101408284031215616eb457616eb3616aad565b5b616ebf610140615547565b90506000616ecf84828501616e88565b6000830152506020616ee384828501616c99565b6020830152506040616ef784828501616c99565b6040830152506060616f0b84828501616c99565b6060830152506080616f1f84828501616c99565b60808301525060a0616f3384828501616c99565b60a08301525060c0616f4784828501616c99565b60c08301525060e0616f5b84828501616c99565b60e083015250610100616f7084828501616c99565b61010083015250610120616f8684828501616c99565b6101208301525092915050565b60006101408284031215616faa57616fa9614de6565b5b6000616fb884828501616e9d565b91505092915050565b7f6c4e4f52493a20526563697069656e742063616e6e6f74206265207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b600061701d60278361515e565b915061702882616fc1565b604082019050919050565b6000602082019050818103600083015261704c81617010565b9050919050565b7f6c4e4f52493a20526563697069656e742063616e6e6f74206265206772616e7460008201527f2061646d696e0000000000000000000000000000000000000000000000000000602082015250565b60006170af60268361515e565b91506170ba82617053565b604082019050919050565b600060208201905081810360008301526170de816170a2565b9050919050565b7f6c4e4f52493a20756e6c6f636b456e6454696d652063616e6e6f74206265206260008201527f65666f726520737461727454696d650000000000000000000000000000000000602082015250565b6000617141602f8361515e565b915061714c826170e5565b604082019050919050565b6000602082019050818103600083015261717081617134565b9050919050565b7f6c4e4f52493a20756e6c6f636b456e6454696d652063616e6e6f74206265206960008201527f6e20746865207061737400000000000000000000000000000000000000000000602082015250565b60006171d3602a8361515e565b91506171de82617177565b604082019050919050565b60006020820190508181036000830152617202816171c6565b9050919050565b7f6c4e4f52493a204772616e7420616c7265616479206578697374730000000000600082015250565b600061723f601b8361515e565b915061724a82617209565b602082019050919050565b6000602082019050818103600083015261726e81617232565b9050919050565b7f6c4e4f52493a20756e6c6f636b20636c696666203e207665737420636c696666600082015250565b60006172ab60208361515e565b91506172b682617275565b602082019050919050565b600060208201905081810360008301526172da8161729e565b9050919050565b60006040820190506172f66000830185615272565b6173036020830184615272565b9392505050565b7f4552433737373a20617574686f72697a696e672073656c66206173206f70657260008201527f61746f7200000000000000000000000000000000000000000000000000000000602082015250565b600061736660248361515e565b91506173718261730a565b604082019050919050565b6000602082019050818103600083015261739581617359565b9050919050565b7f6c4e4f52493a204d75737420737065636966792061207265766f636174696f6e60008201527f2074696d65206f7220616e20616d6f756e74206e6f7420626f74680000000000602082015250565b60006173f8603b8361515e565b91506174038261739c565b604082019050919050565b60006020820190508181036000830152617427816173eb565b9050919050565b7f6c4e4f52493a206e6f206772616e742065786973747300000000000000000000600082015250565b600061746460168361515e565b915061746f8261742e565b602082019050919050565b6000602082019050818103600083015261749381617457565b9050919050565b7f6c4e4f52493a206e6f2076657374696e67207363686564756c6520666f72207460008201527f686973206772616e740000000000000000000000000000000000000000000000602082015250565b60006174f660298361515e565b91506175018261749a565b604082019050919050565b60006020820190508181036000830152617525816174e9565b9050919050565b7f6c4e4f52493a205265766f636174696f6e2063616e6e6f7420626520696e207460008201527f6865207061737400000000000000000000000000000000000000000000000000602082015250565b600061758860278361515e565b91506175938261752c565b604082019050919050565b600060208201905081810360008301526175b78161757b565b9050919050565b7f6c4e4f52493a20746f6b656e7320616c72656164792076657374656400000000600082015250565b60006175f4601c8361515e565b91506175ff826175be565b602082019050919050565b60006020820190508181036000830152617623816175e7565b9050919050565b7f6c4e4f52493a20746f6f2066657720756e76657374656420746f6b656e730000600082015250565b6000617660601e8361515e565b915061766b8261762a565b602082019050919050565b6000602082019050818103600083015261768f81617653565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b60006176f2602b8361515e565b91506176fd82617696565b604082019050919050565b60006020820190508181036000830152617721816176e5565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261778a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261774d565b617794868361774d565b95508019841693508086168417925050509392505050565b60006177c76177c26177bd84614e4e565b6169eb565b614e4e565b9050919050565b6000819050919050565b6177e1836177ac565b6177f56177ed826177ce565b84845461775a565b825550505050565b600090565b61780a6177fd565b6178158184846177d8565b505050565b5b818110156178395761782e600082617802565b60018101905061781b565b5050565b601f82111561787e5761784f81617728565b6178588461773d565b81016020851015617867578190505b61787b6178738561773d565b83018261781a565b50505b505050565b600082821c905092915050565b60006178a160001984600802617883565b1980831691505092915050565b60006178ba8383617890565b9150826002028217905092915050565b6178d382615153565b67ffffffffffffffff8111156178ec576178eb6154e7565b5b6178f682546162d2565b61790182828561783d565b600060209050601f8311600181146179345760008415617922578287015190505b61792c85826178ae565b865550617994565b601f19841661794286617728565b60005b8281101561796a57848901518255600182019150602085019450602081019050617945565b868310156179875784890151617983601f891682617890565b8355505b6001600288020188555050505b505050505050565b7f4552433737373a207265766f6b696e672073656c66206173206f70657261746f60008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006179f860218361515e565b9150617a038261799c565b604082019050919050565b60006020820190508181036000830152617a27816179eb565b9050919050565b7f4552433737373a20617070726f76652066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000617a8a60258361515e565b9150617a9582617a2e565b604082019050919050565b60006020820190508181036000830152617ab981617a7d565b9050919050565b7f4552433737373a20617070726f766520746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000617b1c60238361515e565b9150617b2782617ac0565b604082019050919050565b60006020820190508181036000830152617b4b81617b0f565b9050919050565b7f6c4e4f52493a20696e73756666696369656e742062616c616e63650000000000600082015250565b6000617b88601b8361515e565b9150617b9382617b52565b602082019050919050565b60006020820190508181036000830152617bb781617b7b565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000617bff601783617bbe565b9150617c0a82617bc9565b601782019050919050565b6000617c2082615153565b617c2a8185617bbe565b9350617c3a81856020860161516f565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000617c7c601183617bbe565b9150617c8782617c46565b601182019050919050565b6000617c9d82617bf2565b9150617ca98285617c15565b9150617cb482617c6f565b9150617cc08284617c15565b91508190509392505050565b7f4c6f636b65644e4f52494c69623a20436c696666206265666f7265207363686560008201527f64756c6520737461727400000000000000000000000000000000000000000000602082015250565b6000617d28602a8361515e565b9150617d3382617ccc565b604082019050919050565b60006020820190508181036000830152617d5781617d1b565b9050919050565b7f4c6f636b65644e4f52494c69623a20436c69666673206e6f74206368726f6e6f60008201527f6c6f676963616c00000000000000000000000000000000000000000000000000602082015250565b6000617dba60278361515e565b9150617dc582617d5e565b604082019050919050565b60006020820190508181036000830152617de981617dad565b9050919050565b7f4c6f636b65644e4f52494c69623a20436c696666732063616e6e6f7420656e6460008201527f206166746572207363686564756c650000000000000000000000000000000000602082015250565b6000617e4c602f8361515e565b9150617e5782617df0565b604082019050919050565b60006020820190508181036000830152617e7b81617e3f565b9050919050565b7f4c6f636b65644e4f52494c69623a20436c69666620616d6f756e74732065786360008201527f65656420746f74616c0000000000000000000000000000000000000000000000602082015250565b6000617ede60298361515e565b9150617ee982617e82565b604082019050919050565b60006020820190508181036000830152617f0d81617ed1565b9050919050565b7f6c4e4f52493a2043616e6e6f742061737369676e20726f6c6520746f2061206760008201527f72616e7420686f6c646572206164647265737300000000000000000000000000602082015250565b6000617f7060338361515e565b9150617f7b82617f14565b604082019050919050565b60006020820190508181036000830152617f9f81617f63565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000617fdc60148361515e565b9150617fe782617fa6565b602082019050919050565b6000602082019050818103600083015261800b81617fcf565b9050919050565b7f4552433737373a206d696e7420746f20746865207a65726f2061646472657373600082015250565b600061804860208361515e565b915061805382618012565b602082019050919050565b600060208201905081810360008301526180778161803b565b9050919050565b600061808982614e4e565b915061809483614e4e565b92508282026180a281614e4e565b915082820484148315176180b9576180b8616376565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006180fa82614e4e565b915061810583614e4e565b925082618115576181146180c0565b5b828204905092915050565b600061812b82614e4e565b91506000820361813e5761813d616376565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b600061817f60208361515e565b915061818a82618149565b602082019050919050565b600060208201905081810360008301526181ae81618172565b9050919050565b60006040820190506181ca60008301856158f6565b6181d76020830184615352565b9392505050565b6000602082840312156181f4576181f3614de6565b5b600061820284828501616e88565b91505092915050565b600060c08201905061822060008301896158f6565b61822d60208301886158f6565b61823a60408301876158f6565b6182476060830186615272565b81810360808301526182598185616e0a565b905081810360a083015261826d8184616e0a565b9050979650505050505050565b7f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460008201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60208201527f6b656e73526563697069656e7400000000000000000000000000000000000000604082015250565b60006182fc604d8361515e565b91506183078261827a565b606082019050919050565b6000602082019050818103600083015261832b816182ef565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220b4d8370a983b72833c6056e051d9a6d957d479ff3116c68cc13b5d5b5031b0c864736f6c63430008110033",
    "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102035760003560e01c806223de291461020857806301ffc9a71461022457806306e485381461025457806306fdde0314610272578063095ea7b3146102905780630e2d1a2a146102c057806318160ddd146102f0578063205c28781461030e57806323b872dd1461033e578063248a9ca31461036e578063271c6e1a1461039e5780632f2ff15d146103ba578063313ce567146103d657806336568abe146103f45780633f4ba83a14610410578063458c738e1461041a578063521189a91461044a578063556f0dc7146104685780635c975abb1461048657806362ad1b83146104a4578063633d9be0146104c057806370a08231146104de5780638456cb591461050e57806384955c88146105185780639010d07c1461054857806391d1485414610578578063959b8c3f146105a857806395d89b41146105c45780639952d6e4146105e25780639bd9bbc6146105fe5780639e3f3cac1461061a5780639f916c211461064a578063a217fddf1461067a578063a9059cbb14610698578063bf31dbf4146106c8578063c4d66de8146106f8578063ca15c87314610714578063d547741f14610744578063d95b637114610760578063dd62ed3e14610790578063e63ab1e9146107c0578063fad8b32a146107de578063fc673c4f146107fa578063fe9d930314610816575b600080fd5b610222600480360381019061021d9190614ee9565b610832565b005b61023e60048036038101906102399190615010565b6109ce565b60405161024b9190615058565b60405180910390f35b61025c610a48565b6040516102699190615131565b60405180910390f35b61027a610ad6565b60405161028791906151e3565b60405180910390f35b6102aa60048036038101906102a59190615205565b610b68565b6040516102b79190615058565b60405180910390f35b6102da60048036038101906102d59190615245565b610b8e565b6040516102e79190615281565b60405180910390f35b6102f8610ba1565b6040516103059190615281565b60405180910390f35b61032860048036038101906103239190615205565b610bab565b6040516103359190615058565b60405180910390f35b6103586004803603810190610353919061529c565b610d4a565b6040516103659190615058565b60405180910390f35b61038860048036038101906103839190615325565b610d87565b6040516103959190615361565b60405180910390f35b6103b860048036038101906103b3919061537c565b610da7565b005b6103d460048036038101906103cf9190615470565b610e28565b005b6103de610e49565b6040516103eb91906154cc565b60405180910390f35b61040e60048036038101906104099190615470565b610e52565b005b610418610ed5565b005b610434600480360381019061042f9190615625565b610f0a565b604051610441919061572c565b60405180910390f35b610452610fc3565b60405161045f9190615361565b60405180910390f35b610470610fe7565b60405161047d9190615281565b60405180910390f35b61048e610ff0565b60405161049b9190615058565b60405180910390f35b6104be60048036038101906104b99190615803565b611007565b005b6104c8611042565b6040516104d59190615361565b60405180910390f35b6104f860048036038101906104f39190615245565b611066565b6040516105059190615281565b60405180910390f35b6105166110af565b005b610532600480360381019061052d9190615245565b6110e4565b60405161053f9190615281565b60405180910390f35b610562600480360381019061055d91906158b6565b6110f7565b60405161056f9190615905565b60405180910390f35b610592600480360381019061058d9190615470565b611126565b60405161059f9190615058565b60405180910390f35b6105c260048036038101906105bd9190615245565b611191565b005b6105cc6111a8565b6040516105d991906151e3565b60405180910390f35b6105fc60048036038101906105f791906159cc565b61123a565b005b61061860048036038101906106139190615ab5565b6113fd565b005b610634600480360381019061062f9190615245565b611438565b6040516106419190615281565b60405180910390f35b610664600480360381019061065f9190615b24565b611499565b6040516106719190615d7a565b60405180910390f35b610682611570565b60405161068f9190615361565b60405180910390f35b6106b260048036038101906106ad9190615205565b611577565b6040516106bf9190615058565b60405180910390f35b6106e260048036038101906106dd9190615245565b6115b4565b6040516106ef9190615ee6565b60405180910390f35b610712600480360381019061070d9190615f40565b611769565b005b61072e60048036038101906107299190615325565b611b00565b60405161073b9190615281565b60405180910390f35b61075e60048036038101906107599190615470565b611b24565b005b61077a60048036038101906107759190615f6d565b611b45565b6040516107879190615058565b60405180910390f35b6107aa60048036038101906107a59190615f6d565b611cf6565b6040516107b79190615281565b60405180910390f35b6107c8611d7d565b6040516107d59190615361565b60405180910390f35b6107f860048036038101906107f39190615245565b611da1565b005b610814600480360381019061080f9190615fad565b611db8565b005b610830600480360381019061082b919061604c565b611df3565b005b61016060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610874611e2e565b73ffffffffffffffffffffffffffffffffffffffff16146108ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c1906160f4565b60405180910390fd5b6108f47fa52f07bb8dc8df886598eb50edeaba2b8e45715237ed244354b60ea04d0390b889611126565b610933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092a90616186565b60405180910390fd5b6000848481019061094491906161e4565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ac90616283565b60405180910390fd5b6109c28686868686611e36565b50505050505050505050565b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610a415750610a4082611fe0565b5b9050919050565b60606037805480602002602001604051908101604052809291908181526020018280548015610acc57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610a82575b5050505050905090565b606060358054610ae5906162d2565b80601f0160208091040260200160405190810160405280929190818152602001828054610b11906162d2565b8015610b5e5780601f10610b3357610100808354040283529160200191610b5e565b820191906000526020600020905b815481529060010190602001808311610b4157829003601f168201915b5050505050905090565b6000610b7261205a565b610b7c83836120a4565b610b8683836120df565b905092915050565b6000610b9a8242612102565b9050919050565b6000603454905090565b60008061015f6000610bbb611e2e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050610c28610c02611e2e565b846040518060200160405280600081525060405180602001604052806000815250612246565b61016060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639bd9bbc685856040518363ffffffff1660e01b8152600401610c8692919061633a565b600060405180830381600087803b158015610ca057600080fd5b505af1158015610cb4573d6000803e3d6000fd5b505050508281600d016000828254610ccc91906163a5565b925050819055508373ffffffffffffffffffffffffffffffffffffffff16610cf2611e2e565b73ffffffffffffffffffffffffffffffffffffffff167fa86305abc2db271df4609aa86a8d044bc11fb36939841bfdad6c1ab2b26e947185604051610d379190615281565b60405180910390a3600191505092915050565b60006040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7e90616425565b60405180910390fd5b600060c96000838152602001908152602001600020600101549050919050565b610daf61205a565b7fa52f07bb8dc8df886598eb50edeaba2b8e45715237ed244354b60ea04d0390b8610dd98161248b565b60008b8b8b8b8b8b8b8b8b8b604051602001610dfe9a99989796959493929190616445565b6040516020818303038152906040529050610e198d8261249f565b50505050505050505050505050565b610e3182610d87565b610e3a8161248b565b610e4483836128e7565b505050565b60006012905090565b610e5a611e2e565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610ec7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebe90616553565b60405180910390fd5b610ed182826128ff565b5050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610eff8161248b565b610f07612917565b50565b60606000825167ffffffffffffffff811115610f2957610f286154e7565b5b604051908082528060200260200182016040528015610f575781602001602082028036833780820191505090505b50905060005b8351811015610fb957610f89848281518110610f7c57610f7b616573565b5b6020026020010151611066565b828281518110610f9c57610f9b616573565b5b60200260200101818152505080610fb2906165a2565b9050610f5d565b5080915050919050565b7fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b81565b60006001905090565b6000606560009054906101000a900460ff16905090565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103990616636565b60405180910390fd5b7fa52f07bb8dc8df886598eb50edeaba2b8e45715237ed244354b60ea04d0390b881565b6000603360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6110d98161248b565b6110e161297a565b50565b60006110f082426129dd565b9050919050565b600061111e8260fb6000868152602001908152602001600020612b3390919063ffffffff16565b905092915050565b600060c9600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61119c8160006120a4565b6111a581612b4d565b50565b6060603680546111b7906162d2565b80601f01602080910402602001604051908101604052809291908181526020018280546111e3906162d2565b80156112305780601f1061120557610100808354040283529160200191611230565b820191906000526020600020905b81548152906001019060200180831161121357829003601f168201915b5050505050905090565b61124261205a565b7fa52f07bb8dc8df886598eb50edeaba2b8e45715237ed244354b60ea04d0390b861126c8161248b565b8686905089899050146112b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ab906166c8565b60405180910390fd5b8484905087879050146112fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f39061675a565b60405180910390fd5b828290508585905014611344576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133b906167ec565b60405180910390fd5b60005b898990508110156113f1576113de8a8a8381811061136857611367616573565b5b905060200201602081019061137d9190615245565b8989848181106113905761138f616573565b5b90506020020160208101906113a59190615245565b8888858181106113b8576113b7616573565b5b905060200201358787868181106113d2576113d1616573565b5b90506020020135612dad565b80806113e9906165a2565b915050611347565b50505050505050505050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142f90616858565b60405180910390fd5b60008061015f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600c015481600e01546114919190616878565b915050919050565b606060008383905067ffffffffffffffff8111156114ba576114b96154e7565b5b6040519080825280602002602001820160405280156114f357816020015b6114e0614ca0565b8152602001906001900390816114d85790505b50905060005b848490508110156115655761153485858381811061151a57611519616573565b5b905060200201602081019061152f9190615245565b6115b4565b82828151811061154757611546616573565b5b6020026020010181905250808061155d906165a2565b9150506114f9565b508091505092915050565b6000801b81565b60006040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ab906168f8565b60405180910390fd5b6115bc614ca0565b600061015f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060405180610200016040528082600c015481526020018473ffffffffffffffffffffffffffffffffffffffff16815260200182600601600001548152602001826000016001015481526020018260060160010154815260200182600601600301600080815260200190815260200160002060000154815260200182600601600301600060018152602001908152602001600020600001548152602001826000016003016000808152602001908152602001600020600101548152602001826000016003016000600181526020019081526020016000206001015481526020018260060160030160008081526020019081526020016000206001015481526020018260060160030160006001815260200190815260200160002060010154815260200182600d0154815260200182600e01548152602001826010015481526020018260110154815260200182600f0160009054906101000a900460ff161515815250915050919050565b60008060019054906101000a900460ff1615905080801561179a5750600160008054906101000a900460ff1660ff16105b806117c757506117a930613153565b1580156117c65750600160008054906101000a900460ff1660ff16145b5b611806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fd9061698a565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015611843576001600060016101000a81548160ff0219169083151502179055505b6000600167ffffffffffffffff8111156118605761185f6154e7565b5b60405190808252806020026020018201604052801561188e5781602001602082028036833780820191505090505b509050611899611e2e565b816000815181106118ad576118ac616573565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506118ef613176565b6118f76131c7565b6118ff613218565b611907613269565b61190f6132ba565b611917613326565b61198c6040518060400160405280600b81526020017f4c6f636b6564204e4f52490000000000000000000000000000000000000000008152506040518060400160405280600581526020017f6c4e4f5249000000000000000000000000000000000000000000000000000000815250836133bc565b8261016060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff166329965a1d307fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b306040518463ffffffff1660e01b8152600401611a3f939291906169aa565b600060405180830381600087803b158015611a5957600080fd5b505af1158015611a6d573d6000803e3d6000fd5b50505050611aa27fa52f07bb8dc8df886598eb50edeaba2b8e45715237ed244354b60ea04d0390b8611a9d611e2e565b6128e7565b508015611afc5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051611af39190616a26565b60405180910390a15b5050565b6000611b1d60fb600084815260200190815260200160002061361f565b9050919050565b611b2d82610d87565b611b368161248b565b611b4083836128ff565b505050565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611c5d5750603860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611c5c5750603a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b80611cee5750603960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b905092915050565b6000603b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b611dac8160006120a4565b611db581613634565b50565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dea90616a8d565b60405180910390fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2590616a8d565b60405180910390fd5b600033905090565b6000808585810190611e489190616b02565b9050600081602001511115611ea657611ea58787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061249f565b5b61015f6000826000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600f0160009054906101000a900460ff16611f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3190616ba1565b60405180910390fd5b611fd281600001518888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613894565b600191505095945050505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806120535750612052826138a8565b5b9050919050565b612062610ff0565b156120a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209990616c0d565b60405180910390fd5b565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d690616c79565b60405180910390fd5b6000806120ea611e2e565b90506120f7818585613912565b600191505092915050565b60008061015f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060003073ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b81526004016121829190615905565b602060405180830381865afa15801561219f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c39190616cae565b905081600f0160009054906101000a900460ff161561223b576121e585613adb565b156122235781600d01546122126122088685600001613b4d90919063ffffffff16565b84600c0154613b75565b61221c9190616878565b905061223a565b81600d015482600c01546122379190616878565b90505b5b809250505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036122b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ac90616d4d565b60405180910390fd5b60006122bf611e2e565b90506122ce8186600087613b8e565b6000603360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905084811015612355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234c90616ddf565b60405180910390fd5b848103603360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555084603460008282546123ad9190616878565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a409887878760405161241593929190616e43565b60405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8760405161247b9190615281565b60405180910390a3505050505050565b61249c81612497611e2e565b613d2c565b50565b6000818060200190518101906124b59190616f93565b9050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff160361252a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252190617033565b60405180910390fd5b6125587fa52f07bb8dc8df886598eb50edeaba2b8e45715237ed244354b60ea04d0390b88260000151611126565b15612598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258f906170c5565b60405180910390fd5b80606001518160200151106125e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d990617157565b60405180910390fd5b80606001514210612628576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261f906171e9565b60405180910390fd5b61015f6000826000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600f0160009054906101000a900460ff16156126bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b490617255565b60405180910390fd5b600061015f6000836000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508381600c01819055508381600e0181905550600181600f0160006101000a81548160ff021916908315150217905550816020015182604001511115612811578161010001518260c0015110158061276557508161012001518260e0015110155b6127a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279b906172c1565b60405180910390fd5b83816000016002018190555081602001518160000160000181905550816040015181600001600101819055506127f082608001518360c0015183600001613db19092919063ffffffff16565b6128108260a001518360e0015183600001613db19092919063ffffffff16565b5b838160060160020181905550816020015181600601600001819055508160600151816006016001018190555061285e826080015183610100015183600601613db19092919063ffffffff16565b61287f8260a0015183610120015183600601613db19092919063ffffffff16565b816020015184836000015173ffffffffffffffffffffffffffffffffffffffff167f17161516b6ce34594617177a800b150a86ddee02c06993a73ef000a02367d119856040015186606001516040516128d99291906172e1565b60405180910390a450505050565b6128f18282613f80565b6128fb8282614047565b5050565b6129098282613f80565b612913828261407b565b5050565b61291f6140af565b6000606560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612963611e2e565b6040516129709190615905565b60405180910390a1565b61298261205a565b6001606560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586129c6611e2e565b6040516129d39190615905565b60405180910390a1565b60008061015f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060003073ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401612a5d9190615905565b602060405180830381865afa158015612a7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a9e9190616cae565b90506000612aab86613adb565b612ab95782600c0154612ad0565b612acf8584600001613b4d90919063ffffffff16565b5b905082600f0160009054906101000a900460ff1615612b275782600d0154612b1a612b1083612b0b8988600601613b4d90919063ffffffff16565b613b75565b85600c0154613b75565b612b249190616878565b91505b81935050505092915050565b6000612b4283600001836140f8565b60001c905092915050565b8073ffffffffffffffffffffffffffffffffffffffff16612b6c611e2e565b73ffffffffffffffffffffffffffffffffffffffff1603612bc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb99061737c565b60405180910390fd5b603860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612cac57603a6000612c20611e2e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055612d49565b600160396000612cba611e2e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b612d51611e2e565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f960405160405180910390a350565b600082148015612dbd5750600081115b80612dd45750600082118015612dd35750600081145b5b612e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0a9061740e565b60405180910390fd5b600061015f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600f0160009054906101000a900460ff16612ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9f9061747a565b60405180910390fd5b612eb185613adb565b612ef0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ee79061750c565b60405180910390fd5b60008084148015612f015750600083115b612f0b5783612f0d565b425b905042811015612f52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f499061759e565b60405180910390fd5b6000612f6a8284600001613b4d90919063ffffffff16565b905082600c01548110612fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fa99061760a565b60405180910390fd5b60008184600c0154612fc49190616878565b905060008086111561301b5781861115613013576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161300a90617676565b60405180910390fd5b85905061301f565b8190505b8085600c015461302f9190616878565b85600c018190555083856010018190555080856011018190555061307389826040518060200160405280600081525060405180602001604052806000815250612246565b61016060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639bd9bbc689836040518363ffffffff1660e01b81526004016130d192919061633a565b600060405180830381600087803b1580156130eb57600080fd5b505af11580156130ff573d6000803e3d6000fd5b50505050808973ffffffffffffffffffffffffffffffffffffffff16857f0bbe3f9ae306d75ae6df08cd4a79ac5c6eae93ffae7d7e52f2859bf27592519d60405160405180910390a4505050505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff166131c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131bc90617708565b60405180910390fd5b565b600060019054906101000a900460ff16613216576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320d90617708565b60405180910390fd5b565b600060019054906101000a900460ff16613267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325e90617708565b60405180910390fd5b565b600060019054906101000a900460ff166132b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132af90617708565b60405180910390fd5b565b600060019054906101000a900460ff16613309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161330090617708565b60405180910390fd5b6000606560006101000a81548160ff021916908315150217905550565b600060019054906101000a900460ff16613375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161336c90617708565b60405180910390fd5b6133896000801b613384611e2e565b6128e7565b6133ba7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6133b5611e2e565b6128e7565b565b600060019054906101000a900460ff1661340b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161340290617708565b60405180910390fd5b826035908161341a91906178ca565b50816036908161342a91906178ca565b508060379080519060200190613441929190614d35565b5060005b81518110156134d35760016038600084848151811061346757613466616573565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806134cb906165a2565b915050613445565b50731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff166329965a1d307fac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce2177054306040518463ffffffff1660e01b8152600401613545939291906169aa565b600060405180830381600087803b15801561355f57600080fd5b505af1158015613573573d6000803e3d6000fd5b50505050731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff166329965a1d307faea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a306040518463ffffffff1660e01b81526004016135e8939291906169aa565b600060405180830381600087803b15801561360257600080fd5b505af1158015613616573d6000803e3d6000fd5b50505050505050565b600061362d82600001614123565b9050919050565b61363c611e2e565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036136a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136a090617a0e565b60405180910390fd5b603860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561379c576001603a6000613709611e2e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613830565b603960006137a8611e2e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b613838611e2e565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa160405160405180910390a350565b6138a2848484846001614134565b50505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613981576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161397890617aa0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036139f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139e790617b32565b60405180910390fd5b80603b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051613ace9190615281565b60405180910390a3505050565b60008061015f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600f0160009054906101000a900460ff168015613b45575060008160000160000154115b915050919050565b6000613b598383614312565b613b6384846143e2565b613b6d91906163a5565b905092915050565b6000818310613b845781613b86565b825b905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614905060008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490506000613c207fa52f07bb8dc8df886598eb50edeaba2b8e45715237ed244354b60ea04d0390b888611126565b905060008673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16141590506000613c61886110e4565b8611159050838015613c705750815b8015613c795750825b15613cce5785613c8889611066565b1015613cc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613cc090617b9e565b60405180910390fd5b613d15565b84613d145780613d13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d0a90617b9e565b60405180910390fd5b5b5b613d218989898961446f565b505050505050505050565b613d368282611126565b613dad57613d4381614489565b613d518360001c60206144b6565b604051602001613d62929190617c92565b6040516020818303038152906040526040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613da491906151e3565b60405180910390fd5b5050565b6000836004015490506000846004015403613e12578360000154831015613e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e0490617d3e565b60405180910390fd5b613e7a565b836003016000600183613e259190616878565b815260200190815260200160002060000154831015613e79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e7090617dd0565b60405180910390fd5b5b8360010154831115613ec1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613eb890617e62565b60405180910390fd5b8360020154828560050154613ed691906163a5565b1115613f17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f0e90617ef4565b60405180910390fd5b600084600301600083815260200190815260200160002090508381600001819055508281600101819055506001856004016000828254613f5791906163a5565b9250508190555082856005016000828254613f7291906163a5565b925050819055505050505050565b613f8a82826146f2565b7fa52f07bb8dc8df886598eb50edeaba2b8e45715237ed244354b60ea04d0390b882036140435761015f60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600f0160009054906101000a900460ff1615614042576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161403990617f86565b60405180910390fd5b5b5050565b61405182826146fe565b6140768160fb60008581526020019081526020016000206147df90919063ffffffff16565b505050565b614085828261480f565b6140aa8160fb60008581526020019081526020016000206148f190919063ffffffff16565b505050565b6140b7610ff0565b6140f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140ed90617ff2565b60405180910390fd5b565b60008260000182815481106141105761410f616573565b5b9060005260206000200154905092915050565b600081600001805490509050919050565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036141a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161419a9061805e565b60405180910390fd5b60006141ad611e2e565b90506141bc8160008888613b8e565b84603460008282546141ce91906163a5565b9250508190555084603360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461422491906163a5565b9250508190555061423b8160008888888888614921565b8573ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d87878760405161429c93929190616e43565b60405180910390a38573ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516143029190615281565b60405180910390a3505050505050565b600080836005015484600201541061433b57836005015484600201546143389190616878565b90505b8360010154831061434f57809150506143dc565b600084600001549050600085600401541115614391578460030160006001876004015461437c9190616878565b81526020019081526020016000206000015490505b60008186600101546143a39190616878565b90508185106143d3578082866143b99190616878565b846143c4919061807e565b6143ce91906180ef565b6143d6565b60005b93505050505b92915050565b6000806000905060008460040154905060005b818110156144565785600301600082815260200190815260200160002060000154851061444357856003016000828152602001908152602001600020600101548361444091906163a5565b92505b808061444e906165a2565b9150506143f5565b50614465856002015483613b75565b9250505092915050565b61447761205a565b61448384848484614af3565b50505050565b60606144af8273ffffffffffffffffffffffffffffffffffffffff16601460ff166144b6565b9050919050565b6060600060028360026144c9919061807e565b6144d391906163a5565b67ffffffffffffffff8111156144ec576144eb6154e7565b5b6040519080825280601f01601f19166020018201604052801561451e5781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061455657614555616573565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106145ba576145b9616573565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026145fa919061807e565b61460491906163a5565b90505b60018111156146a4577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061464657614645616573565b5b1a60f81b82828151811061465d5761465c616573565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061469d90618120565b9050614607565b50600084146146e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016146df90618195565b60405180910390fd5b8091505092915050565b6146fa61205a565b5050565b6147088282611126565b6147db57600160c9600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550614780611e2e565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000614807836000018373ffffffffffffffffffffffffffffffffffffffff1660001b614af9565b905092915050565b6148198282611126565b156148ed57600060c9600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550614892611e2e565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b6000614919836000018373ffffffffffffffffffffffffffffffffffffffff1660001b614b69565b905092915050565b6000731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff1663aabbb8ca877fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6040518363ffffffff1660e01b81526004016149929291906181b5565b602060405180830381865afa1580156149af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149d391906181de565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614614a82578073ffffffffffffffffffffffffffffffffffffffff166223de298989898989896040518763ffffffff1660e01b8152600401614a4b9695949392919061820b565b600060405180830381600087803b158015614a6557600080fd5b505af1158015614a79573d6000803e3d6000fd5b50505050614ae9565b8115614ae857614aa78673ffffffffffffffffffffffffffffffffffffffff16613153565b15614ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614ade90618312565b60405180910390fd5b5b5b5050505050505050565b50505050565b6000614b058383614c7d565b614b5e578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050614b63565b600090505b92915050565b60008083600101600084815260200190815260200160002054905060008114614c71576000600182614b9b9190616878565b9050600060018660000180549050614bb39190616878565b9050818114614c22576000866000018281548110614bd457614bd3616573565b5b9060005260206000200154905080876000018481548110614bf857614bf7616573565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b85600001805480614c3657614c35618332565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050614c77565b60009150505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b60405180610200016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b828054828255906000526020600020908101928215614dae579160200282015b82811115614dad5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190614d55565b5b509050614dbb9190614dbf565b5090565b5b80821115614dd8576000816000905550600101614dc0565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614e1b82614df0565b9050919050565b614e2b81614e10565b8114614e3657600080fd5b50565b600081359050614e4881614e22565b92915050565b6000819050919050565b614e6181614e4e565b8114614e6c57600080fd5b50565b600081359050614e7e81614e58565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112614ea957614ea8614e84565b5b8235905067ffffffffffffffff811115614ec657614ec5614e89565b5b602083019150836001820283011115614ee257614ee1614e8e565b5b9250929050565b60008060008060008060008060c0898b031215614f0957614f08614de6565b5b6000614f178b828c01614e39565b9850506020614f288b828c01614e39565b9750506040614f398b828c01614e39565b9650506060614f4a8b828c01614e6f565b955050608089013567ffffffffffffffff811115614f6b57614f6a614deb565b5b614f778b828c01614e93565b945094505060a089013567ffffffffffffffff811115614f9a57614f99614deb565b5b614fa68b828c01614e93565b92509250509295985092959890939650565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b614fed81614fb8565b8114614ff857600080fd5b50565b60008135905061500a81614fe4565b92915050565b60006020828403121561502657615025614de6565b5b600061503484828501614ffb565b91505092915050565b60008115159050919050565b6150528161503d565b82525050565b600060208201905061506d6000830184615049565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6150a881614e10565b82525050565b60006150ba838361509f565b60208301905092915050565b6000602082019050919050565b60006150de82615073565b6150e8818561507e565b93506150f38361508f565b8060005b8381101561512457815161510b88826150ae565b9750615116836150c6565b9250506001810190506150f7565b5085935050505092915050565b6000602082019050818103600083015261514b81846150d3565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561518d578082015181840152602081019050615172565b60008484015250505050565b6000601f19601f8301169050919050565b60006151b582615153565b6151bf818561515e565b93506151cf81856020860161516f565b6151d881615199565b840191505092915050565b600060208201905081810360008301526151fd81846151aa565b905092915050565b6000806040838503121561521c5761521b614de6565b5b600061522a85828601614e39565b925050602061523b85828601614e6f565b9150509250929050565b60006020828403121561525b5761525a614de6565b5b600061526984828501614e39565b91505092915050565b61527b81614e4e565b82525050565b60006020820190506152966000830184615272565b92915050565b6000806000606084860312156152b5576152b4614de6565b5b60006152c386828701614e39565b93505060206152d486828701614e39565b92505060406152e586828701614e6f565b9150509250925092565b6000819050919050565b615302816152ef565b811461530d57600080fd5b50565b60008135905061531f816152f9565b92915050565b60006020828403121561533b5761533a614de6565b5b600061534984828501615310565b91505092915050565b61535b816152ef565b82525050565b60006020820190506153766000830184615352565b92915050565b60008060008060008060008060008060006101608c8e0312156153a2576153a1614de6565b5b60006153b08e828f01614e6f565b9b505060206153c18e828f01614e39565b9a505060406153d28e828f01614e6f565b99505060606153e38e828f01614e6f565b98505060806153f48e828f01614e6f565b97505060a06154058e828f01614e6f565b96505060c06154168e828f01614e6f565b95505060e06154278e828f01614e6f565b9450506101006154398e828f01614e6f565b93505061012061544b8e828f01614e6f565b92505061014061545d8e828f01614e6f565b9150509295989b509295989b9093969950565b6000806040838503121561548757615486614de6565b5b600061549585828601615310565b92505060206154a685828601614e39565b9150509250929050565b600060ff82169050919050565b6154c6816154b0565b82525050565b60006020820190506154e160008301846154bd565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61551f82615199565b810181811067ffffffffffffffff8211171561553e5761553d6154e7565b5b80604052505050565b6000615551614ddc565b905061555d8282615516565b919050565b600067ffffffffffffffff82111561557d5761557c6154e7565b5b602082029050602081019050919050565b60006155a161559c84615562565b615547565b905080838252602082019050602084028301858111156155c4576155c3614e8e565b5b835b818110156155ed57806155d98882614e39565b8452602084019350506020810190506155c6565b5050509392505050565b600082601f83011261560c5761560b614e84565b5b813561561c84826020860161558e565b91505092915050565b60006020828403121561563b5761563a614de6565b5b600082013567ffffffffffffffff81111561565957615658614deb565b5b615665848285016155f7565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6156a381614e4e565b82525050565b60006156b5838361569a565b60208301905092915050565b6000602082019050919050565b60006156d98261566e565b6156e38185615679565b93506156ee8361568a565b8060005b8381101561571f57815161570688826156a9565b9750615711836156c1565b9250506001810190506156f2565b5085935050505092915050565b6000602082019050818103600083015261574681846156ce565b905092915050565b600080fd5b600067ffffffffffffffff82111561576e5761576d6154e7565b5b61577782615199565b9050602081019050919050565b82818337600083830152505050565b60006157a66157a184615753565b615547565b9050828152602081018484840111156157c2576157c161574e565b5b6157cd848285615784565b509392505050565b600082601f8301126157ea576157e9614e84565b5b81356157fa848260208601615793565b91505092915050565b600080600080600060a0868803121561581f5761581e614de6565b5b600061582d88828901614e39565b955050602061583e88828901614e39565b945050604061584f88828901614e6f565b935050606086013567ffffffffffffffff8111156158705761586f614deb565b5b61587c888289016157d5565b925050608086013567ffffffffffffffff81111561589d5761589c614deb565b5b6158a9888289016157d5565b9150509295509295909350565b600080604083850312156158cd576158cc614de6565b5b60006158db85828601615310565b92505060206158ec85828601614e6f565b9150509250929050565b6158ff81614e10565b82525050565b600060208201905061591a60008301846158f6565b92915050565b60008083601f84011261593657615935614e84565b5b8235905067ffffffffffffffff81111561595357615952614e89565b5b60208301915083602082028301111561596f5761596e614e8e565b5b9250929050565b60008083601f84011261598c5761598b614e84565b5b8235905067ffffffffffffffff8111156159a9576159a8614e89565b5b6020830191508360208202830111156159c5576159c4614e8e565b5b9250929050565b6000806000806000806000806080898b0312156159ec576159eb614de6565b5b600089013567ffffffffffffffff811115615a0a57615a09614deb565b5b615a168b828c01615920565b9850985050602089013567ffffffffffffffff811115615a3957615a38614deb565b5b615a458b828c01615920565b9650965050604089013567ffffffffffffffff811115615a6857615a67614deb565b5b615a748b828c01615976565b9450945050606089013567ffffffffffffffff811115615a9757615a96614deb565b5b615aa38b828c01615976565b92509250509295985092959890939650565b600080600060608486031215615ace57615acd614de6565b5b6000615adc86828701614e39565b9350506020615aed86828701614e6f565b925050604084013567ffffffffffffffff811115615b0e57615b0d614deb565b5b615b1a868287016157d5565b9150509250925092565b60008060208385031215615b3b57615b3a614de6565b5b600083013567ffffffffffffffff811115615b5957615b58614deb565b5b615b6585828601615920565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615ba68161503d565b82525050565b61020082016000820151615bc3600085018261569a565b506020820151615bd6602085018261509f565b506040820151615be9604085018261569a565b506060820151615bfc606085018261569a565b506080820151615c0f608085018261569a565b5060a0820151615c2260a085018261569a565b5060c0820151615c3560c085018261569a565b5060e0820151615c4860e085018261569a565b50610100820151615c5d61010085018261569a565b50610120820151615c7261012085018261569a565b50610140820151615c8761014085018261569a565b50610160820151615c9c61016085018261569a565b50610180820151615cb161018085018261569a565b506101a0820151615cc66101a085018261569a565b506101c0820151615cdb6101c085018261569a565b506101e0820151615cf06101e0850182615b9d565b50505050565b6000615d028383615bac565b6102008301905092915050565b6000602082019050919050565b6000615d2782615b71565b615d318185615b7c565b9350615d3c83615b8d565b8060005b83811015615d6d578151615d548882615cf6565b9750615d5f83615d0f565b925050600181019050615d40565b5085935050505092915050565b60006020820190508181036000830152615d948184615d1c565b905092915050565b61020082016000820151615db3600085018261569a565b506020820151615dc6602085018261509f565b506040820151615dd9604085018261569a565b506060820151615dec606085018261569a565b506080820151615dff608085018261569a565b5060a0820151615e1260a085018261569a565b5060c0820151615e2560c085018261569a565b5060e0820151615e3860e085018261569a565b50610100820151615e4d61010085018261569a565b50610120820151615e6261012085018261569a565b50610140820151615e7761014085018261569a565b50610160820151615e8c61016085018261569a565b50610180820151615ea161018085018261569a565b506101a0820151615eb66101a085018261569a565b506101c0820151615ecb6101c085018261569a565b506101e0820151615ee06101e0850182615b9d565b50505050565b600061020082019050615efc6000830184615d9c565b92915050565b6000615f0d82614e10565b9050919050565b615f1d81615f02565b8114615f2857600080fd5b50565b600081359050615f3a81615f14565b92915050565b600060208284031215615f5657615f55614de6565b5b6000615f6484828501615f2b565b91505092915050565b60008060408385031215615f8457615f83614de6565b5b6000615f9285828601614e39565b9250506020615fa385828601614e39565b9150509250929050565b60008060008060808587031215615fc757615fc6614de6565b5b6000615fd587828801614e39565b9450506020615fe687828801614e6f565b935050604085013567ffffffffffffffff81111561600757616006614deb565b5b616013878288016157d5565b925050606085013567ffffffffffffffff81111561603457616033614deb565b5b616040878288016157d5565b91505092959194509250565b6000806040838503121561606357616062614de6565b5b600061607185828601614e6f565b925050602083013567ffffffffffffffff81111561609257616091614deb565b5b61609e858286016157d5565b9150509250929050565b7f6c4e4f52493a206e6f742042726964676564506f6c79676f6e4e4f5249000000600082015250565b60006160de601d8361515e565b91506160e9826160a8565b602082019050919050565b6000602082019050818103600083015261610d816160d1565b9050919050565b7f6c4e4f52493a2073656e646572206973206d697373696e6720726f6c6520544f60008201527f4b454e5f4752414e5445525f524f4c4500000000000000000000000000000000602082015250565b600061617060308361515e565b915061617b82616114565b604082019050919050565b6000602082019050818103600083015261619f81616163565b9050919050565b60006161b182614df0565b9050919050565b6161c1816161a6565b81146161cc57600080fd5b50565b6000813590506161de816161b8565b92915050565b6000602082840312156161fa576161f9614de6565b5b6000616208848285016161cf565b91505092915050565b7f6c4e4f52493a20746f6b656e2073656e64206d697373696e672072657175697260008201527f6564207573657244617461000000000000000000000000000000000000000000602082015250565b600061626d602b8361515e565b915061627882616211565b604082019050919050565b6000602082019050818103600083015261629c81616260565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806162ea57607f821691505b6020821081036162fd576162fc6162a3565b5b50919050565b600082825260208201905092915050565b50565b6000616324600083616303565b915061632f82616314565b600082019050919050565b600060608201905061634f60008301856158f6565b61635c6020830184615272565b818103604083015261636d81616317565b90509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006163b082614e4e565b91506163bb83614e4e565b92508282019050808211156163d3576163d2616376565b5b92915050565b7f6c4e4f52493a207472616e7366657246726f6d2064697361626c656400000000600082015250565b600061640f601c8361515e565b915061641a826163d9565b602082019050919050565b6000602082019050818103600083015261643e81616402565b9050919050565b60006101408201905061645b600083018d6158f6565b616468602083018c615272565b616475604083018b615272565b616482606083018a615272565b61648f6080830189615272565b61649c60a0830188615272565b6164a960c0830187615272565b6164b660e0830186615272565b6164c4610100830185615272565b6164d2610120830184615272565b9b9a5050505050505050505050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b600061653d602f8361515e565b9150616548826164e1565b604082019050919050565b6000602082019050818103600083015261656c81616530565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006165ad82614e4e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036165df576165de616376565b5b600182019050919050565b7f6c4e4f52493a206f70657261746f7253656e642064697361626c656400000000600082015250565b6000616620601c8361515e565b915061662b826165ea565b602082019050919050565b6000602082019050818103600083015261664f81616613565b9050919050565b7f6c4e4f52493a2066726f6d4163636f756e747320616e6420746f4163636f756e60008201527f7473206c656e677468206d69736d617463680000000000000000000000000000602082015250565b60006166b260328361515e565b91506166bd82616656565b604082019050919050565b600060208201905081810360008301526166e1816166a5565b9050919050565b7f6c4e4f52493a20746f4163636f756e747320616e6420617454696d6573206c6560008201527f6e677468206d69736d6174636800000000000000000000000000000000000000602082015250565b6000616744602d8361515e565b915061674f826166e8565b604082019050919050565b6000602082019050818103600083015261677381616737565b9050919050565b7f6c4e4f52493a20617454696d657320616e6420616d6f756e7473206c656e677460008201527f68206d69736d6174636800000000000000000000000000000000000000000000602082015250565b60006167d6602a8361515e565b91506167e18261677a565b604082019050919050565b60006020820190508181036000830152616805816167c9565b9050919050565b7f6c4e4f52493a2073656e642064697361626c6564000000000000000000000000600082015250565b600061684260148361515e565b915061684d8261680c565b602082019050919050565b6000602082019050818103600083015261687181616835565b9050919050565b600061688382614e4e565b915061688e83614e4e565b92508282039050818111156168a6576168a5616376565b5b92915050565b7f6c4e4f52493a207472616e736665722064697361626c65640000000000000000600082015250565b60006168e260188361515e565b91506168ed826168ac565b602082019050919050565b60006020820190508181036000830152616911816168d5565b9050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000616974602e8361515e565b915061697f82616918565b604082019050919050565b600060208201905081810360008301526169a381616967565b9050919050565b60006060820190506169bf60008301866158f6565b6169cc6020830185615352565b6169d960408301846158f6565b949350505050565b6000819050919050565b6000819050919050565b6000616a10616a0b616a06846169e1565b6169eb565b6154b0565b9050919050565b616a20816169f5565b82525050565b6000602082019050616a3b6000830184616a17565b92915050565b7f6c4e4f52493a206275726e696e67206e6f7420737570706f7274656400000000600082015250565b6000616a77601c8361515e565b9150616a8282616a41565b602082019050919050565b60006020820190508181036000830152616aa681616a6a565b9050919050565b600080fd5b600060408284031215616ac857616ac7616aad565b5b616ad26040615547565b90506000616ae284828501614e39565b6000830152506020616af684828501614e6f565b60208301525092915050565b600060408284031215616b1857616b17614de6565b5b6000616b2684828501616ab2565b91505092915050565b7f6c4e4f52493a2043616e6e6f74206465706f73697420776974686f757420612060008201527f6772616e74000000000000000000000000000000000000000000000000000000602082015250565b6000616b8b60258361515e565b9150616b9682616b2f565b604082019050919050565b60006020820190508181036000830152616bba81616b7e565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000616bf760108361515e565b9150616c0282616bc1565b602082019050919050565b60006020820190508181036000830152616c2681616bea565b9050919050565b7f6c4e4f52493a206f70657261746f7220616374696f6e732064697361626c6564600082015250565b6000616c6360208361515e565b9150616c6e82616c2d565b602082019050919050565b60006020820190508181036000830152616c9281616c56565b9050919050565b600081519050616ca881614e58565b92915050565b600060208284031215616cc457616cc3614de6565b5b6000616cd284828501616c99565b91505092915050565b7f4552433737373a206275726e2066726f6d20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000616d3760228361515e565b9150616d4282616cdb565b604082019050919050565b60006020820190508181036000830152616d6681616d2a565b9050919050565b7f4552433737373a206275726e20616d6f756e7420657863656564732062616c6160008201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b6000616dc960238361515e565b9150616dd482616d6d565b604082019050919050565b60006020820190508181036000830152616df881616dbc565b9050919050565b600081519050919050565b6000616e1582616dff565b616e1f8185616303565b9350616e2f81856020860161516f565b616e3881615199565b840191505092915050565b6000606082019050616e586000830186615272565b8181036020830152616e6a8185616e0a565b90508181036040830152616e7e8184616e0a565b9050949350505050565b600081519050616e9781614e22565b92915050565b60006101408284031215616eb457616eb3616aad565b5b616ebf610140615547565b90506000616ecf84828501616e88565b6000830152506020616ee384828501616c99565b6020830152506040616ef784828501616c99565b6040830152506060616f0b84828501616c99565b6060830152506080616f1f84828501616c99565b60808301525060a0616f3384828501616c99565b60a08301525060c0616f4784828501616c99565b60c08301525060e0616f5b84828501616c99565b60e083015250610100616f7084828501616c99565b61010083015250610120616f8684828501616c99565b6101208301525092915050565b60006101408284031215616faa57616fa9614de6565b5b6000616fb884828501616e9d565b91505092915050565b7f6c4e4f52493a20526563697069656e742063616e6e6f74206265207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b600061701d60278361515e565b915061702882616fc1565b604082019050919050565b6000602082019050818103600083015261704c81617010565b9050919050565b7f6c4e4f52493a20526563697069656e742063616e6e6f74206265206772616e7460008201527f2061646d696e0000000000000000000000000000000000000000000000000000602082015250565b60006170af60268361515e565b91506170ba82617053565b604082019050919050565b600060208201905081810360008301526170de816170a2565b9050919050565b7f6c4e4f52493a20756e6c6f636b456e6454696d652063616e6e6f74206265206260008201527f65666f726520737461727454696d650000000000000000000000000000000000602082015250565b6000617141602f8361515e565b915061714c826170e5565b604082019050919050565b6000602082019050818103600083015261717081617134565b9050919050565b7f6c4e4f52493a20756e6c6f636b456e6454696d652063616e6e6f74206265206960008201527f6e20746865207061737400000000000000000000000000000000000000000000602082015250565b60006171d3602a8361515e565b91506171de82617177565b604082019050919050565b60006020820190508181036000830152617202816171c6565b9050919050565b7f6c4e4f52493a204772616e7420616c7265616479206578697374730000000000600082015250565b600061723f601b8361515e565b915061724a82617209565b602082019050919050565b6000602082019050818103600083015261726e81617232565b9050919050565b7f6c4e4f52493a20756e6c6f636b20636c696666203e207665737420636c696666600082015250565b60006172ab60208361515e565b91506172b682617275565b602082019050919050565b600060208201905081810360008301526172da8161729e565b9050919050565b60006040820190506172f66000830185615272565b6173036020830184615272565b9392505050565b7f4552433737373a20617574686f72697a696e672073656c66206173206f70657260008201527f61746f7200000000000000000000000000000000000000000000000000000000602082015250565b600061736660248361515e565b91506173718261730a565b604082019050919050565b6000602082019050818103600083015261739581617359565b9050919050565b7f6c4e4f52493a204d75737420737065636966792061207265766f636174696f6e60008201527f2074696d65206f7220616e20616d6f756e74206e6f7420626f74680000000000602082015250565b60006173f8603b8361515e565b91506174038261739c565b604082019050919050565b60006020820190508181036000830152617427816173eb565b9050919050565b7f6c4e4f52493a206e6f206772616e742065786973747300000000000000000000600082015250565b600061746460168361515e565b915061746f8261742e565b602082019050919050565b6000602082019050818103600083015261749381617457565b9050919050565b7f6c4e4f52493a206e6f2076657374696e67207363686564756c6520666f72207460008201527f686973206772616e740000000000000000000000000000000000000000000000602082015250565b60006174f660298361515e565b91506175018261749a565b604082019050919050565b60006020820190508181036000830152617525816174e9565b9050919050565b7f6c4e4f52493a205265766f636174696f6e2063616e6e6f7420626520696e207460008201527f6865207061737400000000000000000000000000000000000000000000000000602082015250565b600061758860278361515e565b91506175938261752c565b604082019050919050565b600060208201905081810360008301526175b78161757b565b9050919050565b7f6c4e4f52493a20746f6b656e7320616c72656164792076657374656400000000600082015250565b60006175f4601c8361515e565b91506175ff826175be565b602082019050919050565b60006020820190508181036000830152617623816175e7565b9050919050565b7f6c4e4f52493a20746f6f2066657720756e76657374656420746f6b656e730000600082015250565b6000617660601e8361515e565b915061766b8261762a565b602082019050919050565b6000602082019050818103600083015261768f81617653565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b60006176f2602b8361515e565b91506176fd82617696565b604082019050919050565b60006020820190508181036000830152617721816176e5565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261778a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261774d565b617794868361774d565b95508019841693508086168417925050509392505050565b60006177c76177c26177bd84614e4e565b6169eb565b614e4e565b9050919050565b6000819050919050565b6177e1836177ac565b6177f56177ed826177ce565b84845461775a565b825550505050565b600090565b61780a6177fd565b6178158184846177d8565b505050565b5b818110156178395761782e600082617802565b60018101905061781b565b5050565b601f82111561787e5761784f81617728565b6178588461773d565b81016020851015617867578190505b61787b6178738561773d565b83018261781a565b50505b505050565b600082821c905092915050565b60006178a160001984600802617883565b1980831691505092915050565b60006178ba8383617890565b9150826002028217905092915050565b6178d382615153565b67ffffffffffffffff8111156178ec576178eb6154e7565b5b6178f682546162d2565b61790182828561783d565b600060209050601f8311600181146179345760008415617922578287015190505b61792c85826178ae565b865550617994565b601f19841661794286617728565b60005b8281101561796a57848901518255600182019150602085019450602081019050617945565b868310156179875784890151617983601f891682617890565b8355505b6001600288020188555050505b505050505050565b7f4552433737373a207265766f6b696e672073656c66206173206f70657261746f60008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006179f860218361515e565b9150617a038261799c565b604082019050919050565b60006020820190508181036000830152617a27816179eb565b9050919050565b7f4552433737373a20617070726f76652066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000617a8a60258361515e565b9150617a9582617a2e565b604082019050919050565b60006020820190508181036000830152617ab981617a7d565b9050919050565b7f4552433737373a20617070726f766520746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000617b1c60238361515e565b9150617b2782617ac0565b604082019050919050565b60006020820190508181036000830152617b4b81617b0f565b9050919050565b7f6c4e4f52493a20696e73756666696369656e742062616c616e63650000000000600082015250565b6000617b88601b8361515e565b9150617b9382617b52565b602082019050919050565b60006020820190508181036000830152617bb781617b7b565b9050919050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000617bff601783617bbe565b9150617c0a82617bc9565b601782019050919050565b6000617c2082615153565b617c2a8185617bbe565b9350617c3a81856020860161516f565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000617c7c601183617bbe565b9150617c8782617c46565b601182019050919050565b6000617c9d82617bf2565b9150617ca98285617c15565b9150617cb482617c6f565b9150617cc08284617c15565b91508190509392505050565b7f4c6f636b65644e4f52494c69623a20436c696666206265666f7265207363686560008201527f64756c6520737461727400000000000000000000000000000000000000000000602082015250565b6000617d28602a8361515e565b9150617d3382617ccc565b604082019050919050565b60006020820190508181036000830152617d5781617d1b565b9050919050565b7f4c6f636b65644e4f52494c69623a20436c69666673206e6f74206368726f6e6f60008201527f6c6f676963616c00000000000000000000000000000000000000000000000000602082015250565b6000617dba60278361515e565b9150617dc582617d5e565b604082019050919050565b60006020820190508181036000830152617de981617dad565b9050919050565b7f4c6f636b65644e4f52494c69623a20436c696666732063616e6e6f7420656e6460008201527f206166746572207363686564756c650000000000000000000000000000000000602082015250565b6000617e4c602f8361515e565b9150617e5782617df0565b604082019050919050565b60006020820190508181036000830152617e7b81617e3f565b9050919050565b7f4c6f636b65644e4f52494c69623a20436c69666620616d6f756e74732065786360008201527f65656420746f74616c0000000000000000000000000000000000000000000000602082015250565b6000617ede60298361515e565b9150617ee982617e82565b604082019050919050565b60006020820190508181036000830152617f0d81617ed1565b9050919050565b7f6c4e4f52493a2043616e6e6f742061737369676e20726f6c6520746f2061206760008201527f72616e7420686f6c646572206164647265737300000000000000000000000000602082015250565b6000617f7060338361515e565b9150617f7b82617f14565b604082019050919050565b60006020820190508181036000830152617f9f81617f63565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000617fdc60148361515e565b9150617fe782617fa6565b602082019050919050565b6000602082019050818103600083015261800b81617fcf565b9050919050565b7f4552433737373a206d696e7420746f20746865207a65726f2061646472657373600082015250565b600061804860208361515e565b915061805382618012565b602082019050919050565b600060208201905081810360008301526180778161803b565b9050919050565b600061808982614e4e565b915061809483614e4e565b92508282026180a281614e4e565b915082820484148315176180b9576180b8616376565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006180fa82614e4e565b915061810583614e4e565b925082618115576181146180c0565b5b828204905092915050565b600061812b82614e4e565b91506000820361813e5761813d616376565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b600061817f60208361515e565b915061818a82618149565b602082019050919050565b600060208201905081810360008301526181ae81618172565b9050919050565b60006040820190506181ca60008301856158f6565b6181d76020830184615352565b9392505050565b6000602082840312156181f4576181f3614de6565b5b600061820284828501616e88565b91505092915050565b600060c08201905061822060008301896158f6565b61822d60208301886158f6565b61823a60408301876158f6565b6182476060830186615272565b81810360808301526182598185616e0a565b905081810360a083015261826d8184616e0a565b9050979650505050505050565b7f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460008201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60208201527f6b656e73526563697069656e7400000000000000000000000000000000000000604082015250565b60006182fc604d8361515e565b91506183078261827a565b606082019050919050565b6000602082019050818103600083015261832b816182ef565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220b4d8370a983b72833c6056e051d9a6d957d479ff3116c68cc13b5d5b5031b0c864736f6c63430008110033",
    "linkReferences": {},
    "deployedLinkReferences": {}
}
