From 8a3e411d2e154a53165326650ed0a8e0d6f10414 Mon Sep 17 00:00:00 2001 From: clabby Date: Fri, 9 Feb 2024 12:28:15 -0500 Subject: [PATCH] feat(ctb): Remove `SAURON` role (#9452) * Remove `SAURON` role * bindings --- .../bindingspreview/optimismportal2.go | 35 +------------ .../bindingspreview/optimismportal2_more.go | 2 +- packages/contracts-bedrock/semver-lock.json | 4 +- .../snapshots/abi/OptimismPortal2.json | 13 ----- .../src/L1/OptimismPortal2.sol | 18 ++----- .../test/L1/OptimismPortal2.t.sol | 50 +++++++++---------- packages/contracts-bedrock/test/Specs.t.sol | 8 ++- 7 files changed, 36 insertions(+), 94 deletions(-) diff --git a/op-bindings/bindingspreview/optimismportal2.go b/op-bindings/bindingspreview/optimismportal2.go index 57354ba831fd..874752556068 100644 --- a/op-bindings/bindingspreview/optimismportal2.go +++ b/op-bindings/bindingspreview/optimismportal2.go @@ -48,8 +48,8 @@ type TypesWithdrawalTransaction struct { // OptimismPortal2MetaData contains all meta data concerning the OptimismPortal2 contract. var OptimismPortal2MetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_proofMaturityDelaySeconds\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_disputeGameFinalityDelaySeconds\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_initialRespectedGameType\",\"type\":\"uint32\",\"internalType\":\"GameType\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"GUARDIAN\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"SYSTEM_CONFIG\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractSystemConfig\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"blacklistDisputeGame\",\"inputs\":[{\"name\":\"_disputeGame\",\"type\":\"address\",\"internalType\":\"contractIDisputeGame\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"checkWithdrawal\",\"inputs\":[{\"name\":\"_withdrawalHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deleteProvenWithdrawal\",\"inputs\":[{\"name\":\"_withdrawalHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositTransaction\",\"inputs\":[{\"name\":\"_to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_gasLimit\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_isCreation\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"_data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"disputeGameBlacklist\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDisputeGame\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"disputeGameFactory\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractDisputeGameFactory\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"disputeGameFinalityDelaySeconds\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"donateETH\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"finalizeWithdrawalTransaction\",\"inputs\":[{\"name\":\"_tx\",\"type\":\"tuple\",\"internalType\":\"structTypes.WithdrawalTransaction\",\"components\":[{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"finalizedWithdrawals\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"guardian\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_disputeGameFactory\",\"type\":\"address\",\"internalType\":\"contractDisputeGameFactory\"},{\"name\":\"_systemConfig\",\"type\":\"address\",\"internalType\":\"contractSystemConfig\"},{\"name\":\"_superchainConfig\",\"type\":\"address\",\"internalType\":\"contractSuperchainConfig\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"l2Sender\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"minimumGasLimit\",\"inputs\":[{\"name\":\"_byteCount\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"params\",\"inputs\":[],\"outputs\":[{\"name\":\"prevBaseFee\",\"type\":\"uint128\",\"internalType\":\"uint128\"},{\"name\":\"prevBoughtGas\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"prevBlockNum\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proofMaturityDelaySeconds\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proveWithdrawalTransaction\",\"inputs\":[{\"name\":\"_tx\",\"type\":\"tuple\",\"internalType\":\"structTypes.WithdrawalTransaction\",\"components\":[{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"_disputeGameIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_outputRootProof\",\"type\":\"tuple\",\"internalType\":\"structTypes.OutputRootProof\",\"components\":[{\"name\":\"version\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"messagePasserStorageRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"latestBlockhash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_withdrawalProof\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"provenWithdrawals\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"disputeGameProxy\",\"type\":\"address\",\"internalType\":\"contractIDisputeGame\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"respectedGameType\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"GameType\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"sauron\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"setRespectedGameType\",\"inputs\":[{\"name\":\"_gameType\",\"type\":\"uint32\",\"internalType\":\"GameType\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"superchainConfig\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractSuperchainConfig\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"systemConfig\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractSystemConfig\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransactionDeposited\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"version\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"opaqueData\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawalFinalized\",\"inputs\":[{\"name\":\"withdrawalHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"success\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawalProven\",\"inputs\":[{\"name\":\"withdrawalHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false}]", - Bin: "0x60c06040523480156200001157600080fd5b5060405162005de238038062005de28339810160408190526200003491620002d3565b608083905260a0829052603b805463ffffffff191663ffffffff831617905562000061600080806200006a565b50505062000317565b600054610100900460ff16158080156200008b5750600054600160ff909116105b80620000bb5750620000a8306200020560201b6200225a1760201c565b158015620000bb575060005460ff166001145b620001245760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000148576000805461ff0019166101001790555b603880546001600160a01b03199081166001600160a01b03878116919091179092556037805490911685831617905560358054610100600160a81b0319166101008584160217905560325416620001ae57603280546001600160a01b03191661dead1790555b620001b862000214565b8015620001ff576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6001600160a01b03163b151590565b600054610100900460ff16620002815760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016200011b565b600154600160c01b90046001600160401b0316600003620002d15760408051606081018252633b9aca0080825260006020830152436001600160401b031691909201819052600160c01b02176001555b565b600080600060608486031215620002e957600080fd5b8351925060208401519150604084015163ffffffff811681146200030c57600080fd5b809150509250925092565b60805160a051615a976200034b6000396000818161043b01526119b901526000818161052301526116f80152615a976000f3fe6080604052600436106101b05760003560e01c80638b4c40b0116100ec578063bf653a5c1161008a578063e965084c11610064578063e965084c14610608578063e9e05c42146106a4578063f0498750146106b7578063f2b4e617146106e257600080fd5b8063bf653a5c14610514578063c0c53b8b14610547578063cff0ab961461056757600080fd5b80639bf62d82116100c65780639bf62d8214610469578063a14238e714610496578063a27778e5146104c6578063a35d99df146104db57600080fd5b80638b4c40b0146101d55780638c3152e91461040c578063952b27971461042c57600080fd5b80634870496f11610159578063724c184c11610133578063724c184c146103975780637af1906d146103ac5780637d6be8dc146103cc5780637fc48504146103ec57600080fd5b80634870496f1461030c57806354fd4d501461032c5780635c975abb1461038257600080fd5b80633c9f397c1161018a5780633c9f397c14610285578063452a9320146102b757806345884d32146102cc57600080fd5b806303869d7c146101dc57806333d7e2bd146101fc57806335e80ab31461025357600080fd5b366101d7576101d53334620186a060006040518060200160405280600081525061070f565b005b600080fd5b3480156101e857600080fd5b506101d56101f7366004614e0f565b6109aa565b34801561020857600080fd5b506037546102299073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561025f57600080fd5b5060355461022990610100900473ffffffffffffffffffffffffffffffffffffffff1681565b34801561029157600080fd5b50603b546102a29063ffffffff1681565b60405163ffffffff909116815260200161024a565b3480156102c357600080fd5b50610229610a71565b3480156102d857600080fd5b506102fc6102e7366004614e4d565b603a6020526000908152604090205460ff1681565b604051901515815260200161024a565b34801561031857600080fd5b506101d5610327366004615025565b610b09565b34801561033857600080fd5b506103756040518060400160405280600581526020017f332e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161024a9190615177565b34801561038e57600080fd5b506102fc61137a565b3480156103a357600080fd5b5061022961140d565b3480156103b857600080fd5b506101d56103c7366004614e0f565b611417565b3480156103d857600080fd5b506101d56103e7366004614e4d565b611b6b565b3480156103f857600080fd5b506101d561040736600461519c565b611c4b565b34801561041857600080fd5b506101d56104273660046151b9565b611d15565b34801561043857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405190815260200161024a565b34801561047557600080fd5b506032546102299073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104a257600080fd5b506102fc6104b1366004614e0f565b60336020526000908152604090205460ff1681565b3480156104d257600080fd5b5061dead610229565b3480156104e757600080fd5b506104fb6104f636600461520c565b611fed565b60405167ffffffffffffffff909116815260200161024a565b34801561052057600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061045b565b34801561055357600080fd5b506101d5610562366004615229565b61200c565b34801561057357600080fd5b506001546105cf906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff928316602085015291169082015260600161024a565b34801561061457600080fd5b5061066f610623366004614e0f565b60396020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff81169074010000000000000000000000000000000000000000900467ffffffffffffffff1682565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835267ffffffffffffffff90911660208301520161024a565b6101d56106b2366004615282565b61070f565b3480156106c357600080fd5b5060375473ffffffffffffffffffffffffffffffffffffffff16610229565b3480156106ee57600080fd5b506038546102299073ffffffffffffffffffffffffffffffffffffffff1681565b8260005a905083156107c65773ffffffffffffffffffffffffffffffffffffffff8716156107c657604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f4f7074696d69736d506f7274616c3a206d7573742073656e6420746f2061646460448201527f72657373283029207768656e206372656174696e67206120636f6e747261637460648201526084015b60405180910390fd5b6107d08351611fed565b67ffffffffffffffff168567ffffffffffffffff161015610873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f4f7074696d69736d506f7274616c3a20676173206c696d697420746f6f20736d60448201527f616c6c000000000000000000000000000000000000000000000000000000000060648201526084016107bd565b6201d4c0835111156108e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4f7074696d69736d506f7274616c3a206461746120746f6f206c61726765000060448201526064016107bd565b33328114610902575033731111000000000000000000000000000000001111015b6000348888888860405160200161091d959493929190615301565b604051602081830303815290604052905060008973ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c328460405161098d9190615177565b60405180910390a450506109a18282612276565b50505050505050565b3361dead14610a3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f4f7074696d69736d506f7274616c3a206f6e6c7920736175726f6e2063616e2060448201527f64656c6574652070726f76656e207769746864726177616c730000000000000060648201526084016107bd565b600090815260396020526040902080547fffffffff00000000000000000000000000000000000000000000000000000000169055565b6000603560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663452a93206040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b049190615366565b905090565b610b1161137a565b15610b78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f7074696d69736d506f7274616c3a207061757365640000000000000000000060448201526064016107bd565b3073ffffffffffffffffffffffffffffffffffffffff16856040015173ffffffffffffffffffffffffffffffffffffffff1603610c37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a20796f752063616e6e6f742073656e642060448201527f6d6573736167657320746f2074686520706f7274616c20636f6e74726163740060648201526084016107bd565b6038546040517fbb8aa1fc00000000000000000000000000000000000000000000000000000000815260048101869052600091829173ffffffffffffffffffffffffffffffffffffffff9091169063bb8aa1fc90602401606060405180830381865afa158015610cab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccf9190615383565b925050915060008173ffffffffffffffffffffffffffffffffffffffff1663bcef3b556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4591906153c5565b603b5490915060ff848116911614610ddf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f7074696d69736d506f7274616c3a20696e76616c69642067616d652074797060448201527f650000000000000000000000000000000000000000000000000000000000000060648201526084016107bd565b610df6610df1368890038801886153de565b6125a3565b8114610e84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f7074696d69736d506f7274616c3a20696e76616c6964206f7574707574207260448201527f6f6f742070726f6f66000000000000000000000000000000000000000000000060648201526084016107bd565b6000610e8f896125ff565b60008181526039602090815260409182902082518084019093525473ffffffffffffffffffffffffffffffffffffffff81168084527401000000000000000000000000000000000000000090910467ffffffffffffffff169183018290529293509091901580610f7e575060018573ffffffffffffffffffffffffffffffffffffffff1663200d2ed26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6b9190615473565b6002811115610f7c57610f7c615444565b145b80610fae575073ffffffffffffffffffffffffffffffffffffffff85166000908152603a602052604090205460ff165b806110415750603b5463ffffffff1660ff1661103b8273ffffffffffffffffffffffffffffffffffffffff1663bbdc02db6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561100e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110329190615494565b63ffffffff1690565b60ff1614155b6110f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173682060448201527f68617320616c7265616479206265656e2070726f76656e2c20616e642064697360648201527f707574652067616d65206973206e6f7420696e76616c69640000000000000000608482015260a4016107bd565b60408051602081018590526000918101829052606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830181905292506111bc9101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152600182527f01000000000000000000000000000000000000000000000000000000000000006020830152906111b28b8d6154b1565b8d6040013561262f565b611248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a20696e76616c696420776974686472617760448201527f616c20696e636c7573696f6e2070726f6f66000000000000000000000000000060648201526084016107bd565b60405180604001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506039600086815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050508b6040015173ffffffffffffffffffffffffffffffffffffffff168c6020015173ffffffffffffffffffffffffffffffffffffffff16857f67a6208cfcc0801d50f6cbe764733f4fddf66ac0b04442061a8a8c0cb6b63f6260405160405180910390a4505050505050505050505050565b6000603560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113e9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b049190615535565b6000610b04610a71565b600081815260396020908152604080832081518083018352905473ffffffffffffffffffffffffffffffffffffffff81168083527401000000000000000000000000000000000000000090910467ffffffffffffffff1682850152808552603a90935292205460ff161561150d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4f7074696d69736d506f7274616c3a20646973707574652067616d652068617360448201527f206265656e20626c61636b6c697374656400000000000000000000000000000060648201526084016107bd565b816020015167ffffffffffffffff166000036115ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206e60448201527f6f74206265656e2070726f76656e20796574000000000000000000000000000060648201526084016107bd565b61162a8173ffffffffffffffffffffffffffffffffffffffff1663cf09e0d06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161d9190615552565b67ffffffffffffffff1690565b67ffffffffffffffff16826020015167ffffffffffffffff16116116f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604e60248201527f4f7074696d69736d506f7274616c3a207769746864726177616c2074696d657360448201527f74616d70206c657373207468616e20646973707574652067616d65206372656160648201527f74696f6e2074696d657374616d70000000000000000000000000000000000000608482015260a4016107bd565b7f0000000000000000000000000000000000000000000000000000000000000000826020015167ffffffffffffffff1642611731919061559e565b116117be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4f7074696d69736d506f7274616c3a2070726f76656e2077697468647261776160448201527f6c20686173206e6f74206d61747572656420796574000000000000000000000060648201526084016107bd565b60028173ffffffffffffffffffffffffffffffffffffffff1663200d2ed26040518163ffffffff1660e01b8152600401602060405180830381865afa15801561180b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182f9190615473565b600281111561184057611840615444565b146118cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4f7074696d69736d506f7274616c3a206f75747075742070726f706f73616c2060448201527f686173206e6f74206265656e2066696e616c697a65642079657400000000000060648201526084016107bd565b603b5463ffffffff1660ff166119278273ffffffffffffffffffffffffffffffffffffffff1663bbdc02db6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561100e573d6000803e3d6000fd5b60ff16146119b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f7074696d69736d506f7274616c3a20696e76616c69642067616d652074797060448201527f650000000000000000000000000000000000000000000000000000000000000060648201526084016107bd565b7f0000000000000000000000000000000000000000000000000000000000000000611a268273ffffffffffffffffffffffffffffffffffffffff166319effeb46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115f9573d6000803e3d6000fd5b611a3a9067ffffffffffffffff164261559e565b11611ac7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4f7074696d69736d506f7274616c3a206f75747075742070726f706f73616c2060448201527f696e206169722d6761700000000000000000000000000000000000000000000060648201526084016107bd565b60008381526033602052604090205460ff1615611b66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206160448201527f6c7265616479206265656e2066696e616c697a6564000000000000000000000060648201526084016107bd565b505050565b3361dead14611bfc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4f7074696d69736d506f7274616c3a206f6e6c7920736175726f6e2063616e2060448201527f626c61636b6c69737420646973707574652067616d657300000000000000000060648201526084016107bd565b73ffffffffffffffffffffffffffffffffffffffff166000908152603a6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b3361dead14611cdc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f4f7074696d69736d506f7274616c3a206f6e6c7920736175726f6e2063616e2060448201527f73657420746865207265737065637465642067616d652074797065000000000060648201526084016107bd565b603b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff92909216919091179055565b565b611d1d61137a565b15611d84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f7074696d69736d506f7274616c3a207061757365640000000000000000000060448201526064016107bd565b60325473ffffffffffffffffffffffffffffffffffffffff1661dead14611e2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a2063616e206f6e6c79207472696767657260448201527f206f6e65207769746864726177616c20706572207472616e73616374696f6e0060648201526084016107bd565b6000611e38826125ff565b9050611e4381611417565b600081815260336020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055908401516032805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff00000000000000000000000000000000000000009092169190911790558301516080840151606085015160a0860151611ee593929190612653565b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905560405190915082907fdb5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1b90611f4a90841515815260200190565b60405180910390a280158015611f605750326001145b15611b66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f7074696d69736d506f7274616c3a207769746864726177616c206661696c6560448201527f640000000000000000000000000000000000000000000000000000000000000060648201526084016107bd565b6000611ffa8260106155b5565b612006906152086155e5565b92915050565b600054610100900460ff161580801561202c5750600054600160ff909116105b806120465750303b158015612046575060005460ff166001145b6120d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107bd565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561213057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b603880547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8781169190911790925560378054909116858316179055603580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010085841602179055603254166121e957603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead1790555b6121f16126b1565b801561225457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b6001546000906122ac907801000000000000000000000000000000000000000000000000900467ffffffffffffffff164361559e565b905060006122b86127c4565b90506000816020015160ff16826000015163ffffffff166122d99190615640565b9050821561241057600154600090612310908390700100000000000000000000000000000000900467ffffffffffffffff166156a8565b90506000836040015160ff1683612327919061571c565b6001546123479084906fffffffffffffffffffffffffffffffff1661571c565b6123519190615640565b6001549091506000906123a29061237b9084906fffffffffffffffffffffffffffffffff166157d8565b866060015163ffffffff168760a001516fffffffffffffffffffffffffffffffff16612885565b905060018611156123d1576123ce61237b82876040015160ff1660018a6123c9919061559e565b6128a4565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b60018054869190601090612443908490700100000000000000000000000000000000900467ffffffffffffffff166155e5565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550816000015163ffffffff16600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff161315612526576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5265736f757263654d65746572696e673a2063616e6e6f7420627579206d6f7260448201527f6520676173207468616e20617661696c61626c6520676173206c696d6974000060648201526084016107bd565b600154600090612552906fffffffffffffffffffffffffffffffff1667ffffffffffffffff881661584c565b9050600061256448633b9aca006128f9565b61256e9083615889565b905060005a61257d908861559e565b90508082111561259957612599612594828461559e565b612910565b5050505050505050565b600081600001518260200151836040015184606001516040516020016125e2949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b80516020808301516040808501516060860151608087015160a088015193516000976125e297909695910161589d565b60008061263b86612939565b90506126498186868661296b565b9695505050505050565b600080600061266386600061299b565b905080612699576308c379a06000526020805278185361666543616c6c3a204e6f7420656e6f756768206761736058526064601cfd5b600080855160208701888b5af1979650505050505050565b600054610100900460ff16612748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107bd565b6001547801000000000000000000000000000000000000000000000000900467ffffffffffffffff16600003611d135760408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b6040805160c08082018352600080835260208301819052828401819052606083018190526080830181905260a083015260375483517fcc731b020000000000000000000000000000000000000000000000000000000081529351929373ffffffffffffffffffffffffffffffffffffffff9091169263cc731b02926004808401939192918290030181865afa158015612861573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b04919061590a565b600061289a61289485856129b9565b836129c9565b90505b9392505050565b6000670de0b6b3a76400006128e56128bc8583615640565b6128ce90670de0b6b3a76400006156a8565b6128e085670de0b6b3a764000061571c565b6129d8565b6128ef908661571c565b61289a9190615640565b600081831015612909578161289d565b5090919050565b6000805a90505b825a612923908361559e565b1015611b6657612932826159c6565b9150612917565b6060818051906020012060405160200161295591815260200190565b6040516020818303038152906040529050919050565b60006129928461297c878686612a09565b8051602091820120825192909101919091201490565b95945050505050565b600080603f83619c4001026040850201603f5a021015949350505050565b600081831215612909578161289d565b6000818312612909578161289d565b600061289d670de0b6b3a7640000836129f086613487565b6129fa919061571c565b612a049190615640565b6136cb565b60606000845111612a76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d65726b6c65547269653a20656d707479206b6579000000000000000000000060448201526064016107bd565b6000612a818461390a565b90506000612a8e866139f6565b9050600084604051602001612aa591815260200190565b60405160208183030381529060405290506000805b84518110156133fe576000858281518110612ad757612ad76159fe565b602002602001015190508451831115612b72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201527f74616c206b6579206c656e67746800000000000000000000000000000000000060648201526084016107bd565b82600003612c2b5780518051602091820120604051612bc092612b9a92910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b612c26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016107bd565b612d82565b805151602011612ce15780518051602091820120604051612c5592612b9a92910190815260200190565b612c26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e60448201527f616c20686173680000000000000000000000000000000000000000000000000060648201526084016107bd565b805184516020808701919091208251919092012014612d82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f6460448201527f652068617368000000000000000000000000000000000000000000000000000060648201526084016107bd565b612d8e60106001615a2d565b81602001515103612f6a5784518303612f0257612dc88160200151601081518110612dbb57612dbb6159fe565b6020026020010151613a59565b96506000875111612e5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016107bd565b60018651612e69919061559e565b8214612ef7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016107bd565b50505050505061289d565b6000858481518110612f1657612f166159fe565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110612f4157612f416159fe565b60200260200101519050612f5481613bb9565b9550612f61600186615a2d565b945050506133eb565b600281602001515103613363576000612f8282613bde565b9050600081600081518110612f9957612f996159fe565b016020015160f81c90506000612fb0600283615a45565b612fbb906002615a67565b90506000612fcc848360ff16613c02565b90506000612fda8a89613c02565b90506000612fe88383613c38565b90508083511461307a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016107bd565b60ff85166002148061308f575060ff85166003145b1561327e5780825114613124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016107bd565b61313e8760200151600181518110612dbb57612dbb6159fe565b9c5060008d51116131d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016107bd565b60018c516131df919061559e565b881461326d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016107bd565b50505050505050505050505061289d565b60ff85161580613291575060ff85166001145b156132d0576132bd87602001516001815181106132b0576132b06159fe565b6020026020010151613bb9565b99506132c9818a615a2d565b9850613358565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f6465207769746860448201527f20616e20756e6b6e6f776e20707265666978000000000000000000000000000060648201526084016107bd565b5050505050506133eb565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e70617273656160448201527f626c65206e6f646500000000000000000000000000000000000000000000000060648201526084016107bd565b50806133f6816159c6565b915050612aba565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c6560448201527f6d656e747300000000000000000000000000000000000000000000000000000060648201526084016107bd565b60008082136134f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e4544000000000000000000000000000000000000000000000060448201526064016107bd565b600060606134ff84613cec565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c182136136fc57506000919050565b680755bf798b4a1bf1e5821261376e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4558505f4f564552464c4f57000000000000000000000000000000000000000060448201526064016107bd565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b80516060908067ffffffffffffffff81111561392857613928614e6a565b60405190808252806020026020018201604052801561396d57816020015b60408051808201909152606080825260208201528152602001906001900390816139465790505b50915060005b818110156139ef576040518060400160405280858381518110613998576139986159fe565b602002602001015181526020016139c78684815181106139ba576139ba6159fe565b6020026020010151613dc2565b8152508382815181106139dc576139dc6159fe565b6020908102919091010152600101613973565b5050919050565b606080604051905082518060011b603f8101601f1916830160405280835250602084016020830160005b83811015613a4e578060011b82018184015160001a8060041c8253600f811660018301535050600101613a20565b509295945050505050565b60606000806000613a6985613dd5565b919450925090506000816001811115613a8457613a84615444565b14613b11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016107bd565b613b1b8284615a2d565b855114613baa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527f616e20696e76616c69642072656d61696e64657200000000000000000000000060648201526084016107bd565b61299285602001518484614842565b60606020826000015110613bd557613bd082613a59565b612006565b612006826148d6565b6060612006613bfd8360200151600081518110612dbb57612dbb6159fe565b6139f6565b606082518210613c215750604080516020810190915260008152612006565b61289d8383848651613c33919061559e565b6148ec565b6000808251845110613c4b578251613c4e565b83515b90505b8082108015613cd55750828281518110613c6d57613c6d6159fe565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916848381518110613cac57613cac6159fe565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b15613ce557816001019150613c51565b5092915050565b6000808211613d57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e4544000000000000000000000000000000000000000000000060448201526064016107bd565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b6060612006613dd083614ac4565b614bad565b600080600080846000015111613e93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a4016107bd565b6020840151805160001a607f8111613eb857600060016000945094509450505061483b565b60b781116140c6576000613ecd60808361559e565b905080876000015111613f88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604e60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201527f2873686f727420737472696e6729000000000000000000000000000000000000608482015260a4016107bd565b6001838101517fff0000000000000000000000000000000000000000000000000000000000000016908214158061400157507f80000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610155b6140b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201527f73686f727420737472696e672900000000000000000000000000000000000000608482015260a4016107bd565b506001955093506000925061483b915050565b60bf81116144145760006140db60b78361559e565b905080876000015111614196576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605160248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527f67746820286c6f6e6720737472696e6729000000000000000000000000000000608482015260a4016107bd565b60018301517fff00000000000000000000000000000000000000000000000000000000000000166000819003614274576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e6720737472696e672900000000000000000000000000000000000000000000608482015260a4016107bd565b600184015160088302610100031c60378111614338576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f20737472696e6729000000000000000000000000000000000000000000000000608482015260a4016107bd565b6143428184615a2d565b8951116143f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604c60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e6720737472696e67290000000000000000000000000000000000000000608482015260a4016107bd565b614402836001615a2d565b975095506000945061483b9350505050565b60f781116144f557600061442960c08361559e565b9050808760000151116144e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e206c697374206c656e67746820287360648201527f686f7274206c6973742900000000000000000000000000000000000000000000608482015260a4016107bd565b60019550935084925061483b915050565b600061450260f78361559e565b9050808760000151116145bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201527f6820286c6f6e67206c6973742900000000000000000000000000000000000000608482015260a4016107bd565b60018301517fff0000000000000000000000000000000000000000000000000000000000000016600081900361469b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e67206c69737429000000000000000000000000000000000000000000000000608482015260a4016107bd565b600184015160088302610100031c6037811161475f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604660248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f206c697374290000000000000000000000000000000000000000000000000000608482015260a4016107bd565b6147698184615a2d565b89511161481e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e67206c6973742900000000000000000000000000000000000000000000608482015260a4016107bd565b614829836001615a2d565b975095506001945061483b9350505050565b9193909250565b60608167ffffffffffffffff81111561485d5761485d614e6a565b6040519080825280601f01601f191660200182016040528015614887576020820181803683370190505b509050811561289d57600061489c8486615a2d565b90506020820160005b848110156148bd5782810151828201526020016148a5565b848111156148cc576000858301525b5050509392505050565b6060612006826020015160008460000151614842565b60608182601f01101561495b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f7700000000000000000000000000000000000060448201526064016107bd565b8282840110156149c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f7700000000000000000000000000000000000060448201526064016107bd565b81830184511015614a34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e647300000000000000000000000000000060448201526064016107bd565b606082158015614a535760405191506000825260208201604052614abb565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015614a8c578051835260209283019201614a74565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b60408051808201909152600080825260208201526000825111614b8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a4016107bd565b50604080518082019091528151815260209182019181019190915290565b60606000806000614bbd85613dd5565b919450925090506001816001811115614bd857614bd8615444565b14614c65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016107bd565b8451614c718385615a2d565b14614cfe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e766160448201527f6c696420646174612072656d61696e646572000000000000000000000000000060648201526084016107bd565b604080516020808252610420820190925290816020015b6040805180820190915260008082526020820152815260200190600190039081614d155790505093506000835b8651811015614e0357600080614d886040518060400160405280858c60000151614d6c919061559e565b8152602001858c60200151614d819190615a2d565b9052613dd5565b509150915060405180604001604052808383614da49190615a2d565b8152602001848b60200151614db99190615a2d565b815250888581518110614dce57614dce6159fe565b6020908102919091010152614de4600185615a2d565b9350614df08183615a2d565b614dfa9084615a2d565b92505050614d42565b50845250919392505050565b600060208284031215614e2157600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114614e4a57600080fd5b50565b600060208284031215614e5f57600080fd5b813561289d81614e28565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614ee057614ee0614e6a565b604052919050565b600082601f830112614ef957600080fd5b813567ffffffffffffffff811115614f1357614f13614e6a565b614f4460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601614e99565b818152846020838601011115614f5957600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215614f8857600080fd5b60405160c0810167ffffffffffffffff8282108183111715614fac57614fac614e6a565b816040528293508435835260208501359150614fc782614e28565b81602084015260408501359150614fdd82614e28565b816040840152606085013560608401526080850135608084015260a085013591508082111561500b57600080fd5b5061501885828601614ee8565b60a0830152505092915050565b600080600080600085870360e081121561503e57600080fd5b863567ffffffffffffffff8082111561505657600080fd5b6150628a838b01614f76565b97506020890135965060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08401121561509b57600080fd5b60408901955060c08901359250808311156150b557600080fd5b828901925089601f8401126150c957600080fd5b82359150808211156150da57600080fd5b508860208260051b84010111156150f057600080fd5b959894975092955050506020019190565b60005b8381101561511c578181015183820152602001615104565b838111156122545750506000910152565b60008151808452615145816020860160208601615101565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061289d602083018461512d565b63ffffffff81168114614e4a57600080fd5b6000602082840312156151ae57600080fd5b813561289d8161518a565b6000602082840312156151cb57600080fd5b813567ffffffffffffffff8111156151e257600080fd5b6151ee84828501614f76565b949350505050565b67ffffffffffffffff81168114614e4a57600080fd5b60006020828403121561521e57600080fd5b813561289d816151f6565b60008060006060848603121561523e57600080fd5b833561524981614e28565b9250602084013561525981614e28565b9150604084013561526981614e28565b809150509250925092565b8015158114614e4a57600080fd5b600080600080600060a0868803121561529a57600080fd5b85356152a581614e28565b94506020860135935060408601356152bc816151f6565b925060608601356152cc81615274565b9150608086013567ffffffffffffffff8111156152e857600080fd5b6152f488828901614ee8565b9150509295509295909350565b8581528460208201527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b16604082015282151560f81b604882015260008251615355816049850160208701615101565b919091016049019695505050505050565b60006020828403121561537857600080fd5b815161289d81614e28565b60008060006060848603121561539857600080fd5b83516153a38161518a565b60208501519093506153b4816151f6565b604085015190925061526981614e28565b6000602082840312156153d757600080fd5b5051919050565b6000608082840312156153f057600080fd5b6040516080810181811067ffffffffffffffff8211171561541357615413614e6a565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60006020828403121561548557600080fd5b81516003811061289d57600080fd5b6000602082840312156154a657600080fd5b815161289d8161518a565b600067ffffffffffffffff808411156154cc576154cc614e6a565b8360051b60206154dd818301614e99565b8681529185019181810190368411156154f557600080fd5b865b848110156155295780358681111561550f5760008081fd5b61551b36828b01614ee8565b8452509183019183016154f7565b50979650505050505050565b60006020828403121561554757600080fd5b815161289d81615274565b60006020828403121561556457600080fd5b815161289d816151f6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156155b0576155b061556f565b500390565b600067ffffffffffffffff808316818516818304811182151516156155dc576155dc61556f565b02949350505050565b600067ffffffffffffffff8083168185168083038211156156085761560861556f565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261564f5761564f615611565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f8000000000000000000000000000000000000000000000000000000000000000831416156156a3576156a361556f565b500590565b6000808312837f8000000000000000000000000000000000000000000000000000000000000000018312811516156156e2576156e261556f565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0183138116156157165761571661556f565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60008413600084138583048511828216161561575d5761575d61556f565b7f800000000000000000000000000000000000000000000000000000000000000060008712868205881281841616156157985761579861556f565b600087129250878205871284841616156157b4576157b461556f565b878505871281841616156157ca576157ca61556f565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038413811516156158125761581261556f565b827f80000000000000000000000000000000000000000000000000000000000000000384128116156158465761584661556f565b50500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156158845761588461556f565b500290565b60008261589857615898615611565b500490565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a08301526158e860c083018461512d565b98975050505050505050565b805160ff8116811461590557600080fd5b919050565b600060c0828403121561591c57600080fd5b60405160c0810181811067ffffffffffffffff8211171561593f5761593f614e6a565b604052825161594d8161518a565b815261595b602084016158f4565b602082015261596c604084016158f4565b6040820152606083015161597f8161518a565b606082015260808301516159928161518a565b608082015260a08301516fffffffffffffffffffffffffffffffff811681146159ba57600080fd5b60a08201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036159f7576159f761556f565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008219821115615a4057615a4061556f565b500190565b600060ff831680615a5857615a58615611565b8060ff84160691505092915050565b600060ff821660ff841680821015615a8157615a8161556f565b9003939250505056fea164736f6c634300080f000a", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_proofMaturityDelaySeconds\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_disputeGameFinalityDelaySeconds\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_initialRespectedGameType\",\"type\":\"uint32\",\"internalType\":\"GameType\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"GUARDIAN\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"SYSTEM_CONFIG\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractSystemConfig\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"blacklistDisputeGame\",\"inputs\":[{\"name\":\"_disputeGame\",\"type\":\"address\",\"internalType\":\"contractIDisputeGame\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"checkWithdrawal\",\"inputs\":[{\"name\":\"_withdrawalHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deleteProvenWithdrawal\",\"inputs\":[{\"name\":\"_withdrawalHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"depositTransaction\",\"inputs\":[{\"name\":\"_to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_gasLimit\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_isCreation\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"_data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"disputeGameBlacklist\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDisputeGame\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"disputeGameFactory\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractDisputeGameFactory\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"disputeGameFinalityDelaySeconds\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"donateETH\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"finalizeWithdrawalTransaction\",\"inputs\":[{\"name\":\"_tx\",\"type\":\"tuple\",\"internalType\":\"structTypes.WithdrawalTransaction\",\"components\":[{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"finalizedWithdrawals\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"guardian\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_disputeGameFactory\",\"type\":\"address\",\"internalType\":\"contractDisputeGameFactory\"},{\"name\":\"_systemConfig\",\"type\":\"address\",\"internalType\":\"contractSystemConfig\"},{\"name\":\"_superchainConfig\",\"type\":\"address\",\"internalType\":\"contractSuperchainConfig\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"l2Sender\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"minimumGasLimit\",\"inputs\":[{\"name\":\"_byteCount\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"params\",\"inputs\":[],\"outputs\":[{\"name\":\"prevBaseFee\",\"type\":\"uint128\",\"internalType\":\"uint128\"},{\"name\":\"prevBoughtGas\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"prevBlockNum\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proofMaturityDelaySeconds\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proveWithdrawalTransaction\",\"inputs\":[{\"name\":\"_tx\",\"type\":\"tuple\",\"internalType\":\"structTypes.WithdrawalTransaction\",\"components\":[{\"name\":\"nonce\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"gasLimit\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"_disputeGameIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_outputRootProof\",\"type\":\"tuple\",\"internalType\":\"structTypes.OutputRootProof\",\"components\":[{\"name\":\"version\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stateRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"messagePasserStorageRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"latestBlockhash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_withdrawalProof\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"provenWithdrawals\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"disputeGameProxy\",\"type\":\"address\",\"internalType\":\"contractIDisputeGame\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"respectedGameType\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"GameType\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setRespectedGameType\",\"inputs\":[{\"name\":\"_gameType\",\"type\":\"uint32\",\"internalType\":\"GameType\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"superchainConfig\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractSuperchainConfig\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"systemConfig\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractSystemConfig\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"version\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransactionDeposited\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"version\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"opaqueData\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawalFinalized\",\"inputs\":[{\"name\":\"withdrawalHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"success\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"WithdrawalProven\",\"inputs\":[{\"name\":\"withdrawalHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false}]", + Bin: "0x60c06040523480156200001157600080fd5b5060405162005e7b38038062005e7b8339810160408190526200003491620002d3565b608083905260a0829052603b805463ffffffff191663ffffffff831617905562000061600080806200006a565b50505062000317565b600054610100900460ff16158080156200008b5750600054600160ff909116105b80620000bb5750620000a8306200020560201b620022f31760201c565b158015620000bb575060005460ff166001145b620001245760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000148576000805461ff0019166101001790555b603880546001600160a01b03199081166001600160a01b03878116919091179092556037805490911685831617905560358054610100600160a81b0319166101008584160217905560325416620001ae57603280546001600160a01b03191661dead1790555b620001b862000214565b8015620001ff576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6001600160a01b03163b151590565b600054610100900460ff16620002815760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016200011b565b600154600160c01b90046001600160401b0316600003620002d15760408051606081018252633b9aca0080825260006020830152436001600160401b031691909201819052600160c01b02176001555b565b600080600060608486031215620002e957600080fd5b8351925060208401519150604084015163ffffffff811681146200030c57600080fd5b809150509250925092565b60805160a051615b306200034b6000396000818161043001526119ca01526000818161050301526117090152615b306000f3fe6080604052600436106101a55760003560e01c80638b4c40b0116100e1578063bf653a5c1161008a578063e965084c11610064578063e965084c146105e8578063e9e05c4214610684578063f049875014610697578063f2b4e617146106c257600080fd5b8063bf653a5c146104f4578063c0c53b8b14610527578063cff0ab961461054757600080fd5b80639bf62d82116100bb5780639bf62d821461045e578063a14238e71461048b578063a35d99df146104bb57600080fd5b80638b4c40b0146101ca5780638c3152e914610401578063952b27971461042157600080fd5b80634870496f1161014e578063724c184c11610128578063724c184c1461038c5780637af1906d146103a15780637d6be8dc146103c15780637fc48504146103e157600080fd5b80634870496f1461030157806354fd4d50146103215780635c975abb1461037757600080fd5b80633c9f397c1161017f5780633c9f397c1461027a578063452a9320146102ac57806345884d32146102c157600080fd5b806303869d7c146101d157806333d7e2bd146101f157806335e80ab31461024857600080fd5b366101cc576101ca3334620186a06000604051806020016040528060008152506106ef565b005b600080fd5b3480156101dd57600080fd5b506101ca6101ec366004614ea8565b61098a565b3480156101fd57600080fd5b5060375461021e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561025457600080fd5b5060355461021e90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b34801561028657600080fd5b50603b546102979063ffffffff1681565b60405163ffffffff909116815260200161023f565b3480156102b857600080fd5b5061021e610a82565b3480156102cd57600080fd5b506102f16102dc366004614ee6565b603a6020526000908152604090205460ff1681565b604051901515815260200161023f565b34801561030d57600080fd5b506101ca61031c3660046150be565b610b1a565b34801561032d57600080fd5b5061036a6040518060400160405280600581526020017f332e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161023f9190615210565b34801561038357600080fd5b506102f161138b565b34801561039857600080fd5b5061021e61141e565b3480156103ad57600080fd5b506101ca6103bc366004614ea8565b611428565b3480156103cd57600080fd5b506101ca6103dc366004614ee6565b611b7c565b3480156103ed57600080fd5b506101ca6103fc366004615235565b611c8d565b34801561040d57600080fd5b506101ca61041c366004615252565b611dae565b34801561042d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405190815260200161023f565b34801561046a57600080fd5b5060325461021e9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561049757600080fd5b506102f16104a6366004614ea8565b60336020526000908152604090205460ff1681565b3480156104c757600080fd5b506104db6104d63660046152a5565b612086565b60405167ffffffffffffffff909116815260200161023f565b34801561050057600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610450565b34801561053357600080fd5b506101ca6105423660046152c2565b6120a5565b34801561055357600080fd5b506001546105af906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff928316602085015291169082015260600161023f565b3480156105f457600080fd5b5061064f610603366004614ea8565b60396020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff81169074010000000000000000000000000000000000000000900467ffffffffffffffff1682565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835267ffffffffffffffff90911660208301520161023f565b6101ca61069236600461531b565b6106ef565b3480156106a357600080fd5b5060375473ffffffffffffffffffffffffffffffffffffffff1661021e565b3480156106ce57600080fd5b5060385461021e9073ffffffffffffffffffffffffffffffffffffffff1681565b8260005a905083156107a65773ffffffffffffffffffffffffffffffffffffffff8716156107a657604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f4f7074696d69736d506f7274616c3a206d7573742073656e6420746f2061646460448201527f72657373283029207768656e206372656174696e67206120636f6e747261637460648201526084015b60405180910390fd5b6107b08351612086565b67ffffffffffffffff168567ffffffffffffffff161015610853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f4f7074696d69736d506f7274616c3a20676173206c696d697420746f6f20736d60448201527f616c6c0000000000000000000000000000000000000000000000000000000000606482015260840161079d565b6201d4c0835111156108c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4f7074696d69736d506f7274616c3a206461746120746f6f206c617267650000604482015260640161079d565b333281146108e2575033731111000000000000000000000000000000001111015b600034888888886040516020016108fd95949392919061539a565b604051602081830303815290604052905060008973ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c328460405161096d9190615210565b60405180910390a45050610981828261230f565b50505050505050565b610992610a82565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a206f6e6c7920746865206775617264696160448201527f6e2063616e2064656c6574652070726f76656e207769746864726177616c7300606482015260840161079d565b600090815260396020526040902080547fffffffff00000000000000000000000000000000000000000000000000000000169055565b6000603560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663452a93206040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1591906153ff565b905090565b610b2261138b565b15610b89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f7074696d69736d506f7274616c3a2070617573656400000000000000000000604482015260640161079d565b3073ffffffffffffffffffffffffffffffffffffffff16856040015173ffffffffffffffffffffffffffffffffffffffff1603610c48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a20796f752063616e6e6f742073656e642060448201527f6d6573736167657320746f2074686520706f7274616c20636f6e747261637400606482015260840161079d565b6038546040517fbb8aa1fc00000000000000000000000000000000000000000000000000000000815260048101869052600091829173ffffffffffffffffffffffffffffffffffffffff9091169063bb8aa1fc90602401606060405180830381865afa158015610cbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce0919061541c565b925050915060008173ffffffffffffffffffffffffffffffffffffffff1663bcef3b556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d56919061545e565b603b5490915060ff848116911614610df0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f7074696d69736d506f7274616c3a20696e76616c69642067616d652074797060448201527f6500000000000000000000000000000000000000000000000000000000000000606482015260840161079d565b610e07610e0236889003880188615477565b61263c565b8114610e95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f7074696d69736d506f7274616c3a20696e76616c6964206f7574707574207260448201527f6f6f742070726f6f660000000000000000000000000000000000000000000000606482015260840161079d565b6000610ea089612698565b60008181526039602090815260409182902082518084019093525473ffffffffffffffffffffffffffffffffffffffff81168084527401000000000000000000000000000000000000000090910467ffffffffffffffff169183018290529293509091901580610f8f575060018573ffffffffffffffffffffffffffffffffffffffff1663200d2ed26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7c919061550c565b6002811115610f8d57610f8d6154dd565b145b80610fbf575073ffffffffffffffffffffffffffffffffffffffff85166000908152603a602052604090205460ff165b806110525750603b5463ffffffff1660ff1661104c8273ffffffffffffffffffffffffffffffffffffffff1663bbdc02db6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561101f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611043919061552d565b63ffffffff1690565b60ff1614155b611104576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173682060448201527f68617320616c7265616479206265656e2070726f76656e2c20616e642064697360648201527f707574652067616d65206973206e6f7420696e76616c69640000000000000000608482015260a40161079d565b60408051602081018590526000918101829052606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830181905292506111cd9101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152600182527f01000000000000000000000000000000000000000000000000000000000000006020830152906111c38b8d61554a565b8d604001356126c8565b611259576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a20696e76616c696420776974686472617760448201527f616c20696e636c7573696f6e2070726f6f660000000000000000000000000000606482015260840161079d565b60405180604001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506039600086815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050508b6040015173ffffffffffffffffffffffffffffffffffffffff168c6020015173ffffffffffffffffffffffffffffffffffffffff16857f67a6208cfcc0801d50f6cbe764733f4fddf66ac0b04442061a8a8c0cb6b63f6260405160405180910390a4505050505050505050505050565b6000603560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1591906155ce565b6000610b15610a82565b600081815260396020908152604080832081518083018352905473ffffffffffffffffffffffffffffffffffffffff81168083527401000000000000000000000000000000000000000090910467ffffffffffffffff1682850152808552603a90935292205460ff161561151e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4f7074696d69736d506f7274616c3a20646973707574652067616d652068617360448201527f206265656e20626c61636b6c6973746564000000000000000000000000000000606482015260840161079d565b816020015167ffffffffffffffff166000036115bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206e60448201527f6f74206265656e2070726f76656e207965740000000000000000000000000000606482015260840161079d565b61163b8173ffffffffffffffffffffffffffffffffffffffff1663cf09e0d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561160a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162e91906155eb565b67ffffffffffffffff1690565b67ffffffffffffffff16826020015167ffffffffffffffff1611611707576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604e60248201527f4f7074696d69736d506f7274616c3a207769746864726177616c2074696d657360448201527f74616d70206c657373207468616e20646973707574652067616d65206372656160648201527f74696f6e2074696d657374616d70000000000000000000000000000000000000608482015260a40161079d565b7f0000000000000000000000000000000000000000000000000000000000000000826020015167ffffffffffffffff16426117429190615637565b116117cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4f7074696d69736d506f7274616c3a2070726f76656e2077697468647261776160448201527f6c20686173206e6f74206d617475726564207965740000000000000000000000606482015260840161079d565b60028173ffffffffffffffffffffffffffffffffffffffff1663200d2ed26040518163ffffffff1660e01b8152600401602060405180830381865afa15801561181c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611840919061550c565b6002811115611851576118516154dd565b146118de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4f7074696d69736d506f7274616c3a206f75747075742070726f706f73616c2060448201527f686173206e6f74206265656e2066696e616c697a656420796574000000000000606482015260840161079d565b603b5463ffffffff1660ff166119388273ffffffffffffffffffffffffffffffffffffffff1663bbdc02db6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561101f573d6000803e3d6000fd5b60ff16146119c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f7074696d69736d506f7274616c3a20696e76616c69642067616d652074797060448201527f6500000000000000000000000000000000000000000000000000000000000000606482015260840161079d565b7f0000000000000000000000000000000000000000000000000000000000000000611a378273ffffffffffffffffffffffffffffffffffffffff166319effeb46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561160a573d6000803e3d6000fd5b611a4b9067ffffffffffffffff1642615637565b11611ad8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4f7074696d69736d506f7274616c3a206f75747075742070726f706f73616c2060448201527f696e206169722d67617000000000000000000000000000000000000000000000606482015260840161079d565b60008381526033602052604090205460ff1615611b77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206160448201527f6c7265616479206265656e2066696e616c697a65640000000000000000000000606482015260840161079d565b505050565b611b84610a82565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4f7074696d69736d506f7274616c3a206f6e6c7920746865206775617264696160448201527f6e2063616e20626c61636b6c69737420646973707574652067616d6573000000606482015260840161079d565b73ffffffffffffffffffffffffffffffffffffffff166000908152603a6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b611c95610a82565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f4f7074696d69736d506f7274616c3a206f6e6c7920746865206775617264696160448201527f6e2063616e2073657420746865207265737065637465642067616d652074797060648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a40161079d565b603b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff92909216919091179055565b565b611db661138b565b15611e1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f7074696d69736d506f7274616c3a2070617573656400000000000000000000604482015260640161079d565b60325473ffffffffffffffffffffffffffffffffffffffff1661dead14611ec6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a2063616e206f6e6c79207472696767657260448201527f206f6e65207769746864726177616c20706572207472616e73616374696f6e00606482015260840161079d565b6000611ed182612698565b9050611edc81611428565b600081815260336020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055908401516032805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff00000000000000000000000000000000000000009092169190911790558301516080840151606085015160a0860151611f7e939291906126ec565b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905560405190915082907fdb5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1b90611fe390841515815260200190565b60405180910390a280158015611ff95750326001145b15611b77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f7074696d69736d506f7274616c3a207769746864726177616c206661696c6560448201527f6400000000000000000000000000000000000000000000000000000000000000606482015260840161079d565b600061209382601061564e565b61209f9061520861567e565b92915050565b600054610100900460ff16158080156120c55750600054600160ff909116105b806120df5750303b1580156120df575060005460ff166001145b61216b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161079d565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156121c957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b603880547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8781169190911790925560378054909116858316179055603580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff16610100858416021790556032541661228257603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead1790555b61228a61274a565b80156122ed57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b600154600090612345907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1643615637565b9050600061235161285d565b90506000816020015160ff16826000015163ffffffff1661237291906156d9565b905082156124a9576001546000906123a9908390700100000000000000000000000000000000900467ffffffffffffffff16615741565b90506000836040015160ff16836123c091906157b5565b6001546123e09084906fffffffffffffffffffffffffffffffff166157b5565b6123ea91906156d9565b60015490915060009061243b906124149084906fffffffffffffffffffffffffffffffff16615871565b866060015163ffffffff168760a001516fffffffffffffffffffffffffffffffff1661291e565b9050600186111561246a5761246761241482876040015160ff1660018a6124629190615637565b61293d565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b600180548691906010906124dc908490700100000000000000000000000000000000900467ffffffffffffffff1661567e565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550816000015163ffffffff16600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1613156125bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5265736f757263654d65746572696e673a2063616e6e6f7420627579206d6f7260448201527f6520676173207468616e20617661696c61626c6520676173206c696d69740000606482015260840161079d565b6001546000906125eb906fffffffffffffffffffffffffffffffff1667ffffffffffffffff88166158e5565b905060006125fd48633b9aca00612992565b6126079083615922565b905060005a6126169088615637565b9050808211156126325761263261262d8284615637565b6129a9565b5050505050505050565b6000816000015182602001518360400151846060015160405160200161267b949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b80516020808301516040808501516060860151608087015160a0880151935160009761267b979096959101615936565b6000806126d4866129d2565b90506126e281868686612a04565b9695505050505050565b60008060006126fc866000612a34565b905080612732576308c379a06000526020805278185361666543616c6c3a204e6f7420656e6f756768206761736058526064601cfd5b600080855160208701888b5af1979650505050505050565b600054610100900460ff166127e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161079d565b6001547801000000000000000000000000000000000000000000000000900467ffffffffffffffff16600003611dac5760408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b6040805160c08082018352600080835260208301819052828401819052606083018190526080830181905260a083015260375483517fcc731b020000000000000000000000000000000000000000000000000000000081529351929373ffffffffffffffffffffffffffffffffffffffff9091169263cc731b02926004808401939192918290030181865afa1580156128fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1591906159a3565b600061293361292d8585612a52565b83612a62565b90505b9392505050565b6000670de0b6b3a764000061297e61295585836156d9565b61296790670de0b6b3a7640000615741565b61297985670de0b6b3a76400006157b5565b612a71565b61298890866157b5565b61293391906156d9565b6000818310156129a25781612936565b5090919050565b6000805a90505b825a6129bc9083615637565b1015611b77576129cb82615a5f565b91506129b0565b606081805190602001206040516020016129ee91815260200190565b6040516020818303038152906040529050919050565b6000612a2b84612a15878686612aa2565b8051602091820120825192909101919091201490565b95945050505050565b600080603f83619c4001026040850201603f5a021015949350505050565b6000818312156129a25781612936565b60008183126129a25781612936565b6000612936670de0b6b3a764000083612a8986613520565b612a9391906157b5565b612a9d91906156d9565b613764565b60606000845111612b0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d65726b6c65547269653a20656d707479206b65790000000000000000000000604482015260640161079d565b6000612b1a846139a3565b90506000612b2786613a8f565b9050600084604051602001612b3e91815260200190565b60405160208183030381529060405290506000805b8451811015613497576000858281518110612b7057612b70615a97565b602002602001015190508451831115612c0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201527f74616c206b6579206c656e677468000000000000000000000000000000000000606482015260840161079d565b82600003612cc45780518051602091820120604051612c5992612c3392910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b612cbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f742068617368000000604482015260640161079d565b612e1b565b805151602011612d7a5780518051602091820120604051612cee92612c3392910190815260200190565b612cbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e60448201527f616c206861736800000000000000000000000000000000000000000000000000606482015260840161079d565b805184516020808701919091208251919092012014612e1b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f6460448201527f6520686173680000000000000000000000000000000000000000000000000000606482015260840161079d565b612e2760106001615ac6565b816020015151036130035784518303612f9b57612e618160200151601081518110612e5457612e54615a97565b6020026020010151613af2565b96506000875111612ef4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e6368290000000000606482015260840161079d565b60018651612f029190615637565b8214612f90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e636829000000000000606482015260840161079d565b505050505050612936565b6000858481518110612faf57612faf615a97565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110612fda57612fda615a97565b60200260200101519050612fed81613c52565b9550612ffa600186615ac6565b94505050613484565b6002816020015151036133fc57600061301b82613c77565b905060008160008151811061303257613032615a97565b016020015160f81c90506000613049600283615ade565b613054906002615b00565b90506000613065848360ff16613c9b565b905060006130738a89613c9b565b905060006130818383613cd1565b905080835114613113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b6579000000000000606482015260840161079d565b60ff851660021480613128575060ff85166003145b1561331757808251146131bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e646572000000606482015260840161079d565b6131d78760200151600181518110612e5457612e54615a97565b9c5060008d511161326a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c6561662900000000000000606482015260840161079d565b60018c516132789190615637565b8814613306576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c656166290000000000000000606482015260840161079d565b505050505050505050505050612936565b60ff8516158061332a575060ff85166001145b1561336957613356876020015160018151811061334957613349615a97565b6020026020010151613c52565b9950613362818a615ac6565b98506133f1565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f6465207769746860448201527f20616e20756e6b6e6f776e207072656669780000000000000000000000000000606482015260840161079d565b505050505050613484565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e70617273656160448201527f626c65206e6f6465000000000000000000000000000000000000000000000000606482015260840161079d565b508061348f81615a5f565b915050612b53565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c6560448201527f6d656e7473000000000000000000000000000000000000000000000000000000606482015260840161079d565b600080821361358b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e45440000000000000000000000000000000000000000000000604482015260640161079d565b6000606061359884613d85565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c1821361379557506000919050565b680755bf798b4a1bf1e58212613807576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4558505f4f564552464c4f570000000000000000000000000000000000000000604482015260640161079d565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b80516060908067ffffffffffffffff8111156139c1576139c1614f03565b604051908082528060200260200182016040528015613a0657816020015b60408051808201909152606080825260208201528152602001906001900390816139df5790505b50915060005b81811015613a88576040518060400160405280858381518110613a3157613a31615a97565b60200260200101518152602001613a60868481518110613a5357613a53615a97565b6020026020010151613e5b565b815250838281518110613a7557613a75615a97565b6020908102919091010152600101613a0c565b5050919050565b606080604051905082518060011b603f8101601f1916830160405280835250602084016020830160005b83811015613ae7578060011b82018184015160001a8060041c8253600f811660018301535050600101613ab9565b509295945050505050565b60606000806000613b0285613e6e565b919450925090506000816001811115613b1d57613b1d6154dd565b14613baa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d00000000000000606482015260840161079d565b613bb48284615ac6565b855114613c43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527f616e20696e76616c69642072656d61696e646572000000000000000000000000606482015260840161079d565b612a2b856020015184846148db565b60606020826000015110613c6e57613c6982613af2565b61209f565b61209f8261496f565b606061209f613c968360200151600081518110612e5457612e54615a97565b613a8f565b606082518210613cba575060408051602081019091526000815261209f565b6129368383848651613ccc9190615637565b614985565b6000808251845110613ce4578251613ce7565b83515b90505b8082108015613d6e5750828281518110613d0657613d06615a97565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916848381518110613d4557613d45615a97565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b15613d7e57816001019150613cea565b5092915050565b6000808211613df0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e45440000000000000000000000000000000000000000000000604482015260640161079d565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b606061209f613e6983614b5d565b614c46565b600080600080846000015111613f2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a40161079d565b6020840151805160001a607f8111613f515760006001600094509450945050506148d4565b60b7811161415f576000613f66608083615637565b905080876000015111614021576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604e60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201527f2873686f727420737472696e6729000000000000000000000000000000000000608482015260a40161079d565b6001838101517fff0000000000000000000000000000000000000000000000000000000000000016908214158061409a57507f80000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610155b61414c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201527f73686f727420737472696e672900000000000000000000000000000000000000608482015260a40161079d565b50600195509350600092506148d4915050565b60bf81116144ad57600061417460b783615637565b90508087600001511161422f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605160248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527f67746820286c6f6e6720737472696e6729000000000000000000000000000000608482015260a40161079d565b60018301517fff0000000000000000000000000000000000000000000000000000000000000016600081900361430d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e6720737472696e672900000000000000000000000000000000000000000000608482015260a40161079d565b600184015160088302610100031c603781116143d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f20737472696e6729000000000000000000000000000000000000000000000000608482015260a40161079d565b6143db8184615ac6565b895111614490576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604c60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e6720737472696e67290000000000000000000000000000000000000000608482015260a40161079d565b61449b836001615ac6565b97509550600094506148d49350505050565b60f7811161458e5760006144c260c083615637565b90508087600001511161457d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e206c697374206c656e67746820287360648201527f686f7274206c6973742900000000000000000000000000000000000000000000608482015260a40161079d565b6001955093508492506148d4915050565b600061459b60f783615637565b905080876000015111614656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201527f6820286c6f6e67206c6973742900000000000000000000000000000000000000608482015260a40161079d565b60018301517fff00000000000000000000000000000000000000000000000000000000000000166000819003614734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e67206c69737429000000000000000000000000000000000000000000000000608482015260a40161079d565b600184015160088302610100031c603781116147f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604660248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f206c697374290000000000000000000000000000000000000000000000000000608482015260a40161079d565b6148028184615ac6565b8951116148b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e67206c6973742900000000000000000000000000000000000000000000608482015260a40161079d565b6148c2836001615ac6565b97509550600194506148d49350505050565b9193909250565b60608167ffffffffffffffff8111156148f6576148f6614f03565b6040519080825280601f01601f191660200182016040528015614920576020820181803683370190505b50905081156129365760006149358486615ac6565b90506020820160005b8481101561495657828101518282015260200161493e565b84811115614965576000858301525b5050509392505050565b606061209f8260200151600084600001516148db565b60608182601f0110156149f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161079d565b828284011015614a60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161079d565b81830184511015614acd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015260640161079d565b606082158015614aec5760405191506000825260208201604052614b54565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015614b25578051835260209283019201614b0d565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b60408051808201909152600080825260208201526000825111614c28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a40161079d565b50604080518082019091528151815260209182019181019190915290565b60606000806000614c5685613e6e565b919450925090506001816001811115614c7157614c716154dd565b14614cfe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d0000000000000000606482015260840161079d565b8451614d0a8385615ac6565b14614d97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e766160448201527f6c696420646174612072656d61696e6465720000000000000000000000000000606482015260840161079d565b604080516020808252610420820190925290816020015b6040805180820190915260008082526020820152815260200190600190039081614dae5790505093506000835b8651811015614e9c57600080614e216040518060400160405280858c60000151614e059190615637565b8152602001858c60200151614e1a9190615ac6565b9052613e6e565b509150915060405180604001604052808383614e3d9190615ac6565b8152602001848b60200151614e529190615ac6565b815250888581518110614e6757614e67615a97565b6020908102919091010152614e7d600185615ac6565b9350614e898183615ac6565b614e939084615ac6565b92505050614ddb565b50845250919392505050565b600060208284031215614eba57600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114614ee357600080fd5b50565b600060208284031215614ef857600080fd5b813561293681614ec1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614f7957614f79614f03565b604052919050565b600082601f830112614f9257600080fd5b813567ffffffffffffffff811115614fac57614fac614f03565b614fdd60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601614f32565b818152846020838601011115614ff257600080fd5b816020850160208301376000918101602001919091529392505050565b600060c0828403121561502157600080fd5b60405160c0810167ffffffffffffffff828210818311171561504557615045614f03565b81604052829350843583526020850135915061506082614ec1565b8160208401526040850135915061507682614ec1565b816040840152606085013560608401526080850135608084015260a08501359150808211156150a457600080fd5b506150b185828601614f81565b60a0830152505092915050565b600080600080600085870360e08112156150d757600080fd5b863567ffffffffffffffff808211156150ef57600080fd5b6150fb8a838b0161500f565b97506020890135965060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08401121561513457600080fd5b60408901955060c089013592508083111561514e57600080fd5b828901925089601f84011261516257600080fd5b823591508082111561517357600080fd5b508860208260051b840101111561518957600080fd5b959894975092955050506020019190565b60005b838110156151b557818101518382015260200161519d565b838111156122ed5750506000910152565b600081518084526151de81602086016020860161519a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061293660208301846151c6565b63ffffffff81168114614ee357600080fd5b60006020828403121561524757600080fd5b813561293681615223565b60006020828403121561526457600080fd5b813567ffffffffffffffff81111561527b57600080fd5b6152878482850161500f565b949350505050565b67ffffffffffffffff81168114614ee357600080fd5b6000602082840312156152b757600080fd5b81356129368161528f565b6000806000606084860312156152d757600080fd5b83356152e281614ec1565b925060208401356152f281614ec1565b9150604084013561530281614ec1565b809150509250925092565b8015158114614ee357600080fd5b600080600080600060a0868803121561533357600080fd5b853561533e81614ec1565b94506020860135935060408601356153558161528f565b925060608601356153658161530d565b9150608086013567ffffffffffffffff81111561538157600080fd5b61538d88828901614f81565b9150509295509295909350565b8581528460208201527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b16604082015282151560f81b6048820152600082516153ee81604985016020870161519a565b919091016049019695505050505050565b60006020828403121561541157600080fd5b815161293681614ec1565b60008060006060848603121561543157600080fd5b835161543c81615223565b602085015190935061544d8161528f565b604085015190925061530281614ec1565b60006020828403121561547057600080fd5b5051919050565b60006080828403121561548957600080fd5b6040516080810181811067ffffffffffffffff821117156154ac576154ac614f03565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60006020828403121561551e57600080fd5b81516003811061293657600080fd5b60006020828403121561553f57600080fd5b815161293681615223565b600067ffffffffffffffff8084111561556557615565614f03565b8360051b6020615576818301614f32565b86815291850191818101903684111561558e57600080fd5b865b848110156155c2578035868111156155a85760008081fd5b6155b436828b01614f81565b845250918301918301615590565b50979650505050505050565b6000602082840312156155e057600080fd5b81516129368161530d565b6000602082840312156155fd57600080fd5b81516129368161528f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561564957615649615608565b500390565b600067ffffffffffffffff8083168185168183048111821515161561567557615675615608565b02949350505050565b600067ffffffffffffffff8083168185168083038211156156a1576156a1615608565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826156e8576156e86156aa565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f80000000000000000000000000000000000000000000000000000000000000008314161561573c5761573c615608565b500590565b6000808312837f80000000000000000000000000000000000000000000000000000000000000000183128115161561577b5761577b615608565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0183138116156157af576157af615608565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000841360008413858304851182821616156157f6576157f6615608565b7f8000000000000000000000000000000000000000000000000000000000000000600087128682058812818416161561583157615831615608565b6000871292508782058712848416161561584d5761584d615608565b8785058712818416161561586357615863615608565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038413811516156158ab576158ab615608565b827f80000000000000000000000000000000000000000000000000000000000000000384128116156158df576158df615608565b50500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561591d5761591d615608565b500290565b600082615931576159316156aa565b500490565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a083015261598160c08301846151c6565b98975050505050505050565b805160ff8116811461599e57600080fd5b919050565b600060c082840312156159b557600080fd5b60405160c0810181811067ffffffffffffffff821117156159d8576159d8614f03565b60405282516159e681615223565b81526159f46020840161598d565b6020820152615a056040840161598d565b60408201526060830151615a1881615223565b60608201526080830151615a2b81615223565b608082015260a08301516fffffffffffffffffffffffffffffffff81168114615a5357600080fd5b60a08201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615a9057615a90615608565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008219821115615ad957615ad9615608565b500190565b600060ff831680615af157615af16156aa565b8060ff84160691505092915050565b600060ff821660ff841680821015615b1a57615b1a615608565b9003939250505056fea164736f6c634300080f000a", } // OptimismPortal2ABI is the input ABI used to generate the binding from. @@ -715,37 +715,6 @@ func (_OptimismPortal2 *OptimismPortal2CallerSession) RespectedGameType() (uint3 return _OptimismPortal2.Contract.RespectedGameType(&_OptimismPortal2.CallOpts) } -// Sauron is a free data retrieval call binding the contract method 0xa27778e5. -// -// Solidity: function sauron() pure returns(address) -func (_OptimismPortal2 *OptimismPortal2Caller) Sauron(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _OptimismPortal2.contract.Call(opts, &out, "sauron") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// Sauron is a free data retrieval call binding the contract method 0xa27778e5. -// -// Solidity: function sauron() pure returns(address) -func (_OptimismPortal2 *OptimismPortal2Session) Sauron() (common.Address, error) { - return _OptimismPortal2.Contract.Sauron(&_OptimismPortal2.CallOpts) -} - -// Sauron is a free data retrieval call binding the contract method 0xa27778e5. -// -// Solidity: function sauron() pure returns(address) -func (_OptimismPortal2 *OptimismPortal2CallerSession) Sauron() (common.Address, error) { - return _OptimismPortal2.Contract.Sauron(&_OptimismPortal2.CallOpts) -} - // SuperchainConfig is a free data retrieval call binding the contract method 0x35e80ab3. // // Solidity: function superchainConfig() view returns(address) diff --git a/op-bindings/bindingspreview/optimismportal2_more.go b/op-bindings/bindingspreview/optimismportal2_more.go index 09b4c914dd76..133f0a928755 100644 --- a/op-bindings/bindingspreview/optimismportal2_more.go +++ b/op-bindings/bindingspreview/optimismportal2_more.go @@ -13,7 +13,7 @@ const OptimismPortal2StorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contra var OptimismPortal2StorageLayout = new(solc.StorageLayout) -var OptimismPortal2DeployedBin = "0x6080604052600436106101b05760003560e01c80638b4c40b0116100ec578063bf653a5c1161008a578063e965084c11610064578063e965084c14610608578063e9e05c42146106a4578063f0498750146106b7578063f2b4e617146106e257600080fd5b8063bf653a5c14610514578063c0c53b8b14610547578063cff0ab961461056757600080fd5b80639bf62d82116100c65780639bf62d8214610469578063a14238e714610496578063a27778e5146104c6578063a35d99df146104db57600080fd5b80638b4c40b0146101d55780638c3152e91461040c578063952b27971461042c57600080fd5b80634870496f11610159578063724c184c11610133578063724c184c146103975780637af1906d146103ac5780637d6be8dc146103cc5780637fc48504146103ec57600080fd5b80634870496f1461030c57806354fd4d501461032c5780635c975abb1461038257600080fd5b80633c9f397c1161018a5780633c9f397c14610285578063452a9320146102b757806345884d32146102cc57600080fd5b806303869d7c146101dc57806333d7e2bd146101fc57806335e80ab31461025357600080fd5b366101d7576101d53334620186a060006040518060200160405280600081525061070f565b005b600080fd5b3480156101e857600080fd5b506101d56101f7366004614e0f565b6109aa565b34801561020857600080fd5b506037546102299073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561025f57600080fd5b5060355461022990610100900473ffffffffffffffffffffffffffffffffffffffff1681565b34801561029157600080fd5b50603b546102a29063ffffffff1681565b60405163ffffffff909116815260200161024a565b3480156102c357600080fd5b50610229610a71565b3480156102d857600080fd5b506102fc6102e7366004614e4d565b603a6020526000908152604090205460ff1681565b604051901515815260200161024a565b34801561031857600080fd5b506101d5610327366004615025565b610b09565b34801561033857600080fd5b506103756040518060400160405280600581526020017f332e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161024a9190615177565b34801561038e57600080fd5b506102fc61137a565b3480156103a357600080fd5b5061022961140d565b3480156103b857600080fd5b506101d56103c7366004614e0f565b611417565b3480156103d857600080fd5b506101d56103e7366004614e4d565b611b6b565b3480156103f857600080fd5b506101d561040736600461519c565b611c4b565b34801561041857600080fd5b506101d56104273660046151b9565b611d15565b34801561043857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405190815260200161024a565b34801561047557600080fd5b506032546102299073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104a257600080fd5b506102fc6104b1366004614e0f565b60336020526000908152604090205460ff1681565b3480156104d257600080fd5b5061dead610229565b3480156104e757600080fd5b506104fb6104f636600461520c565b611fed565b60405167ffffffffffffffff909116815260200161024a565b34801561052057600080fd5b507f000000000000000000000000000000000000000000000000000000000000000061045b565b34801561055357600080fd5b506101d5610562366004615229565b61200c565b34801561057357600080fd5b506001546105cf906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff928316602085015291169082015260600161024a565b34801561061457600080fd5b5061066f610623366004614e0f565b60396020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff81169074010000000000000000000000000000000000000000900467ffffffffffffffff1682565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835267ffffffffffffffff90911660208301520161024a565b6101d56106b2366004615282565b61070f565b3480156106c357600080fd5b5060375473ffffffffffffffffffffffffffffffffffffffff16610229565b3480156106ee57600080fd5b506038546102299073ffffffffffffffffffffffffffffffffffffffff1681565b8260005a905083156107c65773ffffffffffffffffffffffffffffffffffffffff8716156107c657604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f4f7074696d69736d506f7274616c3a206d7573742073656e6420746f2061646460448201527f72657373283029207768656e206372656174696e67206120636f6e747261637460648201526084015b60405180910390fd5b6107d08351611fed565b67ffffffffffffffff168567ffffffffffffffff161015610873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f4f7074696d69736d506f7274616c3a20676173206c696d697420746f6f20736d60448201527f616c6c000000000000000000000000000000000000000000000000000000000060648201526084016107bd565b6201d4c0835111156108e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4f7074696d69736d506f7274616c3a206461746120746f6f206c61726765000060448201526064016107bd565b33328114610902575033731111000000000000000000000000000000001111015b6000348888888860405160200161091d959493929190615301565b604051602081830303815290604052905060008973ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c328460405161098d9190615177565b60405180910390a450506109a18282612276565b50505050505050565b3361dead14610a3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f4f7074696d69736d506f7274616c3a206f6e6c7920736175726f6e2063616e2060448201527f64656c6574652070726f76656e207769746864726177616c730000000000000060648201526084016107bd565b600090815260396020526040902080547fffffffff00000000000000000000000000000000000000000000000000000000169055565b6000603560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663452a93206040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b049190615366565b905090565b610b1161137a565b15610b78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f7074696d69736d506f7274616c3a207061757365640000000000000000000060448201526064016107bd565b3073ffffffffffffffffffffffffffffffffffffffff16856040015173ffffffffffffffffffffffffffffffffffffffff1603610c37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a20796f752063616e6e6f742073656e642060448201527f6d6573736167657320746f2074686520706f7274616c20636f6e74726163740060648201526084016107bd565b6038546040517fbb8aa1fc00000000000000000000000000000000000000000000000000000000815260048101869052600091829173ffffffffffffffffffffffffffffffffffffffff9091169063bb8aa1fc90602401606060405180830381865afa158015610cab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccf9190615383565b925050915060008173ffffffffffffffffffffffffffffffffffffffff1663bcef3b556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4591906153c5565b603b5490915060ff848116911614610ddf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f7074696d69736d506f7274616c3a20696e76616c69642067616d652074797060448201527f650000000000000000000000000000000000000000000000000000000000000060648201526084016107bd565b610df6610df1368890038801886153de565b6125a3565b8114610e84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f7074696d69736d506f7274616c3a20696e76616c6964206f7574707574207260448201527f6f6f742070726f6f66000000000000000000000000000000000000000000000060648201526084016107bd565b6000610e8f896125ff565b60008181526039602090815260409182902082518084019093525473ffffffffffffffffffffffffffffffffffffffff81168084527401000000000000000000000000000000000000000090910467ffffffffffffffff169183018290529293509091901580610f7e575060018573ffffffffffffffffffffffffffffffffffffffff1663200d2ed26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6b9190615473565b6002811115610f7c57610f7c615444565b145b80610fae575073ffffffffffffffffffffffffffffffffffffffff85166000908152603a602052604090205460ff165b806110415750603b5463ffffffff1660ff1661103b8273ffffffffffffffffffffffffffffffffffffffff1663bbdc02db6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561100e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110329190615494565b63ffffffff1690565b60ff1614155b6110f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173682060448201527f68617320616c7265616479206265656e2070726f76656e2c20616e642064697360648201527f707574652067616d65206973206e6f7420696e76616c69640000000000000000608482015260a4016107bd565b60408051602081018590526000918101829052606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830181905292506111bc9101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152600182527f01000000000000000000000000000000000000000000000000000000000000006020830152906111b28b8d6154b1565b8d6040013561262f565b611248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a20696e76616c696420776974686472617760448201527f616c20696e636c7573696f6e2070726f6f66000000000000000000000000000060648201526084016107bd565b60405180604001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506039600086815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050508b6040015173ffffffffffffffffffffffffffffffffffffffff168c6020015173ffffffffffffffffffffffffffffffffffffffff16857f67a6208cfcc0801d50f6cbe764733f4fddf66ac0b04442061a8a8c0cb6b63f6260405160405180910390a4505050505050505050505050565b6000603560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113e9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b049190615535565b6000610b04610a71565b600081815260396020908152604080832081518083018352905473ffffffffffffffffffffffffffffffffffffffff81168083527401000000000000000000000000000000000000000090910467ffffffffffffffff1682850152808552603a90935292205460ff161561150d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4f7074696d69736d506f7274616c3a20646973707574652067616d652068617360448201527f206265656e20626c61636b6c697374656400000000000000000000000000000060648201526084016107bd565b816020015167ffffffffffffffff166000036115ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206e60448201527f6f74206265656e2070726f76656e20796574000000000000000000000000000060648201526084016107bd565b61162a8173ffffffffffffffffffffffffffffffffffffffff1663cf09e0d06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161d9190615552565b67ffffffffffffffff1690565b67ffffffffffffffff16826020015167ffffffffffffffff16116116f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604e60248201527f4f7074696d69736d506f7274616c3a207769746864726177616c2074696d657360448201527f74616d70206c657373207468616e20646973707574652067616d65206372656160648201527f74696f6e2074696d657374616d70000000000000000000000000000000000000608482015260a4016107bd565b7f0000000000000000000000000000000000000000000000000000000000000000826020015167ffffffffffffffff1642611731919061559e565b116117be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4f7074696d69736d506f7274616c3a2070726f76656e2077697468647261776160448201527f6c20686173206e6f74206d61747572656420796574000000000000000000000060648201526084016107bd565b60028173ffffffffffffffffffffffffffffffffffffffff1663200d2ed26040518163ffffffff1660e01b8152600401602060405180830381865afa15801561180b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182f9190615473565b600281111561184057611840615444565b146118cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4f7074696d69736d506f7274616c3a206f75747075742070726f706f73616c2060448201527f686173206e6f74206265656e2066696e616c697a65642079657400000000000060648201526084016107bd565b603b5463ffffffff1660ff166119278273ffffffffffffffffffffffffffffffffffffffff1663bbdc02db6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561100e573d6000803e3d6000fd5b60ff16146119b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f7074696d69736d506f7274616c3a20696e76616c69642067616d652074797060448201527f650000000000000000000000000000000000000000000000000000000000000060648201526084016107bd565b7f0000000000000000000000000000000000000000000000000000000000000000611a268273ffffffffffffffffffffffffffffffffffffffff166319effeb46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115f9573d6000803e3d6000fd5b611a3a9067ffffffffffffffff164261559e565b11611ac7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4f7074696d69736d506f7274616c3a206f75747075742070726f706f73616c2060448201527f696e206169722d6761700000000000000000000000000000000000000000000060648201526084016107bd565b60008381526033602052604090205460ff1615611b66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206160448201527f6c7265616479206265656e2066696e616c697a6564000000000000000000000060648201526084016107bd565b505050565b3361dead14611bfc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4f7074696d69736d506f7274616c3a206f6e6c7920736175726f6e2063616e2060448201527f626c61636b6c69737420646973707574652067616d657300000000000000000060648201526084016107bd565b73ffffffffffffffffffffffffffffffffffffffff166000908152603a6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b3361dead14611cdc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f4f7074696d69736d506f7274616c3a206f6e6c7920736175726f6e2063616e2060448201527f73657420746865207265737065637465642067616d652074797065000000000060648201526084016107bd565b603b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff92909216919091179055565b565b611d1d61137a565b15611d84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f7074696d69736d506f7274616c3a207061757365640000000000000000000060448201526064016107bd565b60325473ffffffffffffffffffffffffffffffffffffffff1661dead14611e2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a2063616e206f6e6c79207472696767657260448201527f206f6e65207769746864726177616c20706572207472616e73616374696f6e0060648201526084016107bd565b6000611e38826125ff565b9050611e4381611417565b600081815260336020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055908401516032805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff00000000000000000000000000000000000000009092169190911790558301516080840151606085015160a0860151611ee593929190612653565b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905560405190915082907fdb5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1b90611f4a90841515815260200190565b60405180910390a280158015611f605750326001145b15611b66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f7074696d69736d506f7274616c3a207769746864726177616c206661696c6560448201527f640000000000000000000000000000000000000000000000000000000000000060648201526084016107bd565b6000611ffa8260106155b5565b612006906152086155e5565b92915050565b600054610100900460ff161580801561202c5750600054600160ff909116105b806120465750303b158015612046575060005460ff166001145b6120d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107bd565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561213057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b603880547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8781169190911790925560378054909116858316179055603580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010085841602179055603254166121e957603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead1790555b6121f16126b1565b801561225457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b6001546000906122ac907801000000000000000000000000000000000000000000000000900467ffffffffffffffff164361559e565b905060006122b86127c4565b90506000816020015160ff16826000015163ffffffff166122d99190615640565b9050821561241057600154600090612310908390700100000000000000000000000000000000900467ffffffffffffffff166156a8565b90506000836040015160ff1683612327919061571c565b6001546123479084906fffffffffffffffffffffffffffffffff1661571c565b6123519190615640565b6001549091506000906123a29061237b9084906fffffffffffffffffffffffffffffffff166157d8565b866060015163ffffffff168760a001516fffffffffffffffffffffffffffffffff16612885565b905060018611156123d1576123ce61237b82876040015160ff1660018a6123c9919061559e565b6128a4565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b60018054869190601090612443908490700100000000000000000000000000000000900467ffffffffffffffff166155e5565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550816000015163ffffffff16600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff161315612526576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5265736f757263654d65746572696e673a2063616e6e6f7420627579206d6f7260448201527f6520676173207468616e20617661696c61626c6520676173206c696d6974000060648201526084016107bd565b600154600090612552906fffffffffffffffffffffffffffffffff1667ffffffffffffffff881661584c565b9050600061256448633b9aca006128f9565b61256e9083615889565b905060005a61257d908861559e565b90508082111561259957612599612594828461559e565b612910565b5050505050505050565b600081600001518260200151836040015184606001516040516020016125e2949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b80516020808301516040808501516060860151608087015160a088015193516000976125e297909695910161589d565b60008061263b86612939565b90506126498186868661296b565b9695505050505050565b600080600061266386600061299b565b905080612699576308c379a06000526020805278185361666543616c6c3a204e6f7420656e6f756768206761736058526064601cfd5b600080855160208701888b5af1979650505050505050565b600054610100900460ff16612748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107bd565b6001547801000000000000000000000000000000000000000000000000900467ffffffffffffffff16600003611d135760408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b6040805160c08082018352600080835260208301819052828401819052606083018190526080830181905260a083015260375483517fcc731b020000000000000000000000000000000000000000000000000000000081529351929373ffffffffffffffffffffffffffffffffffffffff9091169263cc731b02926004808401939192918290030181865afa158015612861573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b04919061590a565b600061289a61289485856129b9565b836129c9565b90505b9392505050565b6000670de0b6b3a76400006128e56128bc8583615640565b6128ce90670de0b6b3a76400006156a8565b6128e085670de0b6b3a764000061571c565b6129d8565b6128ef908661571c565b61289a9190615640565b600081831015612909578161289d565b5090919050565b6000805a90505b825a612923908361559e565b1015611b6657612932826159c6565b9150612917565b6060818051906020012060405160200161295591815260200190565b6040516020818303038152906040529050919050565b60006129928461297c878686612a09565b8051602091820120825192909101919091201490565b95945050505050565b600080603f83619c4001026040850201603f5a021015949350505050565b600081831215612909578161289d565b6000818312612909578161289d565b600061289d670de0b6b3a7640000836129f086613487565b6129fa919061571c565b612a049190615640565b6136cb565b60606000845111612a76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d65726b6c65547269653a20656d707479206b6579000000000000000000000060448201526064016107bd565b6000612a818461390a565b90506000612a8e866139f6565b9050600084604051602001612aa591815260200190565b60405160208183030381529060405290506000805b84518110156133fe576000858281518110612ad757612ad76159fe565b602002602001015190508451831115612b72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201527f74616c206b6579206c656e67746800000000000000000000000000000000000060648201526084016107bd565b82600003612c2b5780518051602091820120604051612bc092612b9a92910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b612c26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016107bd565b612d82565b805151602011612ce15780518051602091820120604051612c5592612b9a92910190815260200190565b612c26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e60448201527f616c20686173680000000000000000000000000000000000000000000000000060648201526084016107bd565b805184516020808701919091208251919092012014612d82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f6460448201527f652068617368000000000000000000000000000000000000000000000000000060648201526084016107bd565b612d8e60106001615a2d565b81602001515103612f6a5784518303612f0257612dc88160200151601081518110612dbb57612dbb6159fe565b6020026020010151613a59565b96506000875111612e5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016107bd565b60018651612e69919061559e565b8214612ef7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016107bd565b50505050505061289d565b6000858481518110612f1657612f166159fe565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110612f4157612f416159fe565b60200260200101519050612f5481613bb9565b9550612f61600186615a2d565b945050506133eb565b600281602001515103613363576000612f8282613bde565b9050600081600081518110612f9957612f996159fe565b016020015160f81c90506000612fb0600283615a45565b612fbb906002615a67565b90506000612fcc848360ff16613c02565b90506000612fda8a89613c02565b90506000612fe88383613c38565b90508083511461307a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016107bd565b60ff85166002148061308f575060ff85166003145b1561327e5780825114613124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016107bd565b61313e8760200151600181518110612dbb57612dbb6159fe565b9c5060008d51116131d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016107bd565b60018c516131df919061559e565b881461326d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016107bd565b50505050505050505050505061289d565b60ff85161580613291575060ff85166001145b156132d0576132bd87602001516001815181106132b0576132b06159fe565b6020026020010151613bb9565b99506132c9818a615a2d565b9850613358565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f6465207769746860448201527f20616e20756e6b6e6f776e20707265666978000000000000000000000000000060648201526084016107bd565b5050505050506133eb565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e70617273656160448201527f626c65206e6f646500000000000000000000000000000000000000000000000060648201526084016107bd565b50806133f6816159c6565b915050612aba565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c6560448201527f6d656e747300000000000000000000000000000000000000000000000000000060648201526084016107bd565b60008082136134f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e4544000000000000000000000000000000000000000000000060448201526064016107bd565b600060606134ff84613cec565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c182136136fc57506000919050565b680755bf798b4a1bf1e5821261376e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4558505f4f564552464c4f57000000000000000000000000000000000000000060448201526064016107bd565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b80516060908067ffffffffffffffff81111561392857613928614e6a565b60405190808252806020026020018201604052801561396d57816020015b60408051808201909152606080825260208201528152602001906001900390816139465790505b50915060005b818110156139ef576040518060400160405280858381518110613998576139986159fe565b602002602001015181526020016139c78684815181106139ba576139ba6159fe565b6020026020010151613dc2565b8152508382815181106139dc576139dc6159fe565b6020908102919091010152600101613973565b5050919050565b606080604051905082518060011b603f8101601f1916830160405280835250602084016020830160005b83811015613a4e578060011b82018184015160001a8060041c8253600f811660018301535050600101613a20565b509295945050505050565b60606000806000613a6985613dd5565b919450925090506000816001811115613a8457613a84615444565b14613b11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016107bd565b613b1b8284615a2d565b855114613baa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527f616e20696e76616c69642072656d61696e64657200000000000000000000000060648201526084016107bd565b61299285602001518484614842565b60606020826000015110613bd557613bd082613a59565b612006565b612006826148d6565b6060612006613bfd8360200151600081518110612dbb57612dbb6159fe565b6139f6565b606082518210613c215750604080516020810190915260008152612006565b61289d8383848651613c33919061559e565b6148ec565b6000808251845110613c4b578251613c4e565b83515b90505b8082108015613cd55750828281518110613c6d57613c6d6159fe565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916848381518110613cac57613cac6159fe565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b15613ce557816001019150613c51565b5092915050565b6000808211613d57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e4544000000000000000000000000000000000000000000000060448201526064016107bd565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b6060612006613dd083614ac4565b614bad565b600080600080846000015111613e93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a4016107bd565b6020840151805160001a607f8111613eb857600060016000945094509450505061483b565b60b781116140c6576000613ecd60808361559e565b905080876000015111613f88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604e60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201527f2873686f727420737472696e6729000000000000000000000000000000000000608482015260a4016107bd565b6001838101517fff0000000000000000000000000000000000000000000000000000000000000016908214158061400157507f80000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610155b6140b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201527f73686f727420737472696e672900000000000000000000000000000000000000608482015260a4016107bd565b506001955093506000925061483b915050565b60bf81116144145760006140db60b78361559e565b905080876000015111614196576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605160248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527f67746820286c6f6e6720737472696e6729000000000000000000000000000000608482015260a4016107bd565b60018301517fff00000000000000000000000000000000000000000000000000000000000000166000819003614274576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e6720737472696e672900000000000000000000000000000000000000000000608482015260a4016107bd565b600184015160088302610100031c60378111614338576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f20737472696e6729000000000000000000000000000000000000000000000000608482015260a4016107bd565b6143428184615a2d565b8951116143f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604c60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e6720737472696e67290000000000000000000000000000000000000000608482015260a4016107bd565b614402836001615a2d565b975095506000945061483b9350505050565b60f781116144f557600061442960c08361559e565b9050808760000151116144e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e206c697374206c656e67746820287360648201527f686f7274206c6973742900000000000000000000000000000000000000000000608482015260a4016107bd565b60019550935084925061483b915050565b600061450260f78361559e565b9050808760000151116145bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201527f6820286c6f6e67206c6973742900000000000000000000000000000000000000608482015260a4016107bd565b60018301517fff0000000000000000000000000000000000000000000000000000000000000016600081900361469b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e67206c69737429000000000000000000000000000000000000000000000000608482015260a4016107bd565b600184015160088302610100031c6037811161475f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604660248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f206c697374290000000000000000000000000000000000000000000000000000608482015260a4016107bd565b6147698184615a2d565b89511161481e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e67206c6973742900000000000000000000000000000000000000000000608482015260a4016107bd565b614829836001615a2d565b975095506001945061483b9350505050565b9193909250565b60608167ffffffffffffffff81111561485d5761485d614e6a565b6040519080825280601f01601f191660200182016040528015614887576020820181803683370190505b509050811561289d57600061489c8486615a2d565b90506020820160005b848110156148bd5782810151828201526020016148a5565b848111156148cc576000858301525b5050509392505050565b6060612006826020015160008460000151614842565b60608182601f01101561495b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f7700000000000000000000000000000000000060448201526064016107bd565b8282840110156149c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f7700000000000000000000000000000000000060448201526064016107bd565b81830184511015614a34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e647300000000000000000000000000000060448201526064016107bd565b606082158015614a535760405191506000825260208201604052614abb565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015614a8c578051835260209283019201614a74565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b60408051808201909152600080825260208201526000825111614b8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a4016107bd565b50604080518082019091528151815260209182019181019190915290565b60606000806000614bbd85613dd5565b919450925090506001816001811115614bd857614bd8615444565b14614c65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016107bd565b8451614c718385615a2d565b14614cfe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e766160448201527f6c696420646174612072656d61696e646572000000000000000000000000000060648201526084016107bd565b604080516020808252610420820190925290816020015b6040805180820190915260008082526020820152815260200190600190039081614d155790505093506000835b8651811015614e0357600080614d886040518060400160405280858c60000151614d6c919061559e565b8152602001858c60200151614d819190615a2d565b9052613dd5565b509150915060405180604001604052808383614da49190615a2d565b8152602001848b60200151614db99190615a2d565b815250888581518110614dce57614dce6159fe565b6020908102919091010152614de4600185615a2d565b9350614df08183615a2d565b614dfa9084615a2d565b92505050614d42565b50845250919392505050565b600060208284031215614e2157600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114614e4a57600080fd5b50565b600060208284031215614e5f57600080fd5b813561289d81614e28565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614ee057614ee0614e6a565b604052919050565b600082601f830112614ef957600080fd5b813567ffffffffffffffff811115614f1357614f13614e6a565b614f4460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601614e99565b818152846020838601011115614f5957600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215614f8857600080fd5b60405160c0810167ffffffffffffffff8282108183111715614fac57614fac614e6a565b816040528293508435835260208501359150614fc782614e28565b81602084015260408501359150614fdd82614e28565b816040840152606085013560608401526080850135608084015260a085013591508082111561500b57600080fd5b5061501885828601614ee8565b60a0830152505092915050565b600080600080600085870360e081121561503e57600080fd5b863567ffffffffffffffff8082111561505657600080fd5b6150628a838b01614f76565b97506020890135965060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08401121561509b57600080fd5b60408901955060c08901359250808311156150b557600080fd5b828901925089601f8401126150c957600080fd5b82359150808211156150da57600080fd5b508860208260051b84010111156150f057600080fd5b959894975092955050506020019190565b60005b8381101561511c578181015183820152602001615104565b838111156122545750506000910152565b60008151808452615145816020860160208601615101565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061289d602083018461512d565b63ffffffff81168114614e4a57600080fd5b6000602082840312156151ae57600080fd5b813561289d8161518a565b6000602082840312156151cb57600080fd5b813567ffffffffffffffff8111156151e257600080fd5b6151ee84828501614f76565b949350505050565b67ffffffffffffffff81168114614e4a57600080fd5b60006020828403121561521e57600080fd5b813561289d816151f6565b60008060006060848603121561523e57600080fd5b833561524981614e28565b9250602084013561525981614e28565b9150604084013561526981614e28565b809150509250925092565b8015158114614e4a57600080fd5b600080600080600060a0868803121561529a57600080fd5b85356152a581614e28565b94506020860135935060408601356152bc816151f6565b925060608601356152cc81615274565b9150608086013567ffffffffffffffff8111156152e857600080fd5b6152f488828901614ee8565b9150509295509295909350565b8581528460208201527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b16604082015282151560f81b604882015260008251615355816049850160208701615101565b919091016049019695505050505050565b60006020828403121561537857600080fd5b815161289d81614e28565b60008060006060848603121561539857600080fd5b83516153a38161518a565b60208501519093506153b4816151f6565b604085015190925061526981614e28565b6000602082840312156153d757600080fd5b5051919050565b6000608082840312156153f057600080fd5b6040516080810181811067ffffffffffffffff8211171561541357615413614e6a565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60006020828403121561548557600080fd5b81516003811061289d57600080fd5b6000602082840312156154a657600080fd5b815161289d8161518a565b600067ffffffffffffffff808411156154cc576154cc614e6a565b8360051b60206154dd818301614e99565b8681529185019181810190368411156154f557600080fd5b865b848110156155295780358681111561550f5760008081fd5b61551b36828b01614ee8565b8452509183019183016154f7565b50979650505050505050565b60006020828403121561554757600080fd5b815161289d81615274565b60006020828403121561556457600080fd5b815161289d816151f6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156155b0576155b061556f565b500390565b600067ffffffffffffffff808316818516818304811182151516156155dc576155dc61556f565b02949350505050565b600067ffffffffffffffff8083168185168083038211156156085761560861556f565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261564f5761564f615611565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f8000000000000000000000000000000000000000000000000000000000000000831416156156a3576156a361556f565b500590565b6000808312837f8000000000000000000000000000000000000000000000000000000000000000018312811516156156e2576156e261556f565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0183138116156157165761571661556f565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60008413600084138583048511828216161561575d5761575d61556f565b7f800000000000000000000000000000000000000000000000000000000000000060008712868205881281841616156157985761579861556f565b600087129250878205871284841616156157b4576157b461556f565b878505871281841616156157ca576157ca61556f565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038413811516156158125761581261556f565b827f80000000000000000000000000000000000000000000000000000000000000000384128116156158465761584661556f565b50500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156158845761588461556f565b500290565b60008261589857615898615611565b500490565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a08301526158e860c083018461512d565b98975050505050505050565b805160ff8116811461590557600080fd5b919050565b600060c0828403121561591c57600080fd5b60405160c0810181811067ffffffffffffffff8211171561593f5761593f614e6a565b604052825161594d8161518a565b815261595b602084016158f4565b602082015261596c604084016158f4565b6040820152606083015161597f8161518a565b606082015260808301516159928161518a565b608082015260a08301516fffffffffffffffffffffffffffffffff811681146159ba57600080fd5b60a08201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036159f7576159f761556f565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008219821115615a4057615a4061556f565b500190565b600060ff831680615a5857615a58615611565b8060ff84160691505092915050565b600060ff821660ff841680821015615a8157615a8161556f565b9003939250505056fea164736f6c634300080f000a" +var OptimismPortal2DeployedBin = "0x6080604052600436106101a55760003560e01c80638b4c40b0116100e1578063bf653a5c1161008a578063e965084c11610064578063e965084c146105e8578063e9e05c4214610684578063f049875014610697578063f2b4e617146106c257600080fd5b8063bf653a5c146104f4578063c0c53b8b14610527578063cff0ab961461054757600080fd5b80639bf62d82116100bb5780639bf62d821461045e578063a14238e71461048b578063a35d99df146104bb57600080fd5b80638b4c40b0146101ca5780638c3152e914610401578063952b27971461042157600080fd5b80634870496f1161014e578063724c184c11610128578063724c184c1461038c5780637af1906d146103a15780637d6be8dc146103c15780637fc48504146103e157600080fd5b80634870496f1461030157806354fd4d50146103215780635c975abb1461037757600080fd5b80633c9f397c1161017f5780633c9f397c1461027a578063452a9320146102ac57806345884d32146102c157600080fd5b806303869d7c146101d157806333d7e2bd146101f157806335e80ab31461024857600080fd5b366101cc576101ca3334620186a06000604051806020016040528060008152506106ef565b005b600080fd5b3480156101dd57600080fd5b506101ca6101ec366004614ea8565b61098a565b3480156101fd57600080fd5b5060375461021e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561025457600080fd5b5060355461021e90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b34801561028657600080fd5b50603b546102979063ffffffff1681565b60405163ffffffff909116815260200161023f565b3480156102b857600080fd5b5061021e610a82565b3480156102cd57600080fd5b506102f16102dc366004614ee6565b603a6020526000908152604090205460ff1681565b604051901515815260200161023f565b34801561030d57600080fd5b506101ca61031c3660046150be565b610b1a565b34801561032d57600080fd5b5061036a6040518060400160405280600581526020017f332e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161023f9190615210565b34801561038357600080fd5b506102f161138b565b34801561039857600080fd5b5061021e61141e565b3480156103ad57600080fd5b506101ca6103bc366004614ea8565b611428565b3480156103cd57600080fd5b506101ca6103dc366004614ee6565b611b7c565b3480156103ed57600080fd5b506101ca6103fc366004615235565b611c8d565b34801561040d57600080fd5b506101ca61041c366004615252565b611dae565b34801561042d57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405190815260200161023f565b34801561046a57600080fd5b5060325461021e9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561049757600080fd5b506102f16104a6366004614ea8565b60336020526000908152604090205460ff1681565b3480156104c757600080fd5b506104db6104d63660046152a5565b612086565b60405167ffffffffffffffff909116815260200161023f565b34801561050057600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610450565b34801561053357600080fd5b506101ca6105423660046152c2565b6120a5565b34801561055357600080fd5b506001546105af906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff928316602085015291169082015260600161023f565b3480156105f457600080fd5b5061064f610603366004614ea8565b60396020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff81169074010000000000000000000000000000000000000000900467ffffffffffffffff1682565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835267ffffffffffffffff90911660208301520161023f565b6101ca61069236600461531b565b6106ef565b3480156106a357600080fd5b5060375473ffffffffffffffffffffffffffffffffffffffff1661021e565b3480156106ce57600080fd5b5060385461021e9073ffffffffffffffffffffffffffffffffffffffff1681565b8260005a905083156107a65773ffffffffffffffffffffffffffffffffffffffff8716156107a657604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f4f7074696d69736d506f7274616c3a206d7573742073656e6420746f2061646460448201527f72657373283029207768656e206372656174696e67206120636f6e747261637460648201526084015b60405180910390fd5b6107b08351612086565b67ffffffffffffffff168567ffffffffffffffff161015610853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f4f7074696d69736d506f7274616c3a20676173206c696d697420746f6f20736d60448201527f616c6c0000000000000000000000000000000000000000000000000000000000606482015260840161079d565b6201d4c0835111156108c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4f7074696d69736d506f7274616c3a206461746120746f6f206c617267650000604482015260640161079d565b333281146108e2575033731111000000000000000000000000000000001111015b600034888888886040516020016108fd95949392919061539a565b604051602081830303815290604052905060008973ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c328460405161096d9190615210565b60405180910390a45050610981828261230f565b50505050505050565b610992610a82565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a206f6e6c7920746865206775617264696160448201527f6e2063616e2064656c6574652070726f76656e207769746864726177616c7300606482015260840161079d565b600090815260396020526040902080547fffffffff00000000000000000000000000000000000000000000000000000000169055565b6000603560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663452a93206040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1591906153ff565b905090565b610b2261138b565b15610b89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f7074696d69736d506f7274616c3a2070617573656400000000000000000000604482015260640161079d565b3073ffffffffffffffffffffffffffffffffffffffff16856040015173ffffffffffffffffffffffffffffffffffffffff1603610c48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a20796f752063616e6e6f742073656e642060448201527f6d6573736167657320746f2074686520706f7274616c20636f6e747261637400606482015260840161079d565b6038546040517fbb8aa1fc00000000000000000000000000000000000000000000000000000000815260048101869052600091829173ffffffffffffffffffffffffffffffffffffffff9091169063bb8aa1fc90602401606060405180830381865afa158015610cbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce0919061541c565b925050915060008173ffffffffffffffffffffffffffffffffffffffff1663bcef3b556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d56919061545e565b603b5490915060ff848116911614610df0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f7074696d69736d506f7274616c3a20696e76616c69642067616d652074797060448201527f6500000000000000000000000000000000000000000000000000000000000000606482015260840161079d565b610e07610e0236889003880188615477565b61263c565b8114610e95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f7074696d69736d506f7274616c3a20696e76616c6964206f7574707574207260448201527f6f6f742070726f6f660000000000000000000000000000000000000000000000606482015260840161079d565b6000610ea089612698565b60008181526039602090815260409182902082518084019093525473ffffffffffffffffffffffffffffffffffffffff81168084527401000000000000000000000000000000000000000090910467ffffffffffffffff169183018290529293509091901580610f8f575060018573ffffffffffffffffffffffffffffffffffffffff1663200d2ed26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7c919061550c565b6002811115610f8d57610f8d6154dd565b145b80610fbf575073ffffffffffffffffffffffffffffffffffffffff85166000908152603a602052604090205460ff165b806110525750603b5463ffffffff1660ff1661104c8273ffffffffffffffffffffffffffffffffffffffff1663bbdc02db6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561101f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611043919061552d565b63ffffffff1690565b60ff1614155b611104576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173682060448201527f68617320616c7265616479206265656e2070726f76656e2c20616e642064697360648201527f707574652067616d65206973206e6f7420696e76616c69640000000000000000608482015260a40161079d565b60408051602081018590526000918101829052606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830181905292506111cd9101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152600182527f01000000000000000000000000000000000000000000000000000000000000006020830152906111c38b8d61554a565b8d604001356126c8565b611259576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a20696e76616c696420776974686472617760448201527f616c20696e636c7573696f6e2070726f6f660000000000000000000000000000606482015260840161079d565b60405180604001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506039600086815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050508b6040015173ffffffffffffffffffffffffffffffffffffffff168c6020015173ffffffffffffffffffffffffffffffffffffffff16857f67a6208cfcc0801d50f6cbe764733f4fddf66ac0b04442061a8a8c0cb6b63f6260405160405180910390a4505050505050505050505050565b6000603560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1591906155ce565b6000610b15610a82565b600081815260396020908152604080832081518083018352905473ffffffffffffffffffffffffffffffffffffffff81168083527401000000000000000000000000000000000000000090910467ffffffffffffffff1682850152808552603a90935292205460ff161561151e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4f7074696d69736d506f7274616c3a20646973707574652067616d652068617360448201527f206265656e20626c61636b6c6973746564000000000000000000000000000000606482015260840161079d565b816020015167ffffffffffffffff166000036115bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206e60448201527f6f74206265656e2070726f76656e207965740000000000000000000000000000606482015260840161079d565b61163b8173ffffffffffffffffffffffffffffffffffffffff1663cf09e0d06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561160a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162e91906155eb565b67ffffffffffffffff1690565b67ffffffffffffffff16826020015167ffffffffffffffff1611611707576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604e60248201527f4f7074696d69736d506f7274616c3a207769746864726177616c2074696d657360448201527f74616d70206c657373207468616e20646973707574652067616d65206372656160648201527f74696f6e2074696d657374616d70000000000000000000000000000000000000608482015260a40161079d565b7f0000000000000000000000000000000000000000000000000000000000000000826020015167ffffffffffffffff16426117429190615637565b116117cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4f7074696d69736d506f7274616c3a2070726f76656e2077697468647261776160448201527f6c20686173206e6f74206d617475726564207965740000000000000000000000606482015260840161079d565b60028173ffffffffffffffffffffffffffffffffffffffff1663200d2ed26040518163ffffffff1660e01b8152600401602060405180830381865afa15801561181c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611840919061550c565b6002811115611851576118516154dd565b146118de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4f7074696d69736d506f7274616c3a206f75747075742070726f706f73616c2060448201527f686173206e6f74206265656e2066696e616c697a656420796574000000000000606482015260840161079d565b603b5463ffffffff1660ff166119388273ffffffffffffffffffffffffffffffffffffffff1663bbdc02db6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561101f573d6000803e3d6000fd5b60ff16146119c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f7074696d69736d506f7274616c3a20696e76616c69642067616d652074797060448201527f6500000000000000000000000000000000000000000000000000000000000000606482015260840161079d565b7f0000000000000000000000000000000000000000000000000000000000000000611a378273ffffffffffffffffffffffffffffffffffffffff166319effeb46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561160a573d6000803e3d6000fd5b611a4b9067ffffffffffffffff1642615637565b11611ad8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4f7074696d69736d506f7274616c3a206f75747075742070726f706f73616c2060448201527f696e206169722d67617000000000000000000000000000000000000000000000606482015260840161079d565b60008381526033602052604090205460ff1615611b77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206160448201527f6c7265616479206265656e2066696e616c697a65640000000000000000000000606482015260840161079d565b505050565b611b84610a82565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4f7074696d69736d506f7274616c3a206f6e6c7920746865206775617264696160448201527f6e2063616e20626c61636b6c69737420646973707574652067616d6573000000606482015260840161079d565b73ffffffffffffffffffffffffffffffffffffffff166000908152603a6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b611c95610a82565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f4f7074696d69736d506f7274616c3a206f6e6c7920746865206775617264696160448201527f6e2063616e2073657420746865207265737065637465642067616d652074797060648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a40161079d565b603b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff92909216919091179055565b565b611db661138b565b15611e1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f7074696d69736d506f7274616c3a2070617573656400000000000000000000604482015260640161079d565b60325473ffffffffffffffffffffffffffffffffffffffff1661dead14611ec6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a2063616e206f6e6c79207472696767657260448201527f206f6e65207769746864726177616c20706572207472616e73616374696f6e00606482015260840161079d565b6000611ed182612698565b9050611edc81611428565b600081815260336020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055908401516032805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff00000000000000000000000000000000000000009092169190911790558301516080840151606085015160a0860151611f7e939291906126ec565b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905560405190915082907fdb5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1b90611fe390841515815260200190565b60405180910390a280158015611ff95750326001145b15611b77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f7074696d69736d506f7274616c3a207769746864726177616c206661696c6560448201527f6400000000000000000000000000000000000000000000000000000000000000606482015260840161079d565b600061209382601061564e565b61209f9061520861567e565b92915050565b600054610100900460ff16158080156120c55750600054600160ff909116105b806120df5750303b1580156120df575060005460ff166001145b61216b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161079d565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156121c957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b603880547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8781169190911790925560378054909116858316179055603580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff16610100858416021790556032541661228257603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead1790555b61228a61274a565b80156122ed57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b600154600090612345907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1643615637565b9050600061235161285d565b90506000816020015160ff16826000015163ffffffff1661237291906156d9565b905082156124a9576001546000906123a9908390700100000000000000000000000000000000900467ffffffffffffffff16615741565b90506000836040015160ff16836123c091906157b5565b6001546123e09084906fffffffffffffffffffffffffffffffff166157b5565b6123ea91906156d9565b60015490915060009061243b906124149084906fffffffffffffffffffffffffffffffff16615871565b866060015163ffffffff168760a001516fffffffffffffffffffffffffffffffff1661291e565b9050600186111561246a5761246761241482876040015160ff1660018a6124629190615637565b61293d565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b600180548691906010906124dc908490700100000000000000000000000000000000900467ffffffffffffffff1661567e565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550816000015163ffffffff16600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff1613156125bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5265736f757263654d65746572696e673a2063616e6e6f7420627579206d6f7260448201527f6520676173207468616e20617661696c61626c6520676173206c696d69740000606482015260840161079d565b6001546000906125eb906fffffffffffffffffffffffffffffffff1667ffffffffffffffff88166158e5565b905060006125fd48633b9aca00612992565b6126079083615922565b905060005a6126169088615637565b9050808211156126325761263261262d8284615637565b6129a9565b5050505050505050565b6000816000015182602001518360400151846060015160405160200161267b949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b80516020808301516040808501516060860151608087015160a0880151935160009761267b979096959101615936565b6000806126d4866129d2565b90506126e281868686612a04565b9695505050505050565b60008060006126fc866000612a34565b905080612732576308c379a06000526020805278185361666543616c6c3a204e6f7420656e6f756768206761736058526064601cfd5b600080855160208701888b5af1979650505050505050565b600054610100900460ff166127e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161079d565b6001547801000000000000000000000000000000000000000000000000900467ffffffffffffffff16600003611dac5760408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b6040805160c08082018352600080835260208301819052828401819052606083018190526080830181905260a083015260375483517fcc731b020000000000000000000000000000000000000000000000000000000081529351929373ffffffffffffffffffffffffffffffffffffffff9091169263cc731b02926004808401939192918290030181865afa1580156128fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1591906159a3565b600061293361292d8585612a52565b83612a62565b90505b9392505050565b6000670de0b6b3a764000061297e61295585836156d9565b61296790670de0b6b3a7640000615741565b61297985670de0b6b3a76400006157b5565b612a71565b61298890866157b5565b61293391906156d9565b6000818310156129a25781612936565b5090919050565b6000805a90505b825a6129bc9083615637565b1015611b77576129cb82615a5f565b91506129b0565b606081805190602001206040516020016129ee91815260200190565b6040516020818303038152906040529050919050565b6000612a2b84612a15878686612aa2565b8051602091820120825192909101919091201490565b95945050505050565b600080603f83619c4001026040850201603f5a021015949350505050565b6000818312156129a25781612936565b60008183126129a25781612936565b6000612936670de0b6b3a764000083612a8986613520565b612a9391906157b5565b612a9d91906156d9565b613764565b60606000845111612b0f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d65726b6c65547269653a20656d707479206b65790000000000000000000000604482015260640161079d565b6000612b1a846139a3565b90506000612b2786613a8f565b9050600084604051602001612b3e91815260200190565b60405160208183030381529060405290506000805b8451811015613497576000858281518110612b7057612b70615a97565b602002602001015190508451831115612c0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201527f74616c206b6579206c656e677468000000000000000000000000000000000000606482015260840161079d565b82600003612cc45780518051602091820120604051612c5992612c3392910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b612cbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f742068617368000000604482015260640161079d565b612e1b565b805151602011612d7a5780518051602091820120604051612cee92612c3392910190815260200190565b612cbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e60448201527f616c206861736800000000000000000000000000000000000000000000000000606482015260840161079d565b805184516020808701919091208251919092012014612e1b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f6460448201527f6520686173680000000000000000000000000000000000000000000000000000606482015260840161079d565b612e2760106001615ac6565b816020015151036130035784518303612f9b57612e618160200151601081518110612e5457612e54615a97565b6020026020010151613af2565b96506000875111612ef4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e6368290000000000606482015260840161079d565b60018651612f029190615637565b8214612f90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e636829000000000000606482015260840161079d565b505050505050612936565b6000858481518110612faf57612faf615a97565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110612fda57612fda615a97565b60200260200101519050612fed81613c52565b9550612ffa600186615ac6565b94505050613484565b6002816020015151036133fc57600061301b82613c77565b905060008160008151811061303257613032615a97565b016020015160f81c90506000613049600283615ade565b613054906002615b00565b90506000613065848360ff16613c9b565b905060006130738a89613c9b565b905060006130818383613cd1565b905080835114613113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b6579000000000000606482015260840161079d565b60ff851660021480613128575060ff85166003145b1561331757808251146131bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e646572000000606482015260840161079d565b6131d78760200151600181518110612e5457612e54615a97565b9c5060008d511161326a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c6561662900000000000000606482015260840161079d565b60018c516132789190615637565b8814613306576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c656166290000000000000000606482015260840161079d565b505050505050505050505050612936565b60ff8516158061332a575060ff85166001145b1561336957613356876020015160018151811061334957613349615a97565b6020026020010151613c52565b9950613362818a615ac6565b98506133f1565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f6465207769746860448201527f20616e20756e6b6e6f776e207072656669780000000000000000000000000000606482015260840161079d565b505050505050613484565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e70617273656160448201527f626c65206e6f6465000000000000000000000000000000000000000000000000606482015260840161079d565b508061348f81615a5f565b915050612b53565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c6560448201527f6d656e7473000000000000000000000000000000000000000000000000000000606482015260840161079d565b600080821361358b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e45440000000000000000000000000000000000000000000000604482015260640161079d565b6000606061359884613d85565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c1821361379557506000919050565b680755bf798b4a1bf1e58212613807576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4558505f4f564552464c4f570000000000000000000000000000000000000000604482015260640161079d565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b80516060908067ffffffffffffffff8111156139c1576139c1614f03565b604051908082528060200260200182016040528015613a0657816020015b60408051808201909152606080825260208201528152602001906001900390816139df5790505b50915060005b81811015613a88576040518060400160405280858381518110613a3157613a31615a97565b60200260200101518152602001613a60868481518110613a5357613a53615a97565b6020026020010151613e5b565b815250838281518110613a7557613a75615a97565b6020908102919091010152600101613a0c565b5050919050565b606080604051905082518060011b603f8101601f1916830160405280835250602084016020830160005b83811015613ae7578060011b82018184015160001a8060041c8253600f811660018301535050600101613ab9565b509295945050505050565b60606000806000613b0285613e6e565b919450925090506000816001811115613b1d57613b1d6154dd565b14613baa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d00000000000000606482015260840161079d565b613bb48284615ac6565b855114613c43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527f616e20696e76616c69642072656d61696e646572000000000000000000000000606482015260840161079d565b612a2b856020015184846148db565b60606020826000015110613c6e57613c6982613af2565b61209f565b61209f8261496f565b606061209f613c968360200151600081518110612e5457612e54615a97565b613a8f565b606082518210613cba575060408051602081019091526000815261209f565b6129368383848651613ccc9190615637565b614985565b6000808251845110613ce4578251613ce7565b83515b90505b8082108015613d6e5750828281518110613d0657613d06615a97565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916848381518110613d4557613d45615a97565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b15613d7e57816001019150613cea565b5092915050565b6000808211613df0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e45440000000000000000000000000000000000000000000000604482015260640161079d565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b606061209f613e6983614b5d565b614c46565b600080600080846000015111613f2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a40161079d565b6020840151805160001a607f8111613f515760006001600094509450945050506148d4565b60b7811161415f576000613f66608083615637565b905080876000015111614021576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604e60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201527f2873686f727420737472696e6729000000000000000000000000000000000000608482015260a40161079d565b6001838101517fff0000000000000000000000000000000000000000000000000000000000000016908214158061409a57507f80000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610155b61414c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201527f73686f727420737472696e672900000000000000000000000000000000000000608482015260a40161079d565b50600195509350600092506148d4915050565b60bf81116144ad57600061417460b783615637565b90508087600001511161422f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605160248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527f67746820286c6f6e6720737472696e6729000000000000000000000000000000608482015260a40161079d565b60018301517fff0000000000000000000000000000000000000000000000000000000000000016600081900361430d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e6720737472696e672900000000000000000000000000000000000000000000608482015260a40161079d565b600184015160088302610100031c603781116143d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f20737472696e6729000000000000000000000000000000000000000000000000608482015260a40161079d565b6143db8184615ac6565b895111614490576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604c60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e6720737472696e67290000000000000000000000000000000000000000608482015260a40161079d565b61449b836001615ac6565b97509550600094506148d49350505050565b60f7811161458e5760006144c260c083615637565b90508087600001511161457d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e206c697374206c656e67746820287360648201527f686f7274206c6973742900000000000000000000000000000000000000000000608482015260a40161079d565b6001955093508492506148d4915050565b600061459b60f783615637565b905080876000015111614656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201527f6820286c6f6e67206c6973742900000000000000000000000000000000000000608482015260a40161079d565b60018301517fff00000000000000000000000000000000000000000000000000000000000000166000819003614734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e67206c69737429000000000000000000000000000000000000000000000000608482015260a40161079d565b600184015160088302610100031c603781116147f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604660248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f206c697374290000000000000000000000000000000000000000000000000000608482015260a40161079d565b6148028184615ac6565b8951116148b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e67206c6973742900000000000000000000000000000000000000000000608482015260a40161079d565b6148c2836001615ac6565b97509550600194506148d49350505050565b9193909250565b60608167ffffffffffffffff8111156148f6576148f6614f03565b6040519080825280601f01601f191660200182016040528015614920576020820181803683370190505b50905081156129365760006149358486615ac6565b90506020820160005b8481101561495657828101518282015260200161493e565b84811115614965576000858301525b5050509392505050565b606061209f8260200151600084600001516148db565b60608182601f0110156149f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161079d565b828284011015614a60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161079d565b81830184511015614acd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015260640161079d565b606082158015614aec5760405191506000825260208201604052614b54565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015614b25578051835260209283019201614b0d565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b60408051808201909152600080825260208201526000825111614c28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a40161079d565b50604080518082019091528151815260209182019181019190915290565b60606000806000614c5685613e6e565b919450925090506001816001811115614c7157614c716154dd565b14614cfe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d0000000000000000606482015260840161079d565b8451614d0a8385615ac6565b14614d97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e766160448201527f6c696420646174612072656d61696e6465720000000000000000000000000000606482015260840161079d565b604080516020808252610420820190925290816020015b6040805180820190915260008082526020820152815260200190600190039081614dae5790505093506000835b8651811015614e9c57600080614e216040518060400160405280858c60000151614e059190615637565b8152602001858c60200151614e1a9190615ac6565b9052613e6e565b509150915060405180604001604052808383614e3d9190615ac6565b8152602001848b60200151614e529190615ac6565b815250888581518110614e6757614e67615a97565b6020908102919091010152614e7d600185615ac6565b9350614e898183615ac6565b614e939084615ac6565b92505050614ddb565b50845250919392505050565b600060208284031215614eba57600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114614ee357600080fd5b50565b600060208284031215614ef857600080fd5b813561293681614ec1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614f7957614f79614f03565b604052919050565b600082601f830112614f9257600080fd5b813567ffffffffffffffff811115614fac57614fac614f03565b614fdd60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601614f32565b818152846020838601011115614ff257600080fd5b816020850160208301376000918101602001919091529392505050565b600060c0828403121561502157600080fd5b60405160c0810167ffffffffffffffff828210818311171561504557615045614f03565b81604052829350843583526020850135915061506082614ec1565b8160208401526040850135915061507682614ec1565b816040840152606085013560608401526080850135608084015260a08501359150808211156150a457600080fd5b506150b185828601614f81565b60a0830152505092915050565b600080600080600085870360e08112156150d757600080fd5b863567ffffffffffffffff808211156150ef57600080fd5b6150fb8a838b0161500f565b97506020890135965060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08401121561513457600080fd5b60408901955060c089013592508083111561514e57600080fd5b828901925089601f84011261516257600080fd5b823591508082111561517357600080fd5b508860208260051b840101111561518957600080fd5b959894975092955050506020019190565b60005b838110156151b557818101518382015260200161519d565b838111156122ed5750506000910152565b600081518084526151de81602086016020860161519a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061293660208301846151c6565b63ffffffff81168114614ee357600080fd5b60006020828403121561524757600080fd5b813561293681615223565b60006020828403121561526457600080fd5b813567ffffffffffffffff81111561527b57600080fd5b6152878482850161500f565b949350505050565b67ffffffffffffffff81168114614ee357600080fd5b6000602082840312156152b757600080fd5b81356129368161528f565b6000806000606084860312156152d757600080fd5b83356152e281614ec1565b925060208401356152f281614ec1565b9150604084013561530281614ec1565b809150509250925092565b8015158114614ee357600080fd5b600080600080600060a0868803121561533357600080fd5b853561533e81614ec1565b94506020860135935060408601356153558161528f565b925060608601356153658161530d565b9150608086013567ffffffffffffffff81111561538157600080fd5b61538d88828901614f81565b9150509295509295909350565b8581528460208201527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b16604082015282151560f81b6048820152600082516153ee81604985016020870161519a565b919091016049019695505050505050565b60006020828403121561541157600080fd5b815161293681614ec1565b60008060006060848603121561543157600080fd5b835161543c81615223565b602085015190935061544d8161528f565b604085015190925061530281614ec1565b60006020828403121561547057600080fd5b5051919050565b60006080828403121561548957600080fd5b6040516080810181811067ffffffffffffffff821117156154ac576154ac614f03565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60006020828403121561551e57600080fd5b81516003811061293657600080fd5b60006020828403121561553f57600080fd5b815161293681615223565b600067ffffffffffffffff8084111561556557615565614f03565b8360051b6020615576818301614f32565b86815291850191818101903684111561558e57600080fd5b865b848110156155c2578035868111156155a85760008081fd5b6155b436828b01614f81565b845250918301918301615590565b50979650505050505050565b6000602082840312156155e057600080fd5b81516129368161530d565b6000602082840312156155fd57600080fd5b81516129368161528f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561564957615649615608565b500390565b600067ffffffffffffffff8083168185168183048111821515161561567557615675615608565b02949350505050565b600067ffffffffffffffff8083168185168083038211156156a1576156a1615608565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826156e8576156e86156aa565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f80000000000000000000000000000000000000000000000000000000000000008314161561573c5761573c615608565b500590565b6000808312837f80000000000000000000000000000000000000000000000000000000000000000183128115161561577b5761577b615608565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0183138116156157af576157af615608565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000841360008413858304851182821616156157f6576157f6615608565b7f8000000000000000000000000000000000000000000000000000000000000000600087128682058812818416161561583157615831615608565b6000871292508782058712848416161561584d5761584d615608565b8785058712818416161561586357615863615608565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038413811516156158ab576158ab615608565b827f80000000000000000000000000000000000000000000000000000000000000000384128116156158df576158df615608565b50500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561591d5761591d615608565b500290565b600082615931576159316156aa565b500490565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a083015261598160c08301846151c6565b98975050505050505050565b805160ff8116811461599e57600080fd5b919050565b600060c082840312156159b557600080fd5b60405160c0810181811067ffffffffffffffff821117156159d8576159d8614f03565b60405282516159e681615223565b81526159f46020840161598d565b6020820152615a056040840161598d565b60408201526060830151615a1881615223565b60608201526080830151615a2b81615223565b608082015260a08301516fffffffffffffffffffffffffffffffff81168114615a5357600080fd5b60a08201529392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615a9057615a90615608565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008219821115615ad957615ad9615608565b500190565b600060ff831680615af157615af16156aa565b8060ff84160691505092915050565b600060ff821660ff841680821015615b1a57615b1a615608565b9003939250505056fea164736f6c634300080f000a" func init() { diff --git a/packages/contracts-bedrock/semver-lock.json b/packages/contracts-bedrock/semver-lock.json index 605c5cf963fb..d8c93efa165f 100644 --- a/packages/contracts-bedrock/semver-lock.json +++ b/packages/contracts-bedrock/semver-lock.json @@ -32,8 +32,8 @@ "sourceCodeHash": "0xdc27421279afb6c3b26fc8c589c5d213695f666c74d2c2c41cb7df719d172f37" }, "src/L1/OptimismPortal2.sol": { - "initCodeHash": "0xbbf753c1df3e4eabdd910124948afc5bfda7e219ece0f3a16804ea2129d512ed", - "sourceCodeHash": "0x78457c09e7e80b1e950f794999dcd5f8426dde850793fbaf9aba9718d29d9141" + "initCodeHash": "0x3c081d9769220a8b4a7538830905be3ebb058d0c01312bdbd9feae7f707a2866", + "sourceCodeHash": "0xc853bb1763d0b6b2008ebfa14148cd0840691f412873fed4ac7d203b7c69e7a7" }, "src/L1/ProtocolVersions.sol": { "initCodeHash": "0x72cd467e8bcf019c02675d72ab762e088bcc9cc0f1a4e9f587fa4589f7fdd1b8", diff --git a/packages/contracts-bedrock/snapshots/abi/OptimismPortal2.json b/packages/contracts-bedrock/snapshots/abi/OptimismPortal2.json index ae2d93b367e7..4855f7cf1797 100644 --- a/packages/contracts-bedrock/snapshots/abi/OptimismPortal2.json +++ b/packages/contracts-bedrock/snapshots/abi/OptimismPortal2.json @@ -474,19 +474,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "sauron", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "pure", - "type": "function" - }, { "inputs": [ { diff --git a/packages/contracts-bedrock/src/L1/OptimismPortal2.sol b/packages/contracts-bedrock/src/L1/OptimismPortal2.sol index 9543b755c167..f29e6e2d4789 100644 --- a/packages/contracts-bedrock/src/L1/OptimismPortal2.sol +++ b/packages/contracts-bedrock/src/L1/OptimismPortal2.sol @@ -31,10 +31,6 @@ contract OptimismPortal2 is Initializable, ResourceMetering, ISemver { uint64 timestamp; } - /// @dev Remove this in favor of a configurable sauron role. This should probably live in the superchain config, - /// but need to confirm with security. - address internal constant SAURON = address(0xdead); - /// @notice The delay between when a withdrawal transaction is proven and when it may be finalized. uint256 internal immutable PROOF_MATURITY_DELAY_SECONDS; @@ -183,14 +179,6 @@ contract OptimismPortal2 is Initializable, ResourceMetering, ISemver { return superchainConfig.guardian(); } - /// @notice Getter function for the address of the sauron role. - /// Public getter is legacy and will be removed in the future. Use `SuperchainConfig.sauron()` instead - /// once it's added. - /// @custom:deprecated - function sauron() public pure returns (address) { - return SAURON; - } - /// @notice Getter for the current paused status. function paused() public view returns (bool) { return superchainConfig.paused(); @@ -422,7 +410,7 @@ contract OptimismPortal2 is Initializable, ResourceMetering, ISemver { /// @notice Blacklists a dispute game. Should only be used in the event that a dispute game resolves incorrectly. /// @param _disputeGame Dispute game to blacklist. function blacklistDisputeGame(IDisputeGame _disputeGame) external { - require(msg.sender == SAURON, "OptimismPortal: only sauron can blacklist dispute games"); + require(msg.sender == guardian(), "OptimismPortal: only the guardian can blacklist dispute games"); disputeGameBlacklist[_disputeGame] = true; } @@ -430,7 +418,7 @@ contract OptimismPortal2 is Initializable, ResourceMetering, ISemver { /// incorrectly verified by the `MerkleTrie` verifier contract. /// @param _withdrawalHash Hash of the withdrawal transaction to delete from the `pendingWithdrawals` mapping. function deleteProvenWithdrawal(bytes32 _withdrawalHash) external { - require(msg.sender == SAURON, "OptimismPortal: only sauron can delete proven withdrawals"); + require(msg.sender == guardian(), "OptimismPortal: only the guardian can delete proven withdrawals"); delete provenWithdrawals[_withdrawalHash]; } @@ -438,7 +426,7 @@ contract OptimismPortal2 is Initializable, ResourceMetering, ISemver { /// depending on the new game's behavior. /// @param _gameType The game type to consult for output proposals. function setRespectedGameType(GameType _gameType) external { - require(msg.sender == SAURON, "OptimismPortal: only sauron can set the respected game type"); + require(msg.sender == guardian(), "OptimismPortal: only the guardian can set the respected game type"); respectedGameType = _gameType; } diff --git a/packages/contracts-bedrock/test/L1/OptimismPortal2.t.sol b/packages/contracts-bedrock/test/L1/OptimismPortal2.t.sol index 10b6744a9e80..4f8340043693 100644 --- a/packages/contracts-bedrock/test/L1/OptimismPortal2.t.sol +++ b/packages/contracts-bedrock/test/L1/OptimismPortal2.t.sol @@ -359,16 +359,16 @@ contract OptimismPortal2_FinalizeWithdrawal_Test is CommonTest { assertFalse(optimismPortal2.finalizedWithdrawals(Hashing.hashWithdrawal(_defaultTx))); } - /// @dev Tests that `deleteProvenWithdrawal` reverts when called by a non-SAURON. - function testFuzz_deleteProvenWithdrawal_onlySauron_reverts(address _act, bytes32 _wdHash) external { - vm.assume(_act != address(optimismPortal2.sauron())); + /// @dev Tests that `deleteProvenWithdrawal` reverts when called by a non-guardian. + function testFuzz_deleteProvenWithdrawal_onlyGuardian_reverts(address _act, bytes32 _wdHash) external { + vm.assume(_act != address(optimismPortal2.guardian())); - vm.expectRevert("OptimismPortal: only sauron can delete proven withdrawals"); + vm.expectRevert("OptimismPortal: only the guardian can delete proven withdrawals"); optimismPortal2.deleteProvenWithdrawal(_wdHash); } - /// @dev Tests that the SAURON role can delete any proven withdrawal. - function test_deleteProvenWithdrawal_sauron_succeeds() external { + /// @dev Tests that the guardian role can delete any proven withdrawal. + function test_deleteProvenWithdrawal_guardian_succeeds() external { vm.expectEmit(true, true, true, true); emit WithdrawalProven(_withdrawalHash, alice, bob); optimismPortal2.proveWithdrawalTransaction({ @@ -383,7 +383,7 @@ contract OptimismPortal2_FinalizeWithdrawal_Test is CommonTest { assertEq(timestamp, block.timestamp); // Delete the proven withdrawal. - vm.prank(optimismPortal2.sauron()); + vm.prank(optimismPortal2.guardian()); optimismPortal2.deleteProvenWithdrawal(_withdrawalHash); // Ensure the withdrawal has been deleted @@ -391,34 +391,34 @@ contract OptimismPortal2_FinalizeWithdrawal_Test is CommonTest { assertEq(timestamp, 0); } - /// @dev Tests that `deleteProvenWithdrawal` reverts when called by a non-SAURON. - function testFuzz_blacklist_onlySauron_reverts(address _act) external { - vm.assume(_act != address(optimismPortal2.sauron())); + /// @dev Tests that `deleteProvenWithdrawal` reverts when called by a non-guardian. + function testFuzz_blacklist_onlyGuardian_reverts(address _act) external { + vm.assume(_act != address(optimismPortal2.guardian())); - vm.expectRevert("OptimismPortal: only sauron can blacklist dispute games"); + vm.expectRevert("OptimismPortal: only the guardian can blacklist dispute games"); optimismPortal2.blacklistDisputeGame(IDisputeGame(address(0xdead))); } - /// @dev Tests that the SAURON role can blacklist any dispute game. - function testFuzz_blacklist_sauron_succeeds(address _addr) external { - vm.prank(optimismPortal2.sauron()); + /// @dev Tests that the guardian role can blacklist any dispute game. + function testFuzz_blacklist_guardian_succeeds(address _addr) external { + vm.prank(optimismPortal2.guardian()); optimismPortal2.blacklistDisputeGame(IDisputeGame(_addr)); assertTrue(optimismPortal2.disputeGameBlacklist(IDisputeGame(_addr))); } - /// @dev Tests that `setRespectedGameType` reverts when called by a non-SAURON. - function testFuzz_setRespectedGameType_onlySauron_reverts(address _act, GameType _ty) external { - vm.assume(_act != address(optimismPortal2.sauron())); + /// @dev Tests that `setRespectedGameType` reverts when called by a non-guardian. + function testFuzz_setRespectedGameType_onlyGuardian_reverts(address _act, GameType _ty) external { + vm.assume(_act != address(optimismPortal2.guardian())); vm.prank(_act); - vm.expectRevert("OptimismPortal: only sauron can set the respected game type"); + vm.expectRevert("OptimismPortal: only the guardian can set the respected game type"); optimismPortal2.setRespectedGameType(_ty); } - /// @dev Tests that the SAURON role can set the respected game type to anything they want. - function testFuzz_setRespectedGameType_sauron_succeeds(GameType _ty) external { - vm.prank(optimismPortal2.sauron()); + /// @dev Tests that the guardian role can set the respected game type to anything they want. + function testFuzz_setRespectedGameType_guardian_succeeds(GameType _ty) external { + vm.prank(optimismPortal2.guardian()); optimismPortal2.setRespectedGameType(_ty); assertEq(optimismPortal2.respectedGameType().raw(), _ty.raw()); @@ -528,7 +528,7 @@ contract OptimismPortal2_FinalizeWithdrawal_Test is CommonTest { }); // Blacklist the dispute dispute game. - vm.prank(optimismPortal2.sauron()); + vm.prank(optimismPortal2.guardian()); optimismPortal2.blacklistDisputeGame(IDisputeGame(address(game))); vm.expectEmit(true, true, true, true); @@ -579,7 +579,7 @@ contract OptimismPortal2_FinalizeWithdrawal_Test is CommonTest { }); // Update the respected game type to 0xbeef. - vm.prank(optimismPortal2.sauron()); + vm.prank(optimismPortal2.guardian()); optimismPortal2.setRespectedGameType(GameType.wrap(0xbeef)); // Create a new game and mock the game type as 0xbeef in the factory. @@ -964,7 +964,7 @@ contract OptimismPortal2_FinalizeWithdrawal_Test is CommonTest { game.resolveClaim(0); game.resolve(); - vm.prank(optimismPortal2.sauron()); + vm.prank(optimismPortal2.guardian()); optimismPortal2.blacklistDisputeGame(IDisputeGame(address(game))); vm.warp(block.timestamp + optimismPortal2.proofMaturityDelaySeconds() + 1); @@ -1022,7 +1022,7 @@ contract OptimismPortal2_FinalizeWithdrawal_Test is CommonTest { game.resolve(); // Change the respected game type in the portal. - vm.prank(optimismPortal2.sauron()); + vm.prank(optimismPortal2.guardian()); optimismPortal2.setRespectedGameType(GameType.wrap(0xFF)); vm.expectRevert("OptimismPortal: invalid game type"); diff --git a/packages/contracts-bedrock/test/Specs.t.sol b/packages/contracts-bedrock/test/Specs.t.sol index a2dd9d170709..97ae15a10d31 100644 --- a/packages/contracts-bedrock/test/Specs.t.sol +++ b/packages/contracts-bedrock/test/Specs.t.sol @@ -32,7 +32,6 @@ contract Specification_Test is CommonTest { CHALLENGER, SYSTEMCONFIGOWNER, GUARDIAN, - SAURON, MESSENGER, L1PROXYADMINOWNER, GOVERNANCETOKENOWNER, @@ -236,7 +235,6 @@ contract Specification_Test is CommonTest { }); _addSpec({ _name: "OptimismPortal2", _sel: _getSel("finalizedWithdrawals(bytes32)") }); _addSpec({ _name: "OptimismPortal2", _sel: _getSel("guardian()") }); - _addSpec({ _name: "OptimismPortal2", _sel: _getSel("sauron()") }); _addSpec({ _name: "OptimismPortal2", _sel: _getSel("initialize(address,address,address)") }); _addSpec({ _name: "OptimismPortal2", _sel: _getSel("l2Sender()") }); _addSpec({ _name: "OptimismPortal2", _sel: _getSel("minimumGasLimit(uint64)") }); @@ -250,9 +248,9 @@ contract Specification_Test is CommonTest { _addSpec({ _name: "OptimismPortal2", _sel: _getSel("disputeGameFactory()") }); _addSpec({ _name: "OptimismPortal2", _sel: _getSel("disputeGameBlacklist(address)") }); _addSpec({ _name: "OptimismPortal2", _sel: _getSel("respectedGameType()") }); - _addSpec({ _name: "OptimismPortal2", _sel: _getSel("blacklistDisputeGame(address)"), _auth: Role.SAURON }); - _addSpec({ _name: "OptimismPortal2", _sel: _getSel("deleteProvenWithdrawal(bytes32)"), _auth: Role.SAURON }); - _addSpec({ _name: "OptimismPortal2", _sel: _getSel("setRespectedGameType(uint32)"), _auth: Role.SAURON }); + _addSpec({ _name: "OptimismPortal2", _sel: _getSel("blacklistDisputeGame(address)"), _auth: Role.GUARDIAN }); + _addSpec({ _name: "OptimismPortal2", _sel: _getSel("deleteProvenWithdrawal(bytes32)"), _auth: Role.GUARDIAN }); + _addSpec({ _name: "OptimismPortal2", _sel: _getSel("setRespectedGameType(uint32)"), _auth: Role.GUARDIAN }); _addSpec({ _name: "OptimismPortal2", _sel: _getSel("checkWithdrawal(bytes32)") }); _addSpec({ _name: "OptimismPortal2", _sel: _getSel("proofMaturityDelaySeconds()") }); _addSpec({ _name: "OptimismPortal2", _sel: _getSel("disputeGameFinalityDelaySeconds()") });