UNPKG

@mantleio/contracts

Version:
1,227 lines 118 kB
{ "_format": "hh-sol-artifact-1", "contractName": "BVM_EigenDataLayrChain", "sourceName": "contracts/da/BVM_EigenDataLayrChain.sol", "abi": [ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldDataLayrManagerAddress", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newDataLayrManagerAddress", "type": "address" } ], "name": "DataLayrManagerAddressUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldFraudProofPeriod", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newFraudProofPeriod", "type": "uint256" } ], "name": "FraudProofPeriodUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldL2ConfirmedBlockNumber", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newL2ConfirmedBlockNumber", "type": "uint256" } ], "name": "L2ConfirmedBlockNumberUpdated", "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": "uint256", "name": "reRollupIndex", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "rollupBatchIndex", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "stratL2BlockNumber", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "endL2BlockNumber", "type": "uint256" } ], "name": "ReRollupBatchData", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldReSubmitterAddress", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newReSubmitterAddress", "type": "address" } ], "name": "ReSubmitterAddressUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "rollupBatchIndex", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "l2StoredBlockNumber", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "l2ConfirmedBlockNumber", "type": "uint256" } ], "name": "ResetRollupBatchData", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldRollupBatchIndex", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newRollupBatchIndex", "type": "uint256" } ], "name": "RollupBatchIndexUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "rollupBatchIndex", "type": "uint256" }, { "indexed": false, "internalType": "uint32", "name": "dataStoreId", "type": "uint32" }, { "indexed": false, "internalType": "uint256", "name": "stratL2BlockNumber", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "endL2BlockNumber", "type": "uint256" } ], "name": "RollupStoreConfirmed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint32", "name": "dataStoreId", "type": "uint32" }, { "indexed": false, "internalType": "uint256", "name": "stratL2BlockNumber", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "endL2BlockNumber", "type": "uint256" } ], "name": "RollupStoreInitialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "rollupBatchIndex", "type": "uint256" }, { "indexed": false, "internalType": "uint32", "name": "dataStoreId", "type": "uint32" }, { "indexed": false, "internalType": "uint256", "name": "stratL2BlockNumber", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "endL2BlockNumber", "type": "uint256" } ], "name": "RollupStoreReverted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldSequencerAddress", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newSequencerAddress", "type": "address" } ], "name": "SequencerAddressUpdated", "type": "event" }, { "inputs": [], "name": "BLOCK_STALE_MEASURE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FRAUD_STRING", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "data", "type": "bytes" }, { "components": [ { "components": [ { "internalType": "bytes32", "name": "headerHash", "type": "bytes32" }, { "internalType": "uint32", "name": "durationDataStoreId", "type": "uint32" }, { "internalType": "uint32", "name": "globalDataStoreId", "type": "uint32" }, { "internalType": "uint32", "name": "referenceBlockNumber", "type": "uint32" }, { "internalType": "uint32", "name": "blockNumber", "type": "uint32" }, { "internalType": "uint96", "name": "fee", "type": "uint96" }, { "internalType": "address", "name": "confirmer", "type": "address" }, { "internalType": "bytes32", "name": "signatoryRecordHash", "type": "bytes32" } ], "internalType": "struct IDataLayrServiceManager.DataStoreMetadata", "name": "metadata", "type": "tuple" }, { "internalType": "uint8", "name": "duration", "type": "uint8" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "internalType": "uint32", "name": "index", "type": "uint32" } ], "internalType": "struct IDataLayrServiceManager.DataStoreSearchData", "name": "searchData", "type": "tuple" }, { "internalType": "uint256", "name": "startL2Block", "type": "uint256" }, { "internalType": "uint256", "name": "endL2Block", "type": "uint256" }, { "internalType": "uint32", "name": "originDataStoreId", "type": "uint32" }, { "internalType": "uint256", "name": "reConfirmedBatchIndex", "type": "uint256" }, { "internalType": "bool", "name": "isReRollup", "type": "bool" } ], "name": "confirmData", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "dataManageAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "name": "dataStoreIdToL2RollUpBlock", "outputs": [ { "internalType": "uint256", "name": "startL2BlockNumber", "type": "uint256" }, { "internalType": "uint256", "name": "endBL2BlockNumber", "type": "uint256" }, { "internalType": "bool", "name": "isReRollup", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "name": "dataStoreIdToRollupStoreNumber", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "fraudProofPeriod", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getL2ConfirmedBlockNumber", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "_dataStoreId", "type": "uint32" } ], "name": "getL2RollUpBlockByDataStoreId", "outputs": [ { "components": [ { "internalType": "uint256", "name": "startL2BlockNumber", "type": "uint256" }, { "internalType": "uint256", "name": "endBL2BlockNumber", "type": "uint256" }, { "internalType": "bool", "name": "isReRollup", "type": "bool" } ], "internalType": "struct BVM_EigenDataLayrChain.BatchRollupBlock", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getL2StoredBlockNumber", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_rollupBatchIndex", "type": "uint256" } ], "name": "getRollupStoreByRollupBatchIndex", "outputs": [ { "components": [ { "internalType": "uint32", "name": "originDataStoreId", "type": "uint32" }, { "internalType": "uint32", "name": "dataStoreId", "type": "uint32" }, { "internalType": "uint32", "name": "confirmAt", "type": "uint32" }, { "internalType": "enum BVM_EigenDataLayrChain.RollupStoreStatus", "name": "status", "type": "uint8" } ], "internalType": "struct BVM_EigenDataLayrChain.RollupStore", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_sequencer", "type": "address" }, { "internalType": "address", "name": "_dataManageAddress", "type": "address" }, { "internalType": "address", "name": "_reSubmitterAddress", "type": "address" }, { "internalType": "uint256", "name": "_block_stale_measure", "type": "uint256" }, { "internalType": "uint256", "name": "_fraudProofPeriod", "type": "uint256" }, { "internalType": "uint256", "name": "_l2SubmittedBlockNumber", "type": "uint256" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "l2ConfirmedBlockNumber", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "l2StoredBlockNumber", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes[]", "name": "polys", "type": "bytes[]" }, { "internalType": "uint256", "name": "startIndex", "type": "uint256" }, { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "parse", "outputs": [ { "internalType": "bytes", "name": "provenString", "type": "bytes" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "fraudulentStoreNumber", "type": "uint256" }, { "internalType": "uint256", "name": "startIndex", "type": "uint256" }, { "components": [ { "components": [ { "internalType": "bytes32", "name": "headerHash", "type": "bytes32" }, { "internalType": "uint32", "name": "durationDataStoreId", "type": "uint32" }, { "internalType": "uint32", "name": "globalDataStoreId", "type": "uint32" }, { "internalType": "uint32", "name": "referenceBlockNumber", "type": "uint32" }, { "internalType": "uint32", "name": "blockNumber", "type": "uint32" }, { "internalType": "uint96", "name": "fee", "type": "uint96" }, { "internalType": "address", "name": "confirmer", "type": "address" }, { "internalType": "bytes32", "name": "signatoryRecordHash", "type": "bytes32" } ], "internalType": "struct IDataLayrServiceManager.DataStoreMetadata", "name": "metadata", "type": "tuple" }, { "internalType": "uint8", "name": "duration", "type": "uint8" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "internalType": "uint32", "name": "index", "type": "uint32" } ], "internalType": "struct IDataLayrServiceManager.DataStoreSearchData", "name": "searchData", "type": "tuple" }, { "components": [ { "internalType": "bytes", "name": "header", "type": "bytes" }, { "internalType": "uint32", "name": "firstChunkNumber", "type": "uint32" }, { "internalType": "bytes[]", "name": "polys", "type": "bytes[]" }, { "components": [ { "components": [ { "internalType": "uint256", "name": "X", "type": "uint256" }, { "internalType": "uint256", "name": "Y", "type": "uint256" } ], "internalType": "struct BN254.G1Point", "name": "interpolationPoly", "type": "tuple" }, { "components": [ { "internalType": "uint256", "name": "X", "type": "uint256" }, { "internalType": "uint256", "name": "Y", "type": "uint256" } ], "internalType": "struct BN254.G1Point", "name": "revealProof", "type": "tuple" }, { "components": [ { "internalType": "uint256[2]", "name": "X", "type": "uint256[2]" }, { "internalType": "uint256[2]", "name": "Y", "type": "uint256[2]" } ], "internalType": "struct BN254.G2Point", "name": "zeroPoly", "type": "tuple" }, { "internalType": "bytes", "name": "zeroPolyProof", "type": "bytes" } ], "internalType": "struct DataLayrDisclosureLogic.MultiRevealProof[]", "name": "multiRevealProofs", "type": "tuple[]" }, { "components": [ { "internalType": "uint256[2]", "name": "X", "type": "uint256[2]" }, { "internalType": "uint256[2]", "name": "Y", "type": "uint256[2]" } ], "internalType": "struct BN254.G2Point", "name": "polyEquivalenceProof", "type": "tuple" } ], "internalType": "struct BVM_EigenDataLayrChain.DisclosureProofs", "name": "disclosureProofs", "type": "tuple" } ], "name": "proveFraud", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "reRollupBatchIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "reRollupIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "reSubmitterAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" } ], "name": "removeFraudProofAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_rollupBatchIndex", "type": "uint256" }, { "internalType": "uint256", "name": "_l2StoredBlockNumber", "type": "uint256" }, { "internalType": "uint256", "name": "_l2ConfirmedBlockNumber", "type": "uint256" } ], "name": "resetRollupBatchData", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "rollupBatchIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "rollupBatchIndexRollupStores", "outputs": [ { "internalType": "uint32", "name": "originDataStoreId", "type": "uint32" }, { "internalType": "uint32", "name": "dataStoreId", "type": "uint32" }, { "internalType": "uint32", "name": "confirmAt", "type": "uint32" }, { "internalType": "enum BVM_EigenDataLayrChain.RollupStoreStatus", "name": "status", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sequencer", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" } ], "name": "setFraudProofAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "header", "type": "bytes" }, { "internalType": "uint8", "name": "duration", "type": "uint8" }, { "internalType": "uint32", "name": "blockNumber", "type": "uint32" }, { "internalType": "uint256", "name": "startL2Block", "type": "uint256" }, { "internalType": "uint256", "name": "endL2Block", "type": "uint256" }, { "internalType": "uint32", "name": "totalOperatorsIndex", "type": "uint32" }, { "internalType": "bool", "name": "isReRollup", "type": "bool" } ], "name": "storeData", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "batchIndex", "type": "uint256" } ], "name": "submitReRollUpInfo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_dataManageAddress", "type": "address" } ], "name": "updateDataLayrManagerAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_fraudProofPeriod", "type": "uint256" } ], "name": "updateFraudProofPeriod", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_l2ConfirmedBlockNumber", "type": "uint256" } ], "name": "updateL2ConfirmedBlockNumber", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_l2StoredBlockNumber", "type": "uint256" } ], "name": "updateL2StoredBlockNumber", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_reSubmitterAddress", "type": "address" } ], "name": "updateReSubmitterAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_rollupBatchIndex", "type": "uint256" } ], "name": "updateRollupBatchIndex", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_sequencer", "type": "address" } ], "name": "updateSequencerAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6155d280620000f46000396000f3fe608060405234801561001057600080fd5b50600436106102775760003560e01c8063728cdbca11610160578063afab4ac5116100d8578063d7fbc2e21161008c578063f2a8f12411610071578063f2a8f124146105e9578063f2fde38b146105f2578063ff2e07491461060557600080fd5b8063d7fbc2e2146105b6578063f2495029146105c957600080fd5b8063c24f03f4116100bd578063c24f03f414610559578063c8fff01b1461056c578063c96c0d381461057f57600080fd5b8063afab4ac514610526578063b537c4c71461053957600080fd5b8063927f20321161012f5780639495de40116101145780639495de40146104f7578063990fca661461050a5780639a71e29c1461051357600080fd5b8063927f20321461049f57806392f30a45146104a857600080fd5b8063728cdbca14610446578063758b8147146104595780638bea6cae146104795780638da5cb5b1461048157600080fd5b80634618ed87116101f35780635c1bba38116101c25780635e4a3056116101a75780635e4a3056146104225780635e8b3f2d14610435578063715018a61461043e57600080fd5b80635c1bba38146103d45780635d42ffb71461041957600080fd5b80634618ed871461034157806346b2eb9b146103545780634a4232de1461035c57806359cb63911461036f57600080fd5b80632e64b4c01161024a578063301b39ab1161022f578063301b39ab1461031357806332c58f7a146103255780633c7629841461033857600080fd5b80632e64b4c0146102e05780632e72866b146102f357600080fd5b806302d777de1461027c578063060ee9a41461029157806315fda737146102a45780631f944c8f146102b7575b600080fd5b61028f61028a366004614824565b610625565b005b61028f61029f366004614824565b6107ee565b61028f6102b2366004614a0e565b610976565b6102ca6102c5366004614a78565b61111d565b6040516102d79190614b2a565b60405180910390f35b61028f6102ee366004614b7b565b6112c2565b610306610301366004614b7b565b611354565b6040516102d79190614bfe565b609a545b6040519081526020016102d7565b61028f610333366004614824565b6113ed565b610317609d5481565b61028f61034f366004614c95565b611552565b6102ca611cb8565b61028f61036a366004614b7b565b611cd4565b6103c461037d366004614b7b565b609e6020526000908152604090205463ffffffff80821691640100000000810482169168010000000000000000820416906c01000000000000000000000000900460ff1684565b6040516102d79493929190614d30565b6097546103f49073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102d7565b610317609b5481565b61028f610430366004614d63565b611d9f565b61031760995481565b61028f61216d565b61028f610454366004614df1565b612181565b60a2546103f49073ffffffffffffffffffffffffffffffffffffffff1681565b609b54610317565b60335473ffffffffffffffffffffffffffffffffffffffff166103f4565b61031760a35481565b6104da6104b6366004614e50565b609f6020526000908152604090208054600182015460029092015490919060ff1683565b6040805193845260208401929092521515908201526060016102d7565b61028f610505366004614b7b565b6125fc565b610317609a5481565b61028f610521366004614b7b565b6126c7565b61028f610534366004614824565b6128ab565b610317610547366004614e50565b60a06020526000908152604090205481565b61028f610567366004614e6d565b612a66565b61028f61057a366004614824565b612b9b565b61059261058d366004614e50565b612cab565b604080518251815260208084015190820152918101511515908201526060016102d7565b61028f6105c4366004614b7b565b612d15565b6098546103f49073ffffffffffffffffffffffffffffffffffffffff1681565b610317609c5481565b61028f610600366004614824565b612f1c565b610317610613366004614b7b565b60a46020526000908152604090205481565b60975473ffffffffffffffffffffffffffffffffffffffff1633146106b75760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79207468652073657175656e6365722063616e20646f2074686973206160448201527f6374696f6e00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166107675760405162461bcd60e51b8152602060048201526044602482018190527f757064617465446174614c6179724d616e61676572416464726573733a205f64908201527f6174614d616e6167654164647265737320697320746865207a65726f2061646460648201527f7265737300000000000000000000000000000000000000000000000000000000608482015260a4016106ae565b6098805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117909355604080519190921680825260208201939093527f7dc2cdf7b45e41e53cedea7a30250d948690332e87d86f5eff45acd42ab259a291015b60405180910390a15050565b60975473ffffffffffffffffffffffffffffffffffffffff16331461087b5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79207468652073657175656e6365722063616e20646f2074686973206160448201527f6374696f6e00000000000000000000000000000000000000000000000000000060648201526084016106ae565b73ffffffffffffffffffffffffffffffffffffffff811661092a5760405162461bcd60e51b815260206004820152604d60248201527f72656d6f7665467261756450726f6f66416464726573733a2072656d6f76654660448201527f7261756450726f6f66416464726573733a20616464726573732069732074686560648201527f207a65726f206164647265737300000000000000000000000000000000000000608482015260a4016106ae565b73ffffffffffffffffffffffffffffffffffffffff16600090815260a16020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b33600090815260a1602052604090205460ff166109fb5760405162461bcd60e51b815260206004820152603a60248201527f70726f766546726175643a204f6e6c792066726175642070726f6f662077686960448201527f7465206c6973742063616e206368616c6c656e6765206461746100000000000060648201526084016106ae565b6000848152609e602090815260408083208151608081018352815463ffffffff8082168352640100000000820481169583019590955268010000000000000000810490941692810192909252909160608301906c01000000000000000000000000900460ff166002811115610a7257610a72614b94565b6002811115610a8357610a83614b94565b9052509050600181606001516002811115610aa057610aa0614b94565b148015610ab6575042816040015163ffffffff16115b610b285760405162461bcd60e51b815260206004820152602d60248201527f526f6c6c757053746f7265206d75737420626520636f6d6d697474656420616e60448201527f6420756e636f6e6669726d65640000000000000000000000000000000000000060648201526084016106ae565b8251610b3390612fb9565b6098546020850151604080870151606088015191517fed82c0ee00000000000000000000000000000000000000000000000000000000815260ff9093166004840152602483015263ffffffff16604482015273ffffffffffffffffffffffffffffffffffffffff9091169063ed82c0ee9060640160206040518083038186803b158015610bbf57600080fd5b505afa158015610bd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf79190614e99565b14610c6a5760405162461bcd60e51b815260206004820152602a60248201527f70726f766546726175643a206d6574616461746120707265696d61676520697360448201527f20696e636f72726563740000000000000000000000000000000000000000000060648201526084016106ae565b806020015163ffffffff1683600001516040015163ffffffff1614610d1d5760405162461bcd60e51b815260206004820152604260248201527f7365616368446174612773206461746173746f7265206964206973206e6f742060448201527f636f6e73697374656e74207769746820676976656e20726f6c6c75702073746f60648201527f7265000000000000000000000000000000000000000000000000000000000000608482015260a4016106ae565b610d278280614eb2565b604051610d35929190614f17565b60405190819003902083515114610db45760405162461bcd60e51b815260206004820152603260248201527f646973636c6f737572652070726f6f667320686561646572686173682070726560448201527f696d61676520697320696e636f7272656374000000000000000000000000000060648201526084016106ae565b610df4610dc18380614eb2565b610dd16040860160208701614e50565b610dde6040870187614f27565b610deb6060890189614f27565b896080016130e6565b610e405760405162461bcd60e51b815260206004820152601d60248201527f646973636c6f737572652070726f6f66732061726520696e76616c696400000060448201526064016106ae565b6000610e54610e4f8480614eb2565b6136de565b905063ffffffff8116610e6a6040850185614f27565b9050610e7c6040860160208701614e50565b63ffffffff16610e8c9190614fbe565b1115610f005760405162461bcd60e51b815260206004820152602e60248201527f43616e206f6e6c792070726f766520646174612066726f6d207468652073797360448201527f74656d61746963206368756e6b7300000000000000000000000000000000000060648201526084016106ae565b6000610f32610f126040860186614f27565b8860405180606001604052806032815260200161556b603291395161111d565b905060405180606001604052806032815260200161556b6032913951815114610fe95760405162461bcd60e51b815260206004820152604260248201527f50617273696e67206572726f722c2070726f76656e20737472696e672069732060448201527f646966666572656e74206c656e677468207468616e206672617564207374726960648201527f6e67000000000000000000000000000000000000000000000000000000000000608482015260a4016106ae565b60405180606001604052806032815260200161556b603291398051906020012081805190602001201461105e5760405162461bcd60e51b815260206004820152601d60248201527f70726f76656e20737472696e6720213d20667261756420737472696e6700000060448201526064016106ae565b6000878152609e6020908152604080832080547fffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff166c02000000000000000000000000179055875181015163ffffffff908116808552609f8452828520548a518401519092168552938290206001015482518c8152938401949094529082015260608101919091527fca227c67a02028763083580d42e8bdef4bb49c393068d05983421cd7a4a2a5be906080015b60405180910390a150505050505050565b606061112a602084615005565b61119c5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742073746172742072656164696e672066726f6d2061207061646460448201527f656420627974650000000000000000000000000000000000000000000000000060648201526084016106ae565b6000835b83835110156112b85760006111eb826111ba602082615019565b6111c5906001614fbe565b6111d090602061502d565b6111da919061506a565b85516111e6908861506a565b6136ed565b90508388888581811061120057611200615081565b90506020028101906112129190614eb2565b849061121e8583614fbe565b9261122b939291906150b0565b60405160200161123d939291906150da565b604051602081830303815290604052935087878481811061126057611260615081565b90506020028101906112729190614eb2565b905061127e8284614fbe565b141561129a578261128e81615102565b935050600191506112b2565b6112a5816001614fbe565b6112af9083614fbe565b91505b506111a0565b5050949350505050565b60975473ffffffffffffffffffffffffffffffffffffffff16331461134f5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79207468652073657175656e6365722063616e20646f2074686973206160448201527f6374696f6e00000000000000000000000000000000000000000000000000000060648201526084016106ae565b609b55565b61135c614721565b6000828152609e60209081526040918290208251608081018452815463ffffffff80821683526401000000008204811694830194909452680100000000000000008104909316938101939093529060608301906c01000000000000000000000000900460ff1660028111156113d3576113d3614b94565b60028111156113e4576113e4614b94565b90525092915050565b60975473ffffffffffffffffffffffffffffffffffffffff16331461147a5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79207468652073657175656e6365722063616e20646f2074686973206160448201527f6374696f6e00000000000000000000000000000000000000000000000000000060648201526084016106ae565b73ffffffffffffffffffffffffffffffffffffffff81166115035760405162461bcd60e51b815260206004820152603160248201527f736574467261756450726f6f66416464726573733a206164647265737320697360448201527f20746865207a65726f206164647265737300000000000000000000000000000060648201526084016106ae565b73ffffffffffffffffffffffffffffffffffffffff16600090815260a16020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b60975473ffffffffffffffffffffffffffffffffffffffff1633146115df5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79207468652073657175656e6365722063616e20646f2074686973206160448201527f6374696f6e00000000000000000000000000000000000000000000000000000060648201526084016106ae565b8484116116545760405162461bcd60e51b815260206004820152603360248201527f636f6e6669726d446174613a20656e644c32426c6f636b206d757374206d6f7260448201527f65207468616e2073746172744c32426c6f636b0000000000000000000000000060648201526084016106ae565b855160409081015163ffffffff166000908152609f6020908152908290208251606081018452815480825260018301549382019390935260029091015460ff16151592810192909252861480156116ae5750848160200151145b80156116c1575081151581604001511515145b61177f5760405162461bcd60e51b815260206004820152606260248201527f636f6e6669726d446174613a20446174612073746f726520656974686572207760448201527f6173206e6f7420696e697469616c697a65642062792074686520726f6c6c757060648201527f20636f6e74726163742c206f7220697320616c726561647920636f6e6669726d60848201527f656400000000000000000000000000000000000000000000000000000000000060a482015260c4016106ae565b865160409081015163ffffffff16600090815260a060205220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146118795760405162461bcd60e51b815260206004820152606260248201527f636f6e6669726d446174613a20446174612073746f726520656974686572207760448201527f6173206e6f7420696e697469616c697a65642062792074686520726f6c6c757060648201527f20636f6e74726163742c206f7220697320616c726561647920636f6e6669726d60848201527f656400000000000000000000000000000000000000000000000000000000000060a482015260c4016106ae565b6098546040517f58942e7300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906358942e73906118d3908c908c908c90600401615184565b600060405180830381600087803b1580156118ed57600080fd5b505af1158015611901573d6000803e3d6000fd5b5050505081611aeb5760408051608081018252885182015163ffffffff90811682528951830151166020820152609c5490918201906119409042614fbe565b63ffffffff16815260200160019052609d546000908152609e602090815260409182902083518154928501519385015163ffffffff90811668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff958216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009095169190921617929092179283168217815560608401519092909183917fffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff9091167fffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffff909116176c01000000000000000000000000836002811115611a5657611a56614b94565b02179055505050609b859055609d8054885160409081015163ffffffff16600090815260a06020529081208290557fc7c0900be05d2a0ad0f77852eb975d9e862d1db0a2238617dd0f77854782f6729290611ab083615102565b909155508851604090810151815163ffffffff93841681529216602083015281018890526060810187905260800160405180910390a1611cad565b60405180608001604052808563ffffffff16815260200188600001516040015163ffffffff168152602001609c5442611b249190614fbe565b63ffffffff168152602001600190526000848152609e602090815260409182902083518154928501519385015163ffffffff90811668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff958216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009095169190921617929092179283168217815560608401519092909183917fffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffff9091167fffffffffffffffffffffffffffffffffffffff0000000000ffffffffffffffff909116176c01000000000000000000000000836002811115611c3757611c37614b94565b021790555050875160409081015163ffffffff908116600090815260a06020908152908390208790558a518301518351888152921690820152908101889052606081018790527fc7c0900be05d2a0ad0f77852eb975d9e862d1db0a2238617dd0f77854782f67291506080015b60405180910390a15b505050505050505050565b60405180606001604052806032815260200161556b6032913981565b60975473ffffffffffffffffffffffffffffffffffffffff163314611d615760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79207468652073657175656e6365722063616e20646f2074686973206160448201527f6374696f6e00000000000000000000000000000000000000000000000000000060648201526084016106ae565b609d80549082905560408051828152602081018490527f84d29a10fee283002b5c77232e8d38a21f0a3f16190de1693f837ac60bfbe2bb91016107e2565b60975473ffffffffffffffffffffffffffffffffffffffff163314611e2c5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79207468652073657175656e6365722063616e20646f2074686973206160448201527f6374696f6e00000000000000000000000000000000000000000000000000000060648201526084016106ae565b838311611ea15760405162461bcd60e51b815260206004820152603160248201527f73746f7265446174613a20656e644c32426c6f636b206d757374206d6f72652060448201527f7468616e2073746172744c32426c6f636b00000000000000000000000000000060648201526084016106ae565b609954611eb463ffffffff87164361506a565b10611f275760405162461bcd60e51b815260206004820152602960248201527f73746f7265446174613a207374616b65732074616b656e2066726f6d20746f6f60448201527f206c6f6e672061676f000000000000000000000000000000000000000000000060648201526084016106ae565b609854604080517f72d18e8d000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff16916372d18e8d916004808301926020929190829003018186803b158015611f9257600080fd5b505afa158015611fa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fca9190615261565b9050609860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dcf49ea733308a8a888f8f6040518863ffffffff1660e01b8152600401612033979695949392919061527e565b602060405180830381600087803b15801561204d57600080fd5b505af1158015612061573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120859190615261565b5060408051606081018252868152602080820187815285151583850190815263ffffffff86166000908152609f8452858120945185559151600185015551600290930180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169315159390931790925560a09052207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90558161212957609a8490555b6040805163ffffffff83168152602081018790529081018590527fa99ca06ac3461399088feac88ec48dc5a47d61c3b6839eab20146f2c4ee5358490606001611ca4565b612175613705565b61217f600061376c565b565b600054610100900460ff16158080156121a15750600054600160ff909116105b806121bb5750303b1580156121bb575060005460ff166001145b61222d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106ae565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561228b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff87166123145760405162461bcd60e51b815260206004820152603860248201527f696e697469616c697a653a2063616e277420736574207a65726f20616464726560448201527f737320746f205f73657175656e6365722061646472657373000000000000000060648201526084016106ae565b73ffffffffffffffffffffffffffffffffffffffff861661239d5760405162461bcd60e51b815260206004820152603860248201527f696e697469616c697a653a2063616e277420736574207a65726f20616464726560448201527f737320746f205f646174614d616e61676541646472657373000000000000000060648201526084016106ae565b73ffffffffffffffffffffffffffffffffffffffff85166124265760405162461bcd60e51b815260206004820152603960248201527f696e697469616c697a653a2063616e277420736574207a65726f20616464726560448201527f737320746f205f72655375626d6974746572416464726573730000000000000060648201526084016106ae565b610e1083101561249e5760405162461bcd60e51b815260206004820152603b60248201527f696e697469616c697a653a205f667261756450726f6f66506572696f64206d7560448201527f7374206265206e6f206c657373207468616e206f6e6520686f7572000000000060648201526084016106ae565b6162708311156125165760405162461bcd60e51b815260206004820152603d60248201527f696e697469616c697a653a205f667261756450726f6f66506572696f64206d7560448201527f7374206265206e6f206d6f7265207468616e20736576656e20686f757200000060648201526084016106ae565b61251e6137e3565b6097805473ffffffffffffffffffffffffffffffffffffffff808a167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556098805489841690831617905560a28054928816929091169190911790556099849055609c839055609a829055609b82905580156125f357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200161110c565b50505050505050565b60975473ffffffffffffffffffffffffffffffffffffffff1633146126895760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79207468652073657175656e6365722063616e20646f2074686973206160448201527f6374696f6e00000000000000000000000000000000000000000000000000000060648201526084016106ae565b609a80549082905560408051828152602081018490527fd81cc97cc11cd748d88c14364de569a7d07c4aeaea3b5a0525ca4d504ec548a991016107e2565b60a25473ffffffffffffffffffffffffffffffffffffffff16331461277a5760405162461bcd60e51b815260206004820152604360248201527f7375626d69745265526f6c6c5570496e666f3a204f6e6c79