[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC1155InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC1155InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "idsLength", "type": "uint256" }, { "internalType": "uint256", "name": "valuesLength", "type": "uint256" } ], "name": "ERC1155InvalidArrayLength", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC1155InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC1155InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC1155InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC1155MissingApprovalForAll", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "numerator", "type": "uint256" }, { "internalType": "uint256", "name": "denominator", "type": "uint256" } ], "name": "ERC2981InvalidDefaultRoyalty", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC2981InvalidDefaultRoyaltyReceiver", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "numerator", "type": "uint256" }, { "internalType": "uint256", "name": "denominator", "type": "uint256" } ], "name": "ERC2981InvalidTokenRoyalty", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC2981InvalidTokenRoyaltyReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_minter", "type": "address" } ], "name": "AddBurner", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_minter", "type": "address" } ], "name": "AddMinter", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_minter", "type": "address" } ], "name": "RemoveBurner", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_minter", "type": "address" } ], "name": "RemoveMinter", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "TransferBatch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "isTransferLocked", "type": "bool" } ], "name": "TransferLocked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "TransferSingle", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "value", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "URI", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "_burner", "type": "address" } ], "name": "addBurner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_minter", "type": "address" } ], "name": "addMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "allowedBurner", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "allowedMinter", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "internalType": "struct Base1155.BatchMint[]", "name": "bm", "type": "tuple[]" } ], "name": "batchMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_from", "type": "address" }, { "internalType": "uint256[]", "name": "_ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "_values", "type": "uint256[]" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "contractType", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint96", "name": "royalty", "type": "uint96" }, { "internalType": "string", "name": "__name", "type": "string" }, { "internalType": "string", "name": "__symbol", "type": "string" }, { "internalType": "bool", "name": "_transferLocked", "type": "bool" }, { "internalType": "address", "name": "_metadataResolver", "type": "address" } ], "name": "init", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isBurnLocked", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isMetadataLocked", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isMintLocked", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lockBurn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "lockMetadata", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "lockMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "metadataResolver", "outputs": [ { "internalType": "contract IMetadataResolver", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256[]", "name": "_ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "_values", "type": "uint256[]" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_burner", "type": "address" } ], "name": "removeBurner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_minter", "type": "address" } ], "name": "removeMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "values", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_receiver", "type": "address" }, { "internalType": "uint96", "name": "_feeNumerator", "type": "uint96" } ], "name": "setDefaultRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_metadataResolverAddress", "type": "address" } ], "name": "setMetadataResolver", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "address", "name": "_receiver", "type": "address" }, { "internalType": "uint96", "name": "_feeNumerator", "type": "uint96" } ], "name": "setTokenRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_transferLocked", "type": "bool" } ], "name": "setTransferLocked", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "_interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalBurned", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalMinted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "transferLocked", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "version", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" } ]
60806040523480156200001157600080fd5b50336040518060200160405280600081525062000034816200011a60201b60201c565b50600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000aa5760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000a191906200023a565b60405180910390fd5b620000bb816200012f60201b60201c565b506001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620005b8565b80600290816200012b9190620004d1565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200022282620001f5565b9050919050565b620002348162000215565b82525050565b600060208201905062000251600083018462000229565b92915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002d957607f821691505b602082108103620002ef57620002ee62000291565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003597fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200031a565b6200036586836200031a565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003b2620003ac620003a6846200037d565b62000387565b6200037d565b9050919050565b6000819050919050565b620003ce8362000391565b620003e6620003dd82620003b9565b84845462000327565b825550505050565b600090565b620003fd620003ee565b6200040a818484620003c3565b505050565b5b81811015620004325762000426600082620003f3565b60018101905062000410565b5050565b601f82111562000481576200044b81620002f5565b62000456846200030a565b8101602085101562000466578190505b6200047e62000475856200030a565b8301826200040f565b50505b505050565b600082821c905092915050565b6000620004a66000198460080262000486565b1980831691505092915050565b6000620004c1838362000493565b9150826002028217905092915050565b620004dc8262000257565b67ffffffffffffffff811115620004f857620004f762000262565b5b620005048254620002c0565b6200051182828562000436565b600060209050601f83116001811462000549576000841562000534578287015190505b620005408582620004b3565b865550620005b0565b601f1984166200055986620002f5565b60005b8281101562000583578489015182556001820191506020850194506020810190506200055c565b86831015620005a357848901516200059f601f89168262000493565b8355505b6001600288020188555050505b505050505050565b61484580620005c86000396000f3fe608060405234801561001057600080fd5b50600436106102525760003560e01c80637995c1e411610146578063bc3ba856116100c3578063df10580a11610087578063df10580a1461069a578063e0b6bb67146106b8578063e985e9c5146106c2578063f242432a146106f2578063f2fde38b1461070e578063f44637ba1461072a57610252565b8063bc3ba85614610606578063bd3c996b14610622578063cb2ef6f714610640578063d7e45cd71461065e578063d89135cd1461067c57610252565b8063983b2d561161010a578063983b2d5614610588578063989bdbb6146105a4578063a0c76f62146105ae578063a22cb465146105cc578063a2309ff8146105e857610252565b80637995c1e4146104e45780638b78f0ef146105005780638da5cb5b1461053057806395d89b411461054e5780639727756a1461056c57610252565b80632a55205a116101d45780634b700fc3116101985780634b700fc3146104545780634e1273f41461047057806354fd4d50146104a05780635944c753146104be578063715018a6146104da57610252565b80632a55205a146103b35780632eb2c2d6146103e45780633092afd51461040057806335e60bd41461041c5780633db0f8ab1461043857610252565b80630e89341c1161021b5780630e89341c1461030d57806312686aae1461033d57806318160ddd1461035b5780631a2f459f146103795780631aff0dba146103a957610252565b8062fdd58e1461025757806301ffc9a71461028757806302846858146102b757806304634d8d146102d357806306fdde03146102ef575b600080fd5b610271600480360381019061026c9190612ea6565b610746565b60405161027e9190612ef5565b60405180910390f35b6102a1600480360381019061029c9190612f68565b6107a0565b6040516102ae9190612fb0565b60405180910390f35b6102d160048036038101906102cc9190612fcb565b6107b2565b005b6102ed60048036038101906102e8919061303c565b61084c565b005b6102f7610862565b604051610304919061310c565b60405180910390f35b6103276004803603810190610322919061312e565b6108f4565b604051610334919061310c565b60405180910390f35b6103456109a0565b6040516103529190612fb0565b60405180910390f35b6103636109b3565b6040516103709190612ef5565b60405180910390f35b610393600480360381019061038e9190612fcb565b6109ca565b6040516103a09190612fb0565b60405180910390f35b6103b16109ea565b005b6103cd60048036038101906103c8919061315b565b610a0f565b6040516103db9291906131aa565b60405180910390f35b6103fe60048036038101906103f991906133d0565b610bf9565b005b61041a60048036038101906104159190612fcb565b610ca1565b005b610436600480360381019061043191906134cb565b610d3b565b005b610452600480360381019061044d91906134f8565b610d97565b005b61046e60048036038101906104699190613624565b610ee6565b005b61048a600480360381019061048591906137ac565b610fed565b60405161049791906138e2565b60405180910390f35b6104a86110f6565b6040516104b5919061310c565b60405180910390f35b6104d860048036038101906104d39190613904565b61112f565b005b6104e2611147565b005b6104fe60048036038101906104f99190612fcb565b61115b565b005b61051a60048036038101906105159190612fcb565b6111fd565b6040516105279190612fb0565b60405180910390f35b61053861121d565b6040516105459190613957565b60405180910390f35b610556611247565b604051610563919061310c565b60405180910390f35b610586600480360381019061058191906134f8565b6112d9565b005b6105a2600480360381019061059d9190612fcb565b611438565b005b6105ac6114d2565b005b6105b66114f7565b6040516105c391906139d1565b60405180910390f35b6105e660048036038101906105e191906139ec565b61151d565b005b6105f0611533565b6040516105fd9190612ef5565b60405180910390f35b610620600480360381019061061b9190613bb3565b611539565b005b61062a611746565b6040516106379190612fb0565b60405180910390f35b610648611759565b604051610655919061310c565b60405180910390f35b610666611792565b6040516106739190612fb0565b60405180910390f35b6106846117a5565b6040516106919190612ef5565b60405180910390f35b6106a26117ab565b6040516106af9190612fb0565b60405180910390f35b6106c06117be565b005b6106dc60048036038101906106d79190613bfc565b6117e3565b6040516106e99190612fb0565b60405180910390f35b61070c60048036038101906107079190613c3c565b611877565b005b61072860048036038101906107239190612fcb565b61191f565b005b610744600480360381019061073f9190612fcb565b6119a5565b005b600080600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60006107ab82611a3f565b9050919050565b6107ba611ab9565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507faaa6f69bc76110b2804f7b88baa48f63b68d33979a039065d90d1cf8488d6921816040516108419190613957565b60405180910390a150565b610854611ab9565b61085e8282611b40565b5050565b6060600c805461087190613d02565b80601f016020809104026020016040519081016040528092919081815260200182805461089d90613d02565b80156108ea5780601f106108bf576101008083540402835291602001916108ea565b820191906000526020600020905b8154815290600101906020018083116108cd57829003601f168201915b5050505050905090565b6060600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630b63fd6230846040518363ffffffff1660e01b81526004016109539291906131aa565b600060405180830381865afa158015610970573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906109999190613da3565b9050919050565b600b60009054906101000a900460ff1681565b6000600a546009546109c59190613e1b565b905090565b60076020528060005260406000206000915054906101000a900460ff1681565b6109f2611ab9565b6001600560156101000a81548160ff021916908315150217905550565b6000806000600460008681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1603610ba45760036040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b6000610bae611ce2565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff1686610bda9190613e4f565b610be49190613ec0565b90508160000151819350935050509250929050565b6000610c03611cec565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015610c485750610c4686826117e3565b155b15610c8c5780866040517fe237d922000000000000000000000000000000000000000000000000000000008152600401610c83929190613ef1565b60405180910390fd5b610c998686868686611cf4565b505050505050565b610ca9611ab9565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f2f91b591fc56ac0917953ad01ec225524ee5ef0555213e4c8a9d8c9728ee7ffb81604051610d309190613957565b60405180910390a150565b610d43611ab9565b80600b60006101000a81548160ff0219169083151502179055507f203a216dffc18723de0cd43c6fe2c8dfb542b42f35fc1b295d2991fc92ea8bab81604051610d8c9190612fb0565b60405180910390a150565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1a90613f8c565b60405180910390fd5b60001515600560159054906101000a900460ff16151514610e79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7090613ff8565b60405180910390fd5b610e84838383611dec565b6000805b8251811015610ec657828181518110610ea457610ea3614018565b5b602002602001015182610eb79190614047565b91508080600101915050610e88565b5080600a6000828254610ed99190614047565b9250508190555050505050565b60001515600e60009054906101000a900460ff16151514610f3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f33906140c7565b60405180910390fd5b610f4533611e80565b610f4f8686611b40565b83600c9081610f5e9190614289565b5082600d9081610f6e9190614289565b5081600b60006101000a81548160ff02191690831515021790555080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e60006101000a81548160ff021916908315150217905550505050505050565b6060815183511461103957815183516040517f5b05999100000000000000000000000000000000000000000000000000000000815260040161103092919061435b565b60405180910390fd5b6000835167ffffffffffffffff811115611056576110556131d8565b5b6040519080825280602002602001820160405280156110845781602001602082028036833780820191505090505b50905060005b84518110156110eb576110c16110a98287611f4690919063ffffffff16565b6110bc8387611f5a90919063ffffffff16565b610746565b8282815181106110d4576110d3614018565b5b60200260200101818152505080600101905061108a565b508091505092915050565b6040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b611137611ab9565b611142838383611f6e565b505050565b61114f611ab9565b6111596000611e80565b565b611163611ab9565b60001515600560169054906101000a900460ff161515146111b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b0906143d0565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60066020528060005260406000206000915054906101000a900460ff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600d805461125690613d02565b80601f016020809104026020016040519081016040528092919081815260200182805461128290613d02565b80156112cf5780601f106112a4576101008083540402835291602001916112cf565b820191906000526020600020905b8154815290600101906020018083116112b257829003601f168201915b5050505050905090565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611365576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135c90614462565b60405180910390fd5b60001515600560149054906101000a900460ff161515146113bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b2906144ce565b60405180910390fd5b6113d683838360405180602001604052806000815250612126565b6000805b8251811015611418578281815181106113f6576113f5614018565b5b6020026020010151826114099190614047565b915080806001019150506113da565b50806009600082825461142b9190614047565b9250508190555050505050565b611440611ab9565b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f16baa937b08d58713325f93ac58b8a9369a4359bbefb4957d6d9b402735722ab816040516114c79190613957565b60405180910390a150565b6114da611ab9565b6001600560166101000a81548160ff021916908315150217905550565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61152f611528611cec565b83836121ac565b5050565b60095481565b600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166115c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bc90614462565b60405180910390fd5b60001515600560149054906101000a900460ff1615151461161b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611612906144ce565b60405180910390fd5b6000805b82518110156117285761169d83828151811061163e5761163d614018565b5b60200260200101516000015184838151811061165d5761165c614018565b5b60200260200101516020015185848151811061167c5761167b614018565b5b60200260200101516040015160405180602001604052806000815250612126565b60005b8382815181106116b3576116b2614018565b5b6020026020010151604001515181101561171a578382815181106116da576116d9614018565b5b60200260200101516040015181815181106116f8576116f7614018565b5b60200260200101518361170b9190614047565b925080806001019150506116a0565b50808060010191505061161f565b50806009600082825461173b9190614047565b925050819055505050565b600560159054906101000a900460ff1681565b6040518060400160405280600881526020017f4552432d3131353500000000000000000000000000000000000000000000000081525081565b600560169054906101000a900460ff1681565b600a5481565b600560149054906101000a900460ff1681565b6117c6611ab9565b6001600560146101000a81548160ff021916908315150217905550565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000611881611cec565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156118c657506118c486826117e3565b155b1561190a5780866040517fe237d922000000000000000000000000000000000000000000000000000000008152600401611901929190613ef1565b60405180910390fd5b611917868686868661231c565b505050505050565b611927611ab9565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119995760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016119909190613957565b60405180910390fd5b6119a281611e80565b50565b6119ad611ab9565b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f2a85edc5fabdd9bbaa6d309617215d5b6905e0ed8a48d656d86fc9863e3c4b7781604051611a349190613957565b60405180910390a150565b60007f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611ab25750611ab182612427565b5b9050919050565b611ac1611cec565b73ffffffffffffffffffffffffffffffffffffffff16611adf61121d565b73ffffffffffffffffffffffffffffffffffffffff1614611b3e57611b02611cec565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611b359190613957565b60405180910390fd5b565b6000611b4a611ce2565b6bffffffffffffffffffffffff16905080826bffffffffffffffffffffffff161115611baf5781816040517f6f483d09000000000000000000000000000000000000000000000000000000008152600401611ba692919061451f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c215760006040517fb6d9900a000000000000000000000000000000000000000000000000000000008152600401611c189190613957565b60405180910390fd5b60405180604001604052808473ffffffffffffffffffffffffffffffffffffffff168152602001836bffffffffffffffffffffffff16815250600360008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550905050505050565b6000612710905090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611d665760006040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611d5d9190613957565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611dd85760006040517f01a83514000000000000000000000000000000000000000000000000000000008152600401611dcf9190613957565b60405180910390fd5b611de58585858585612509565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e5e5760006040517f01a83514000000000000000000000000000000000000000000000000000000008152600401611e559190613957565b60405180910390fd5b611e7b836000848460405180602001604052806000815250612509565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600060208202602084010151905092915050565b600060208202602084010151905092915050565b6000611f78611ce2565b6bffffffffffffffffffffffff16905080826bffffffffffffffffffffffff161115611fdf578382826040517fdfd1fc1b000000000000000000000000000000000000000000000000000000008152600401611fd693929190614548565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612053578360006040517f969f085200000000000000000000000000000000000000000000000000000000815260040161204a92919061457f565b60405180910390fd5b60405180604001604052808473ffffffffffffffffffffffffffffffffffffffff168152602001836bffffffffffffffffffffffff168152506004600086815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555090505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036121985760006040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161218f9190613957565b60405180910390fd5b6121a6600085858585612509565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361221e5760006040517fced3e1000000000000000000000000000000000000000000000000000000000081526004016122159190613957565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161230f9190612fb0565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361238e5760006040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016123859190613957565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036124005760006040517f01a835140000000000000000000000000000000000000000000000000000000081526004016123f79190613957565b60405180910390fd5b60008061240d85856125bb565b9150915061241e8787848487612509565b50505050505050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806124f257507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806125025750612501826125eb565b5b9050919050565b61251585858585612655565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146125b4576000612553611cec565b905060018451036125a3576000612574600086611f5a90919063ffffffff16565b9050600061258c600086611f5a90919063ffffffff16565b905061259c8389898585896126ee565b50506125b2565b6125b18187878787876128a2565b5b505b5050505050565b60608060405191506001825283602083015260408201905060018152826020820152604081016040529250929050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061269d5750600b60009054906101000a900460ff16155b6126dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d39061461a565b60405180910390fd5b6126e884848484612a56565b50505050565b60008473ffffffffffffffffffffffffffffffffffffffff163b111561289a578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040161274f95949392919061468f565b6020604051808303816000875af192505050801561278b57506040513d601f19601f8201168201806040525081019061278891906146fe565b60015b61280f573d80600081146127bb576040519150601f19603f3d011682016040523d82523d6000602084013e6127c0565b606091505b50600081510361280757846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016127fe9190613957565b60405180910390fd5b805181602001fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461289857846040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161288f9190613957565b60405180910390fd5b505b505050505050565b60008473ffffffffffffffffffffffffffffffffffffffff163b1115612a4e578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b815260040161290395949392919061472b565b6020604051808303816000875af192505050801561293f57506040513d601f19601f8201168201806040525081019061293c91906146fe565b60015b6129c3573d806000811461296f576040519150601f19603f3d011682016040523d82523d6000602084013e612974565b606091505b5060008151036129bb57846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016129b29190613957565b60405180910390fd5b805181602001fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612a4c57846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401612a439190613957565b60405180910390fd5b505b505050505050565b8051825114612aa057815181516040517f5b059991000000000000000000000000000000000000000000000000000000008152600401612a9792919061435b565b60405180910390fd5b6000612aaa611cec565b905060005b8351811015612cb9576000612acd8286611f5a90919063ffffffff16565b90506000612ae48386611f5a90919063ffffffff16565b9050600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614612c1157600080600084815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612bb957888183856040517f03dee4c5000000000000000000000000000000000000000000000000000000008152600401612bb09493929190614793565b60405180910390fd5b81810360008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614612cac578060008084815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ca49190614047565b925050819055505b5050806001019050612aaf565b506001835103612d78576000612cd9600085611f5a90919063ffffffff16565b90506000612cf1600085611f5a90919063ffffffff16565b90508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051612d6992919061435b565b60405180910390a45050612df7565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051612dee9291906147d8565b60405180910390a45b5050505050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e3d82612e12565b9050919050565b612e4d81612e32565b8114612e5857600080fd5b50565b600081359050612e6a81612e44565b92915050565b6000819050919050565b612e8381612e70565b8114612e8e57600080fd5b50565b600081359050612ea081612e7a565b92915050565b60008060408385031215612ebd57612ebc612e08565b5b6000612ecb85828601612e5b565b9250506020612edc85828601612e91565b9150509250929050565b612eef81612e70565b82525050565b6000602082019050612f0a6000830184612ee6565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612f4581612f10565b8114612f5057600080fd5b50565b600081359050612f6281612f3c565b92915050565b600060208284031215612f7e57612f7d612e08565b5b6000612f8c84828501612f53565b91505092915050565b60008115159050919050565b612faa81612f95565b82525050565b6000602082019050612fc56000830184612fa1565b92915050565b600060208284031215612fe157612fe0612e08565b5b6000612fef84828501612e5b565b91505092915050565b60006bffffffffffffffffffffffff82169050919050565b61301981612ff8565b811461302457600080fd5b50565b60008135905061303681613010565b92915050565b6000806040838503121561305357613052612e08565b5b600061306185828601612e5b565b925050602061307285828601613027565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b838110156130b657808201518184015260208101905061309b565b60008484015250505050565b6000601f19601f8301169050919050565b60006130de8261307c565b6130e88185613087565b93506130f8818560208601613098565b613101816130c2565b840191505092915050565b6000602082019050818103600083015261312681846130d3565b905092915050565b60006020828403121561314457613143612e08565b5b600061315284828501612e91565b91505092915050565b6000806040838503121561317257613171612e08565b5b600061318085828601612e91565b925050602061319185828601612e91565b9150509250929050565b6131a481612e32565b82525050565b60006040820190506131bf600083018561319b565b6131cc6020830184612ee6565b9392505050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613210826130c2565b810181811067ffffffffffffffff8211171561322f5761322e6131d8565b5b80604052505050565b6000613242612dfe565b905061324e8282613207565b919050565b600067ffffffffffffffff82111561326e5761326d6131d8565b5b602082029050602081019050919050565b600080fd5b600061329761329284613253565b613238565b905080838252602082019050602084028301858111156132ba576132b961327f565b5b835b818110156132e357806132cf8882612e91565b8452602084019350506020810190506132bc565b5050509392505050565b600082601f830112613302576133016131d3565b5b8135613312848260208601613284565b91505092915050565b600080fd5b600067ffffffffffffffff82111561333b5761333a6131d8565b5b613344826130c2565b9050602081019050919050565b82818337600083830152505050565b600061337361336e84613320565b613238565b90508281526020810184848401111561338f5761338e61331b565b5b61339a848285613351565b509392505050565b600082601f8301126133b7576133b66131d3565b5b81356133c7848260208601613360565b91505092915050565b600080600080600060a086880312156133ec576133eb612e08565b5b60006133fa88828901612e5b565b955050602061340b88828901612e5b565b945050604086013567ffffffffffffffff81111561342c5761342b612e0d565b5b613438888289016132ed565b935050606086013567ffffffffffffffff81111561345957613458612e0d565b5b613465888289016132ed565b925050608086013567ffffffffffffffff81111561348657613485612e0d565b5b613492888289016133a2565b9150509295509295909350565b6134a881612f95565b81146134b357600080fd5b50565b6000813590506134c58161349f565b92915050565b6000602082840312156134e1576134e0612e08565b5b60006134ef848285016134b6565b91505092915050565b60008060006060848603121561351157613510612e08565b5b600061351f86828701612e5b565b935050602084013567ffffffffffffffff8111156135405761353f612e0d565b5b61354c868287016132ed565b925050604084013567ffffffffffffffff81111561356d5761356c612e0d565b5b613579868287016132ed565b9150509250925092565b600067ffffffffffffffff82111561359e5761359d6131d8565b5b6135a7826130c2565b9050602081019050919050565b60006135c76135c284613583565b613238565b9050828152602081018484840111156135e3576135e261331b565b5b6135ee848285613351565b509392505050565b600082601f83011261360b5761360a6131d3565b5b813561361b8482602086016135b4565b91505092915050565b60008060008060008060c0878903121561364157613640612e08565b5b600061364f89828a01612e5b565b965050602061366089828a01613027565b955050604087013567ffffffffffffffff81111561368157613680612e0d565b5b61368d89828a016135f6565b945050606087013567ffffffffffffffff8111156136ae576136ad612e0d565b5b6136ba89828a016135f6565b93505060806136cb89828a016134b6565b92505060a06136dc89828a01612e5b565b9150509295509295509295565b600067ffffffffffffffff821115613704576137036131d8565b5b602082029050602081019050919050565b6000613728613723846136e9565b613238565b9050808382526020820190506020840283018581111561374b5761374a61327f565b5b835b8181101561377457806137608882612e5b565b84526020840193505060208101905061374d565b5050509392505050565b600082601f830112613793576137926131d3565b5b81356137a3848260208601613715565b91505092915050565b600080604083850312156137c3576137c2612e08565b5b600083013567ffffffffffffffff8111156137e1576137e0612e0d565b5b6137ed8582860161377e565b925050602083013567ffffffffffffffff81111561380e5761380d612e0d565b5b61381a858286016132ed565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61385981612e70565b82525050565b600061386b8383613850565b60208301905092915050565b6000602082019050919050565b600061388f82613824565b613899818561382f565b93506138a483613840565b8060005b838110156138d55781516138bc888261385f565b97506138c783613877565b9250506001810190506138a8565b5085935050505092915050565b600060208201905081810360008301526138fc8184613884565b905092915050565b60008060006060848603121561391d5761391c612e08565b5b600061392b86828701612e91565b935050602061393c86828701612e5b565b925050604061394d86828701613027565b9150509250925092565b600060208201905061396c600083018461319b565b92915050565b6000819050919050565b600061399761399261398d84612e12565b613972565b612e12565b9050919050565b60006139a98261397c565b9050919050565b60006139bb8261399e565b9050919050565b6139cb816139b0565b82525050565b60006020820190506139e660008301846139c2565b92915050565b60008060408385031215613a0357613a02612e08565b5b6000613a1185828601612e5b565b9250506020613a22858286016134b6565b9150509250929050565b600067ffffffffffffffff821115613a4757613a466131d8565b5b602082029050602081019050919050565b600080fd5b600080fd5b600060608284031215613a7857613a77613a58565b5b613a826060613238565b90506000613a9284828501612e5b565b600083015250602082013567ffffffffffffffff811115613ab657613ab5613a5d565b5b613ac2848285016132ed565b602083015250604082013567ffffffffffffffff811115613ae657613ae5613a5d565b5b613af2848285016132ed565b60408301525092915050565b6000613b11613b0c84613a2c565b613238565b90508083825260208201905060208402830185811115613b3457613b3361327f565b5b835b81811015613b7b57803567ffffffffffffffff811115613b5957613b586131d3565b5b808601613b668982613a62565b85526020850194505050602081019050613b36565b5050509392505050565b600082601f830112613b9a57613b996131d3565b5b8135613baa848260208601613afe565b91505092915050565b600060208284031215613bc957613bc8612e08565b5b600082013567ffffffffffffffff811115613be757613be6612e0d565b5b613bf384828501613b85565b91505092915050565b60008060408385031215613c1357613c12612e08565b5b6000613c2185828601612e5b565b9250506020613c3285828601612e5b565b9150509250929050565b600080600080600060a08688031215613c5857613c57612e08565b5b6000613c6688828901612e5b565b9550506020613c7788828901612e5b565b9450506040613c8888828901612e91565b9350506060613c9988828901612e91565b925050608086013567ffffffffffffffff811115613cba57613cb9612e0d565b5b613cc6888289016133a2565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613d1a57607f821691505b602082108103613d2d57613d2c613cd3565b5b50919050565b6000613d46613d4184613583565b613238565b905082815260208101848484011115613d6257613d6161331b565b5b613d6d848285613098565b509392505050565b600082601f830112613d8a57613d896131d3565b5b8151613d9a848260208601613d33565b91505092915050565b600060208284031215613db957613db8612e08565b5b600082015167ffffffffffffffff811115613dd757613dd6612e0d565b5b613de384828501613d75565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613e2682612e70565b9150613e3183612e70565b9250828203905081811115613e4957613e48613dec565b5b92915050565b6000613e5a82612e70565b9150613e6583612e70565b9250828202613e7381612e70565b91508282048414831517613e8a57613e89613dec565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ecb82612e70565b9150613ed683612e70565b925082613ee657613ee5613e91565b5b828204905092915050565b6000604082019050613f06600083018561319b565b613f13602083018461319b565b9392505050565b7f50726f7465637465644d696e744275726e3a2063616c6c6572206973206e6f7460008201527f2061206275726e65720000000000000000000000000000000000000000000000602082015250565b6000613f76602983613087565b9150613f8182613f1a565b604082019050919050565b60006020820190508181036000830152613fa581613f69565b9050919050565b7f4c6f636b61626c653a206275726e206973206c6f636b65640000000000000000600082015250565b6000613fe2601883613087565b9150613fed82613fac565b602082019050919050565b6000602082019050818103600083015261401181613fd5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061405282612e70565b915061405d83612e70565b925082820190508082111561407557614074613dec565b5b92915050565b7f436f6e747261637420616c726561647920696e697469616c697a65642e000000600082015250565b60006140b1601d83613087565b91506140bc8261407b565b602082019050919050565b600060208201905081810360008301526140e0816140a4565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026141497fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261410c565b614153868361410c565b95508019841693508086168417925050509392505050565b600061418661418161417c84612e70565b613972565b612e70565b9050919050565b6000819050919050565b6141a08361416b565b6141b46141ac8261418d565b848454614119565b825550505050565b600090565b6141c96141bc565b6141d4818484614197565b505050565b5b818110156141f8576141ed6000826141c1565b6001810190506141da565b5050565b601f82111561423d5761420e816140e7565b614217846140fc565b81016020851015614226578190505b61423a614232856140fc565b8301826141d9565b50505b505050565b600082821c905092915050565b600061426060001984600802614242565b1980831691505092915050565b6000614279838361424f565b9150826002028217905092915050565b6142928261307c565b67ffffffffffffffff8111156142ab576142aa6131d8565b5b6142b58254613d02565b6142c08282856141fc565b600060209050601f8311600181146142f357600084156142e1578287015190505b6142eb858261426d565b865550614353565b601f198416614301866140e7565b60005b8281101561432957848901518255600182019150602085019450602081019050614304565b868310156143465784890151614342601f89168261424f565b8355505b6001600288020188555050505b505050505050565b60006040820190506143706000830185612ee6565b61437d6020830184612ee6565b9392505050565b7f4c6f636b61626c653a206d65746164617461206973206c6f636b656400000000600082015250565b60006143ba601c83613087565b91506143c582614384565b602082019050919050565b600060208201905081810360008301526143e9816143ad565b9050919050565b7f50726f7465637465644d696e744275726e3a2063616c6c6572206973206e6f7460008201527f2061206d696e7465720000000000000000000000000000000000000000000000602082015250565b600061444c602983613087565b9150614457826143f0565b604082019050919050565b6000602082019050818103600083015261447b8161443f565b9050919050565b7f4c6f636b61626c653a206d696e74206973206c6f636b65640000000000000000600082015250565b60006144b8601883613087565b91506144c382614482565b602082019050919050565b600060208201905081810360008301526144e7816144ab565b9050919050565b60006145096145046144ff84612ff8565b613972565b612e70565b9050919050565b614519816144ee565b82525050565b60006040820190506145346000830185614510565b6145416020830184612ee6565b9392505050565b600060608201905061455d6000830186612ee6565b61456a6020830185614510565b6145776040830184612ee6565b949350505050565b60006040820190506145946000830185612ee6565b6145a1602083018461319b565b9392505050565b7f54686520746f6b656e2063616e206e6f74206265207472616e7366657272656460008201527f20617420746869732074696d652e000000000000000000000000000000000000602082015250565b6000614604602e83613087565b915061460f826145a8565b604082019050919050565b60006020820190508181036000830152614633816145f7565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006146618261463a565b61466b8185614645565b935061467b818560208601613098565b614684816130c2565b840191505092915050565b600060a0820190506146a4600083018861319b565b6146b1602083018761319b565b6146be6040830186612ee6565b6146cb6060830185612ee6565b81810360808301526146dd8184614656565b90509695505050505050565b6000815190506146f881612f3c565b92915050565b60006020828403121561471457614713612e08565b5b6000614722848285016146e9565b91505092915050565b600060a082019050614740600083018861319b565b61474d602083018761319b565b818103604083015261475f8186613884565b905081810360608301526147738185613884565b905081810360808301526147878184614656565b90509695505050505050565b60006080820190506147a8600083018761319b565b6147b56020830186612ee6565b6147c26040830185612ee6565b6147cf6060830184612ee6565b95945050505050565b600060408201905081810360008301526147f28185613884565b905081810360208301526148068184613884565b9050939250505056fea2646970667358221220ec107373ba5188817a009cf80f50060590277a886b4f22fe66600076605feebb64736f6c63430008180033