[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "InvalidQueryRange", "type": "error" }, { "inputs": [], "name": "MintERC2309QuantityExceedsLimit", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "OwnershipNotInitializedForExtraData", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "inputs": [], "name": "URIQueryForNonexistentToken", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "toTokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "ConsecutiveTransfer", "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": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "batchBurn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "contractURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "explicitOwnershipOf", "outputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint64", "name": "startTimestamp", "type": "uint64" }, { "internalType": "bool", "name": "burned", "type": "bool" }, { "internalType": "uint24", "name": "extraData", "type": "uint24" } ], "internalType": "struct IERC721A.TokenOwnership", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "explicitOwnershipsOf", "outputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint64", "name": "startTimestamp", "type": "uint64" }, { "internalType": "bool", "name": "burned", "type": "bool" }, { "internalType": "uint24", "name": "extraData", "type": "uint24" } ], "internalType": "struct IERC721A.TokenOwnership[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": [ { "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": "address", "name": "owner", "type": "address" }, { "internalType": "string", "name": "tokenName", "type": "string" }, { "internalType": "string", "name": "tokenSymbol", "type": "string" }, { "internalType": "string", "name": "tokenBaseURI", "type": "string" }, { "internalType": "string", "name": "tokenContractURI", "type": "string" }, { "internalType": "address", "name": "royaltyReceiver", "type": "address" }, { "internalType": "uint96", "name": "royaltyFeeNumerator", "type": "uint96" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "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": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "tokenBaseURI", "type": "string" } ], "name": "setBaseMetadataURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "tokenContractURI", "type": "string" } ], "name": "setContractURI", "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": "string", "name": "tokenName", "type": "string" }, { "internalType": "string", "name": "tokenSymbol", "type": "string" } ], "name": "setNameAndSymbol", "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": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "tokensOfOwner", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "start", "type": "uint256" }, { "internalType": "uint256", "name": "stop", "type": "uint256" } ], "name": "tokensOfOwnerIn", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "payable", "type": "function" } ]
60a060405234620002dc5762000014620002e1565b6200001e620002e1565b8151906001600160401b0390818311620001ee57600254906001938483811c9316958615620002d1575b60209687851014620001cd578190601f948581116200027a575b508790858311600114620002105760009262000204575b5050600019600383901b1c191690851b176002555b8051928311620001ee5760039485548581811c91168015620001e3575b82821014620001cd5783811162000182575b50809284116001146200011857509282939183926000946200010c575b50501b9160001990841b1c19161790555b6000805533608052604051613e1990816200030682396080518161396f0152f35b015192503880620000da565b919083601f1981168760005284600020946000905b888383106200016757505050106200014e575b505050811b019055620000eb565b015160001983861b60f8161c1916905538808062000140565b8587015188559096019594850194879350908101906200012d565b86600052816000208480870160051c820192848810620001c3575b0160051c019086905b828110620001b6575050620000bd565b60008155018690620001a6565b925081926200019d565b634e487b7160e01b600052602260045260246000fd5b90607f1690620000ab565b634e487b7160e01b600052604160045260246000fd5b01519050388062000079565b90879350601f198316916002600052896000209260005b8b82821062000263575050841162000249575b505050811b016002556200008e565b015160001960f88460031b161c191690553880806200023a565b8385015186558b9790950194938401930162000227565b9091506002600052876000208580850160051c8201928a8610620002c7575b918991869594930160051c01915b828110620002b757505062000062565b60008155859450899101620002a7565b9250819262000299565b92607f169262000048565b600080fd5b60405190602082016001600160401b03811183821017620001ee576040526000825256fe6080604052600436101561001257600080fd5b60003560e01c806301ffc9a71461026757806304634d8d1461026257806306fdde031461025d578063081812fc14610258578063095ea7b31461025357806318160ddd1461024e57806323b872dd14610249578063248a9ca3146102445780632a55205a1461023f5780632f2ff15d1461023a57806336568abe1461023557806340c10f191461023057806342842e0e1461022b57806342966c68146102265780635944c753146102215780635a4462151461021c5780635bbb2177146102175780636352211e1461021257806370a082311461020d5780637e518ec8146102085780638462151c146102035780639010d07c146101fe57806391d14854146101f9578063938e3d7b146101f457806395d89b41146101ef57806398dd69c8146101ea57806399a2557a146101e5578063a217fddf146101e0578063a22cb465146101db578063b88d4fde146101d6578063c23dc68f146101d1578063c87b56dd146101cc578063ca15c873146101c7578063d547741f146101c2578063dc8e92ea146101bd578063e8a3d485146101b85763e985e9c5146101b357600080fd5b611c80565b611bd9565b611b52565b611afb565b611acf565b611955565b6118e3565b611888565b6117b9565b61179d565b611765565b6116c7565b611620565b611521565b6114c1565b61146e565b61139a565b611260565b61120a565b6111ce565b611168565b610f9e565b610d2c565b610d10565b610ced565b610b9f565b610ad9565b610996565b6108c5565b610896565b610884565b61081f565b610700565b610686565b610587565b6104e7565b61029b565b7fffffffff0000000000000000000000000000000000000000000000000000000081160361029657565b600080fd5b346102965760206003193601126102965761031d6004356102bb8161026c565b7fffffffff000000000000000000000000000000000000000000000000000000008116807f40c10f190000000000000000000000000000000000000000000000000000000014918215610321575b505060405190151581529081906020820190565b0390f35b7fc21b8f28000000000000000000000000000000000000000000000000000000008214925090821561041e575b821561038d575b50811561037c575b811561036c575b503880610309565b6103769150613c7d565b38610364565b905061038781613c7d565b9061035d565b9091507f01ffc9a70000000000000000000000000000000000000000000000000000000081149081156103f4575b81156103ca575b509038610355565b7f5b5e139f00000000000000000000000000000000000000000000000000000000915014386103c2565b7f80ac58cd00000000000000000000000000000000000000000000000000000000811491506103bb565b7f8446a79e000000000000000000000000000000000000000000000000000000008114925061034e565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361029657565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361029657565b60a4359073ffffffffffffffffffffffffffffffffffffffff8216820361029657565b604435906bffffffffffffffffffffffff8216820361029657565b60c435906bffffffffffffffffffffffff8216820361029657565b3461029657604060031936011261029657610500610448565b6024356bffffffffffffffffffffffff811681036102965761052991610524611cf0565b613ba5565b005b60005b83811061053e5750506000910152565b818101518382015260200161052e565b90601f19601f60209361056c8151809281875287808801910161052b565b0116010190565b90602061058492818152019061054e565b90565b3461029657600080600319360112610683576040519080600d546105aa81613259565b8085529160019180831690811561063b57506001146105e0575b61031d856105d481870382610efe565b60405191829182610573565b9250600d83527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb55b8284106106235750505081016020016105d48261031d6105c4565b80546020858701810191909152909301928101610608565b86955061031d969350602092506105d49491507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682840152151560051b82010192936105c4565b80fd5b34610296576020600319360112610296576004356106a381612a31565b156106d6576000526006602052602073ffffffffffffffffffffffffffffffffffffffff60406000205416604051908152f35b60046040517fcf4700e4000000000000000000000000000000000000000000000000000000008152fd5b604060031936011261029657610714610448565b60243573ffffffffffffffffffffffffffffffffffffffff8061073683612992565b16908133036107b6575b600083815260066020526040812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87161790559316907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258480a480f35b81600052600760205260ff6107ef3360406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54166107405760046040517fcfb3b942000000000000000000000000000000000000000000000000000000008152fd5b346102965760006003193601126102965760206000546001549003604051908152f35b60031960609101126102965773ffffffffffffffffffffffffffffffffffffffff90600435828116810361029657916024359081168103610296579060443590565b61052961089036610842565b91612a73565b3461029657602060031936011261029657600435600052600a6020526020600160406000200154604051908152f35b346102965760406003193601126102965760043560005260096020526040600020604051906108f382610ec1565b549073ffffffffffffffffffffffffffffffffffffffff82169182825260a01c60208201529015610988575b61095f6127106109436bffffffffffffffffffffffff6020850151166024356123dd565b04915173ffffffffffffffffffffffffffffffffffffffff1690565b6040805173ffffffffffffffffffffffffffffffffffffffff9290921682526020820192909252f35b5061099161237b565b61091f565b3461029657604060031936011261029657600435610a3e6109b561046b565b73ffffffffffffffffffffffffffffffffffffffff610a36600094808652600a6020526109e86001604088200154611e94565b808652600a60205260ff610a1f85604089209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b541615610a4257600052600b602052604060002090565b9116906127ad565b5080f35b808652600a602052610a7784604088209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905533838516827f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8980a4600052600b602052604060002090565b3461029657604060031936011261029657610af261046b565b3373ffffffffffffffffffffffffffffffffffffffff821603610b1b5761052990600435612287565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152fd5b3461029657604060031936011261029657610bb8610448565b60243590610bc4611dea565b6000918254918115610cc357610bfa8173ffffffffffffffffffffffffffffffffffffffff166000526005602052604060002090565b680100000000000000018302815401905573ffffffffffffffffffffffffffffffffffffffff600191169181811460e11b4260a01b178317610c46856000526004602052604060002090565b55830192817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91808588858180a4015b848103610cb45750505015610c8a57815580f35b60046040517f2e076300000000000000000000000000000000000000000000000000000000008152fd5b8083918588858180a401610c76565b60046040517fb562e8dd000000000000000000000000000000000000000000000000000000008152fd5b610529610cf936610842565b9060405192610d0784610ee2565b60008452612cf4565b3461029657602060031936011261029657610529600435613721565b3461029657606060031936011261029657610d4561046b565b610d4d6104b1565b90610d56611cf0565b610d726127106bffffffffffffffffffffffff84161115613b1a565b73ffffffffffffffffffffffffffffffffffffffff811615610e3457610dd161052992610dbc610da0610f21565b73ffffffffffffffffffffffffffffffffffffffff9094168452565b6bffffffffffffffffffffffff166020830152565b610de76004356000526009602052604060002090565b815160209092015160a01b7fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f455243323938313a20496e76616c696420706172616d657465727300000000006044820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040810190811067ffffffffffffffff821117610edd57604052565b610e92565b6020810190811067ffffffffffffffff821117610edd57604052565b90601f601f19910116810190811067ffffffffffffffff821117610edd57604052565b60405190610f2e82610ec1565b565b67ffffffffffffffff8111610edd57601f01601f191660200190565b929192610f5882610f30565b91610f666040519384610efe565b829481845281830111610296578281602093846000960137010152565b9080601f830112156102965781602061058493359101610f4c565b346102965760406003193601126102965767ffffffffffffffff60043581811161029657610fd0903690600401610f83565b9060243581811161029657610fe9903690600401610f83565b90610ff2611e3f565b8251908111610edd5761100f8161100a600d54613259565b6132ac565b602080601f83116001146110505750819061052994600092611045575b50506000198260011b9260031b1c191617600d55613470565b01519050388061102c565b600d6000529193601f1985167fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5936000905b8282106110c35750509160019391866105299794106110aa575b505050811b01600d55613470565b015160001960f88460031b161c1916905538808061109c565b80600186978294978701518155019601940190611082565b6020908160408183019282815285518094520193019160005b828110611102575050505090565b909192938260808261115c600194895162ffffff6060809273ffffffffffffffffffffffffffffffffffffffff815116855267ffffffffffffffff6020820151166020860152604081015115156040860152015116910152565b019501939291016110f4565b346102965760206003193601126102965767ffffffffffffffff6004358181116102965736602382011215610296578060040135918211610296573660248360051b830101116102965761031d9160246111c29201613033565b604051918291826110db565b3461029657602060031936011261029657602073ffffffffffffffffffffffffffffffffffffffff611201600435612992565b16604051908152f35b3461029657602060031936011261029657602061122d611228610448565b612931565b604051908152f35b6020600319820112610296576004359067ffffffffffffffff82116102965761058491600401610f83565b346102965761126e36611235565b611276611e3f565b805167ffffffffffffffff8111610edd5761129b81611296600c54613259565b61331d565b602080601f83116001146112d8575081926000926112cd575b50506000198260011b9260031b1c191617600c55600080f35b0151905038806112b4565b90601f1983169361130b600c6000527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c790565b926000905b868210611347575050836001951061132e575b505050811b01600c55005b015160001960f88460031b161c19169055388080611323565b80600185968294968601518155019501930190611310565b6020908160408183019282815285518094520193019160005b828110611386575050505090565b835185529381019392810192600101611378565b34610296576020600319360112610296576113b3610448565b6000806113bf83612931565b916113c9836130c3565b936113d2612f19565b5073ffffffffffffffffffffffffffffffffffffffff90811691835b858503611403576040518061031d898261135f565b61140c81612f9d565b6040810151611465575173ffffffffffffffffffffffffffffffffffffffff1683811661145c575b506001908484841614611448575b016113ee565b80611456838801978a61301f565b52611442565b91506001611434565b50600190611442565b3461029657604060031936011261029657600435600052600b602052602073ffffffffffffffffffffffffffffffffffffffff6114b16024356040600020612777565b9190546040519260031b1c168152f35b3461029657604060031936011261029657602060ff6115156114e161046b565b600435600052600a845260406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54166040519015158152f35b346102965761152f36611235565b611537611e3f565b805167ffffffffffffffff8111610edd5761155c81611557600f54613259565b61338e565b602080601f83116001146115995750819260009261158e575b50506000198260011b9260031b1c191617600f55600080f35b015190503880611575565b90601f198316936115cc600f6000527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac80290565b926000905b86821061160857505083600195106115ef575b505050811b01600f55005b015160001960f88460031b161c191690553880806115e4565b806001859682949686015181550195019301906115d1565b3461029657600080600319360112610683576040519080600e5461164381613259565b8085529160019180831690811561063b575060011461166c5761031d856105d481870382610efe565b9250600e83527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd5b8284106116af5750505081016020016105d48261031d6105c4565b80546020858701810191909152909301928101611694565b346102965760e0600319360112610296576116e0610448565b67ffffffffffffffff9060243582811161029657611702903690600401610f83565b6044358381116102965761171a903690600401610f83565b60643584811161029657611732903690600401610f83565b6084359485116102965761174d610529953690600401610f83565b9161175661048e565b9361175f6104cc565b95613952565b346102965760606003193601126102965761031d611791611784610448565b60443590602435906130f4565b6040519182918261135f565b3461029657600060031936011261029657602060405160008152f35b34610296576040600319360112610296576117d2610448565b602435908115158092036102965773ffffffffffffffffffffffffffffffffffffffff9033600052600760205261182d8160406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff851617905560405192835216907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60806003193601126102965761189c610448565b6118a461046b565b6064359167ffffffffffffffff83116102965736602384011215610296576118d9610529933690602481600401359101610f4c565b9160443591612cf4565b34610296576020600319360112610296576080611901600435612f4f565b611953604051809262ffffff6060809273ffffffffffffffffffffffffffffffffffffffff815116855267ffffffffffffffff6020820151166020860152604081015115156040860152015116910152565bf35b34610296576020806003193601126102965760043561197381612a31565b15611aa5576040519082826000600c5461198c81613259565b80845290600190818116908115611a655750600114611a06575b50506119b492500383610efe565b8151156119f35761031d926119e56119ce6105d493612ed0565b6119df604051958694850190611f76565b90611f76565b03601f198101835282610efe565b50505061031d611a016123f5565b6105d4565b90939150600c6000527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7936000915b818310611a4d5750879450508201016119b4386119a6565b85548884018501529485019487945091830191611a35565b90506119b49593507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201018592386119a6565b60046040517fa14c4b50000000000000000000000000000000000000000000000000000000008152fd5b3461029657602060031936011261029657600435600052600b6020526020604060002054604051908152f35b3461029657604060031936011261029657610529600435611b1a61046b565b9080600052600a602052611b35600160406000200154611e94565b612287565b67ffffffffffffffff8111610edd5760051b60200190565b34610296576020806003193601126102965760043567ffffffffffffffff8111610296573660238201121561029657806004013590611b9082611b3a565b91611b9e6040519384610efe565b80835260248484019160051b8301019136831161029657602401905b828210611bca576105298461391c565b81358152908401908401611bba565b3461029657600080600319360112610683576040519080600f54611bfc81613259565b8085529160019180831690811561063b5750600114611c255761031d856105d481870382610efe565b9250600f83527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8025b828410611c685750505081016020016105d48261031d6105c4565b80546020858701810191909152909301928101611c4d565b3461029657604060031936011261029657602060ff611515611ca0610448565b73ffffffffffffffffffffffffffffffffffffffff611cbd61046b565b91166000526007845260406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b3360009081527f4a209273c9c71eac8bee506e444418998f8f452896d49b4edfa61f22f2a2bd27602052604090205460ff1615611d2957565b611de66048611db4611d3a33612503565b6119e5611d456125a0565b6040519485937f416363657373436f6e74726f6c3a206163636f756e74200000000000000000006020860152611d8581518092602060378901910161052b565b84017f206973206d697373696e6720726f6c652000000000000000000000000000000060378201520190611f76565b6040519182917f08c379a000000000000000000000000000000000000000000000000000000000835260048301610573565b0390fd5b3360009081527faa1d7351356c4ddc11907b1ee0660f579cfdf507235af2ae01ecd22a4b7ceaae602052604090205460ff1615611e2357565b611de66048611db4611e3433612503565b6119e5611d4561263d565b3360009081527f2de00acba1f3dd4b00004fa31871eaf6bd23564af8ed1bbe52ac31593862e4a2602052604090205460ff1615611e7857565b611de66048611db4611e8933612503565b6119e5611d456126da565b80600052600a60205260ff611ecd3360406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b541615611ed75750565b611ee033612503565b611ee8612408565b916030611ef484612463565b536078611f0084612470565b5360415b60018111611f2357611de66048611db4856119e588611d45881561249e565b90600f8116906010821015611f71577f3031323334353637383961626364656600000000000000000000000000000000611f6c921a611f628487612480565b5360041c91612491565b611f04565b612434565b90611f896020928281519485920161052b565b0190565b73ffffffffffffffffffffffffffffffffffffffff81811660009081527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3602052604080822054611ff59493929060ff1615611ff8575b808052600b602052209116906127ad565b50565b808052600a60205261202c848383209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905533838516827f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4611fe4565b73ffffffffffffffffffffffffffffffffffffffff80821660009081527f2de00acba1f3dd4b00004fa31871eaf6bd23564af8ed1bbe52ac31593862e4a26020526040808220611ff5949392907fe02a0315b383857ac496e9d2b2546a699afaeb4e5e83a1fdef64376d0b74e5a59060ff905b54161561210e575b8152600b602052209116906127ad565b808252600a602052612142858484209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905533848616827f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8580a46120fe565b73ffffffffffffffffffffffffffffffffffffffff80821660009081527f4a209273c9c71eac8bee506e444418998f8f452896d49b4edfa61f22f2a2bd276020526040808220611ff5949392907f6db4061a20ca83a3be756ee172bd37a029093ac5afe4ce968c6d5435b43cb0119060ff906120f6565b73ffffffffffffffffffffffffffffffffffffffff80821660009081527faa1d7351356c4ddc11907b1ee0660f579cfdf507235af2ae01ecd22a4b7ceaae6020526040808220611ff5949392907f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a69060ff906120f6565b9073ffffffffffffffffffffffffffffffffffffffff6040611ff593600090808252600a60205260ff6122dc868585209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54166122f3575b8152600b6020522091169061287c565b808252600a602052612327858484209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00815416905533848616827ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b8580a46122e3565b6040519061238882610ec1565b60085473ffffffffffffffffffffffffffffffffffffffff8116835260a01c6020830152565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818102929181159184041417156123f057565b6123ae565b6040519061240282610ee2565b60008252565b604051906080820182811067ffffffffffffffff821117610edd57604052604282526060366020840137565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b805115611f715760200190565b805160011015611f715760210190565b908151811015611f71570160200190565b80156123f0576000190190565b156124a557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b604051906060820182811067ffffffffffffffff821117610edd57604052602a82526040366020840137603061253883612463565b53607861254483612470565b536029905b6001821161255c5761058491501561249e565b600f8116906010821015611f71577f303132333435363738396162636465660000000000000000000000000000000061259a921a611f628486612480565b90612549565b7f6db4061a20ca83a3be756ee172bd37a029093ac5afe4ce968c6d5435b43cb0116125c9612408565b9060306125d583612463565b5360786125e183612470565b536041905b600182116125f95761058491501561249e565b600f8116906010821015611f71577f3031323334353637383961626364656600000000000000000000000000000000612637921a611f628486612480565b906125e6565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6612666612408565b90603061267283612463565b53607861267e83612470565b536041905b600182116126965761058491501561249e565b600f8116906010821015611f71577f30313233343536373839616263646566000000000000000000000000000000006126d4921a611f628486612480565b90612683565b7fe02a0315b383857ac496e9d2b2546a699afaeb4e5e83a1fdef64376d0b74e5a5612703612408565b90603061270f83612463565b53607861271b83612470565b536041905b600182116127335761058491501561249e565b600f8116906010821015611f71577f3031323334353637383961626364656600000000000000000000000000000000612771921a611f628486612480565b90612720565b8054821015611f715760005260206000200190600090565b916127a9918354906000199060031b92831b921b19161790565b9055565b600181019082600052816020526040600020541560001461281b57805468010000000000000000811015610edd576128066127ef826001879401855584612777565b81939154906000199060031b92831b921b19161790565b90555491600052602052604060002055600190565b505050600090565b805490811561284d576000198092019161283d8383612777565b909182549160031b1b1916905555565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60018101918060005282602052604060002054928315156000146129285760001992838501908582116123f05780549485019485116123f05760009585836128d0946128df98036128e5575b505050612823565b90600052602052604060002090565b55600190565b61290f612909916128f961291f9487612777565b90549060031b1c92839187612777565b9061278f565b8590600052602052604060002090565b553880806128c8565b50505050600090565b73ffffffffffffffffffffffffffffffffffffffff16801561296857600052600560205267ffffffffffffffff6040600020541690565b60046040517f8f4eb604000000000000000000000000000000000000000000000000000000008152fd5b600081815481106129c8575b60046040517fdf2d9b42000000000000000000000000000000000000000000000000000000008152fd5b815260049060209180835260409283832054947c0100000000000000000000000000000000000000000000000000000000861615612a085750505061299e565b93929190935b8515612a1c57505050505090565b60001901808352818552838320549550612a0e565b60005481109081612a40575090565b905060005260046020527c0100000000000000000000000000000000000000000000000000000000604060002054161590565b90612a7d83612992565b73ffffffffffffffffffffffffffffffffffffffff808416928382841603612cca57600086815260066020526040902080549092612adb73ffffffffffffffffffffffffffffffffffffffff881633908114908414171590565b1590565b612c3b575b8216958615612c1157612b4b93612b1d92612c07575b5073ffffffffffffffffffffffffffffffffffffffff166000526005602052604060002090565b805460001901905573ffffffffffffffffffffffffffffffffffffffff166000526005602052604060002090565b805460010190557c0200000000000000000000000000000000000000000000000000000000804260a01b851717612b8c866000526004602052604060002090565b55811615612bbd575b507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4565b60018401612bd5816000526004602052604060002090565b5415612be2575b50612b95565b6000548114612bdc57612bff906000526004602052604060002090565b553880612bdc565b6000905538612af6565b60046040517fea553b34000000000000000000000000000000000000000000000000000000008152fd5b612c9b612ad7612c9433612c6f8b73ffffffffffffffffffffffffffffffffffffffff166000526007602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b5460ff1690565b15612ae05760046040517f59c896be000000000000000000000000000000000000000000000000000000008152fd5b60046040517fa1148100000000000000000000000000000000000000000000000000000000008152fd5b929190612d02828286612a73565b803b612d0f575b50505050565b612d1893612dd1565b15612d265738808080612d09565b60046040517fd1a57ed6000000000000000000000000000000000000000000000000000000008152fd5b9081602091031261029657516105848161026c565b9092610584949360809373ffffffffffffffffffffffffffffffffffffffff80921684521660208301526040820152816060820152019061054e565b3d15612dcc573d90612db282610f30565b91612dc06040519384610efe565b82523d6000602084013e565b606090565b92602091612e2893600073ffffffffffffffffffffffffffffffffffffffff6040518097819682957f150b7a02000000000000000000000000000000000000000000000000000000009b8c85523360048601612d65565b0393165af160009181612ea0575b50612e7a57612e43612da1565b80519081612e755760046040517fd1a57ed6000000000000000000000000000000000000000000000000000000008152fd5b602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000161490565b612ec291925060203d8111612ec9575b612eba8183610efe565b810190612d50565b9038612e36565b503d612eb0565b9060405160a08101604052600019608082019360008552935b0192600a90818106603001855304928315612f075760001990612ee9565b9250608083601f199203019201918252565b604051906080820182811067ffffffffffffffff821117610edd5760405260006060838281528260208201528260408201520152565b612f57612f19565b50612f60612f19565b600054821015612f985750612f7481612f9d565b6040810151612f985750612f9361058491612f8d612f19565b50612992565b612fb8565b905090565b612fa5612f19565b5060005260046020526105846040600020545b90612fc1612f19565b9173ffffffffffffffffffffffffffffffffffffffff8116835267ffffffffffffffff8160a01c1660208401527c010000000000000000000000000000000000000000000000000000000081161515604084015260e81c6060830152565b8051821015611f715760209160051b010190565b61303c82611b3a565b9161304a6040519384610efe565b808352601f1961305982611b3a565b0160005b8181106130ac57505060005b8181036130765750505090565b81811015611f71578061309060019260051b850135612f4f565b61309a828761301f565b526130a5818661301f565b5001613069565b6020906130b7612f19565b8282880101520161305d565b906130cd82611b3a565b6130da6040519182610efe565b828152601f196130ea8294611b3a565b0190602036910137565b908281101561322f576000918254808511613227575b5061311481612931565b8483101561322057828503818110613218575b505b613132816130c3565b9581156132105761314284612f4f565b918594604093613157612ad786830151151590565b6131f1575b505b87811415806131e7575b156131da5761317681612f9d565b808501516131d1575173ffffffffffffffffffffffffffffffffffffffff908116806131c8575b5090816001928716908816146131b4575b0161315e565b806131c2838a01998c61301f565b526131ae565b9650600161319d565b506001906131ae565b5050959450505050815290565b5081871415613168565b5173ffffffffffffffffffffffffffffffffffffffff1695503861315c565b945050505050565b905038613127565b5082613129565b93503861310a565b60046040517f32c1995a000000000000000000000000000000000000000000000000000000008152fd5b90600182811c921680156132a2575b602083101461327357565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f1691613268565b601f81116132b8575050565b600090600d82527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5906020601f850160051c83019410613313575b601f0160051c01915b82811061330857505050565b8181556001016132fc565b90925082906132f3565b601f8111613329575050565b600090600c82527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7906020601f850160051c83019410613384575b601f0160051c01915b82811061337957505050565b81815560010161336d565b9092508290613364565b601f811161339a575050565b600090600f82527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802906020601f850160051c830194106133f5575b601f0160051c01915b8281106133ea57505050565b8181556001016133de565b90925082906133d5565b601f811161340b575050565b600090600e82527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd906020601f850160051c83019410613466575b601f0160051c01915b82811061345b57505050565b81815560010161344f565b9092508290613446565b90815167ffffffffffffffff8111610edd5761349681613491600e54613259565b6133ff565b602080601f83116001146134d157508192936000926134c6575b50506000198260011b9260031b1c191617600e55565b0151905038806134b0565b90601f19831694613504600e6000527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd90565b926000905b878210613541575050836001959610613528575b505050811b01600e55565b015160001960f88460031b161c1916905538808061351d565b80600185968294968601518155019501930190613509565b90815167ffffffffffffffff8111610edd5761357a81611296600c54613259565b602080601f83116001146135b557508192936000926135aa575b50506000198260011b9260031b1c191617600c55565b015190503880613594565b90601f198316946135e8600c6000527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c790565b926000905b87821061362557505083600195961061360c575b505050811b01600c55565b015160001960f88460031b161c19169055388080613601565b806001859682949686015181550195019301906135ed565b90815167ffffffffffffffff8111610edd5761365e81611557600f54613259565b602080601f8311600114613699575081929360009261368e575b50506000198260011b9260031b1c191617600f55565b015190503880613678565b90601f198316946136cc600f6000527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac80290565b926000905b8782106137095750508360019596106136f0575b505050811b01600f55565b015160001960f88460031b161c191690553880806136e5565b806001859682949686015181550195019301906136d1565b61372a81612992565b73ffffffffffffffffffffffffffffffffffffffff8116613758836000526006602052604060002090815490565b929061378073ffffffffffffffffffffffffffffffffffffffff841633908114908614171590565b6138b9575b6000936138b0575b506137b88273ffffffffffffffffffffffffffffffffffffffff166000526005602052604060002090565b6fffffffffffffffffffffffffffffffff81540190557c03000000000000000000000000000000000000000000000000000000004260a01b831717613807856000526004602052604060002090565b557c0200000000000000000000000000000000000000000000000000000000811615613867575b507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a4610f2e61386260015460010190565b600155565b6001840161387f816000526004602052604060002090565b541561388c575b5061382e565b83548114613886576138a8906000526004602052604060002090565b553880613886565b8390553861378d565b6138ed612ad7612c9433612c6f8773ffffffffffffffffffffffffffffffffffffffff166000526007602052604060002090565b156137855760046040517f59c896be000000000000000000000000000000000000000000000000000000008152fd5b80519060005b82811061392e57505050565b61394161393b828461301f565b51613721565b60001981146123f057600101613922565b95949392919073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163314801590613b0e575b613ae45780519067ffffffffffffffff8211610edd576139be8261100a600d54613259565b60209081601f8411600114613a61575093613a07613a119484613a319b9a9895613a0c95613a2c9b996000926110455750506000198260011b9260031b1c191617600d55613470565b613559565b61363d565b613a1a84611f8d565b613a2384612083565b61052484612199565b612210565b610f2e60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff006010541617601055565b600d6000529190601f1984167fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5936000905b828210613acc57505094600185613a0c95613a2c9b9995613a0795613a319f9e9c99613a119b106110aa57505050811b01600d55613470565b80600186978294978701518155019601940190613a93565b60046040517ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b5060ff60105416613999565b15613b2157565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c2065786365656460448201527f2073616c655072696365000000000000000000000000000000000000000000006064820152fd5b73ffffffffffffffffffffffffffffffffffffffff6bffffffffffffffffffffffff831691613bd8612710841115613b1a565b16918215613c1f577fffffffffffffffffffffffff0000000000000000000000000000000000000000916020604051613c1081610ec1565b858152015260a01b1617600855565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152fd5b613c8681613d6c565b908115613cd4575b8115613ca9575b8115613c9f575090565b6105849150613ce5565b7fffffffff000000000000000000000000000000000000000000000000000000008116159150613c95565b9050613cdf81613ce5565b90613c8e565b7fffffffff000000000000000000000000000000000000000000000000000000008116907f5a05180f000000000000000000000000000000000000000000000000000000008214918215613d3857505090565b7f7965db0b000000000000000000000000000000000000000000000000000000001491508115613d66575090565b61058491505b7fffffffff00000000000000000000000000000000000000000000000000000000167f2a55205a000000000000000000000000000000000000000000000000000000008114908115613dbc575090565b7f01ffc9a7000000000000000000000000000000000000000000000000000000009150149056fea2646970667358221220db08cb5098b122879373fc1576cbeb220975504b788e70cccc47bb354eabcf5764736f6c63430008130033