@tokamak-network/thanos-contracts
Version:
576 lines • 148 kB
JSON
{
"abi": [
{
"type": "constructor",
"inputs": [],
"stateMutability": "nonpayable"
},
{
"type": "receive",
"stateMutability": "payable"
},
{
"type": "function",
"name": "GUARDIAN",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "L2_ORACLE",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract L2OutputOracle"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "SYSTEM_CONFIG",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract SystemConfig"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "depositTransaction",
"inputs": [
{
"name": "_to",
"type": "address",
"internalType": "address"
},
{
"name": "_mint",
"type": "uint256",
"internalType": "uint256"
},
{
"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": "nonpayable"
},
{
"type": "function",
"name": "depositedAmount",
"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": "struct Types.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": "_l2Oracle",
"type": "address",
"internalType": "contract L2OutputOracle"
},
{
"name": "_systemConfig",
"type": "address",
"internalType": "contract SystemConfig"
},
{
"name": "_superchainConfig",
"type": "address",
"internalType": "contract SuperchainConfig"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "isOutputFinalized",
"inputs": [
{
"name": "_l2OutputIndex",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "l2Oracle",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract L2OutputOracle"
}
],
"stateMutability": "view"
},
{
"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": "nativeTokenAddress",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"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": "paused_",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "proveWithdrawalTransaction",
"inputs": [
{
"name": "_tx",
"type": "tuple",
"internalType": "struct Types.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": "_l2OutputIndex",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "_outputRootProof",
"type": "tuple",
"internalType": "struct Types.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": "outputRoot",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "timestamp",
"type": "uint128",
"internalType": "uint128"
},
{
"name": "l2OutputIndex",
"type": "uint128",
"internalType": "uint128"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "spacer_native_token_address",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "superchainConfig",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract SuperchainConfig"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "systemConfig",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract SystemConfig"
}
],
"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
}
],
"address": "0x5a6E54511b6BaFAE6381e2bbcb62A00DFb665eE9",
"args": [],
"bytecode": "0x60806040523480156200001157600080fd5b50620000206000808062000026565b62000227565b600054600390610100900460ff1615801562000049575060005460ff8083169116105b620000b25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100908117909155603680546001600160a01b038088166001600160a01b03199283161790925560378054878416921691909117905560358054858316909302610100600160a81b031990931692909217909155603254166200013357603280546001600160a01b03191661dead1790555b6200013d62000184565b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b600054610100900460ff16620001f15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401620000a9565b60408051606081018252633b9aca0080825260006020830152436001600160401b031691909201819052600160c01b0217600155565b615cdf80620002376000396000f3fe6080604052600436106101835760003560e01c80638b4c40b0116100d6578063b7d823741161007f578063cff0ab9611610059578063cff0ab9614610514578063e965084c146105b5578063f04987501461064157600080fd5b8063b7d82374146104a7578063b9e55958146104d4578063c0c53b8b146104f457600080fd5b80639bf62d82116100b05780639bf62d8214610411578063a14238e71461043e578063a35d99df1461046e57600080fd5b80638b4c40b0146102fd5780638c3152e9146103c45780639b5f694a146103e457600080fd5b80634870496f116101385780635c975abb116101125780635c975abb1461036a5780636dbffb781461038f578063724c184c146103af57600080fd5b80634870496f146102dd5780634d0047ee146102ff57806354fd4d501461031457600080fd5b806333d7e2bd1161016957806333d7e2bd1461026957806335e80ab314610296578063452a9320146102c857600080fd5b80621c2ff6146101f45780631d01364c1461024557600080fd5b366101ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4f6e6c7920616c6c6f77206e617469766520746f6b656e00000000000000000060448201526064015b60405180910390fd5b600080fd5b34801561020057600080fd5b5060365473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561025157600080fd5b5061025b60395481565b60405190815260200161023c565b34801561027557600080fd5b5060375461021b9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102a257600080fd5b5060355461021b90610100900473ffffffffffffffffffffffffffffffffffffffff1681565b3480156102d457600080fd5b5061021b61066c565b3480156102e957600080fd5b506102fd6102f836600461525f565b610704565b005b34801561030b57600080fd5b5061021b610d32565b34801561032057600080fd5b5061035d6040518060400160405280600581526020017f322e352e3000000000000000000000000000000000000000000000000000000081525081565b60405161023c91906153b1565b34801561037657600080fd5b5061037f610da2565b604051901515815260200161023c565b34801561039b57600080fd5b5061037f6103aa3660046153c4565b610e35565b3480156103bb57600080fd5b5061021b610ef0565b3480156103d057600080fd5b506102fd6103df3660046153dd565b610efa565b3480156103f057600080fd5b5060365461021b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561041d57600080fd5b5060325461021b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561044a57600080fd5b5061037f6104593660046153c4565b60336020526000908152604090205460ff1681565b34801561047a57600080fd5b5061048e61048936600461542f565b611b05565b60405167ffffffffffffffff909116815260200161023c565b3480156104b357600080fd5b5060385461021b9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104e057600080fd5b506102fd6104ef366004615458565b611b1e565b34801561050057600080fd5b506102fd61050f366004615514565b611b37565b34801561052057600080fd5b5060015461057c906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff928316602085015291169082015260600161023c565b3480156105c157600080fd5b506106136105d03660046153c4565b603460205260009081526040902080546001909101546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041683565b604080519384526fffffffffffffffffffffffffffffffff928316602085015291169082015260600161023c565b34801561064d57600080fd5b5060375473ffffffffffffffffffffffffffffffffffffffff1661021b565b6000603560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663452a93206040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ff919061555f565b905090565b61070c610da2565b15610773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f7074696d69736d506f7274616c3a207061757365640000000000000000000060448201526064016101e6565b3073ffffffffffffffffffffffffffffffffffffffff16856040015173ffffffffffffffffffffffffffffffffffffffff1603610832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a20796f752063616e6e6f742073656e642060448201527f6d6573736167657320746f2074686520706f7274616c20636f6e74726163740060648201526084016101e6565b6036546040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810186905260009173ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa1580156108a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c6919061559c565b5190506108e06108db36869003860186615601565b611d42565b811461096e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f7074696d69736d506f7274616c3a20696e76616c6964206f7574707574207260448201527f6f6f742070726f6f66000000000000000000000000000000000000000000000060648201526084016101e6565b600061097987611d9e565b6000818152603460209081526040918290208251606081018452815481526001909101546fffffffffffffffffffffffffffffffff8082169383018490527001000000000000000000000000000000009091041692810192909252919250901580610a8f5750805160365460408084015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff909116600482015273ffffffffffffffffffffffffffffffffffffffff9091169063a25ae55790602401606060405180830381865afa158015610a67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8b919061559c565b5114155b610b1b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173682060448201527f68617320616c7265616479206265656e2070726f76656e00000000000000000060648201526084016101e6565b60408051602081018490526000918101829052606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083018190529250610be49101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152600182527f0100000000000000000000000000000000000000000000000000000000000000602083015290610bda888a615667565b8a60400135611dce565b610c70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a20696e76616c696420776974686472617760448201527f616c20696e636c7573696f6e2070726f6f66000000000000000000000000000060648201526084016101e6565b604080516060810182528581526fffffffffffffffffffffffffffffffff42811660208084019182528c831684860190815260008981526034835286812095518655925190518416700100000000000000000000000000000000029316929092176001909301929092558b830151908c0151925173ffffffffffffffffffffffffffffffffffffffff918216939091169186917f67a6208cfcc0801d50f6cbe764733f4fddf66ac0b04442061a8a8c0cb6b63f629190a4505050505050505050565b603754604080517f4d0047ee000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691634d0047ee9160048083019260209291908290030181865afa1580156106db573d6000803e3d6000fd5b6000603560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e11573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ff91906156eb565b6036546040517fa25ae55700000000000000000000000000000000000000000000000000000000815260048101839052600091610eea9173ffffffffffffffffffffffffffffffffffffffff9091169063a25ae55790602401606060405180830381865afa158015610eab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecf919061559c565b602001516fffffffffffffffffffffffffffffffff16611df2565b92915050565b60006106ff61066c565b610f02610da2565b15610f69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f7074696d69736d506f7274616c3a207061757365640000000000000000000060448201526064016101e6565b60325473ffffffffffffffffffffffffffffffffffffffff1661dead14611012576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a2063616e206f6e6c79207472696767657260448201527f206f6e65207769746864726177616c20706572207472616e73616374696f6e0060648201526084016101e6565b600061101d82611d9e565b60008181526034602090815260408083208151606081018352815481526001909101546fffffffffffffffffffffffffffffffff80821694830185905270010000000000000000000000000000000090910416918101919091529293509003611108576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206e60448201527f6f74206265656e2070726f76656e20796574000000000000000000000000000060648201526084016101e6565b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663887862726040518163ffffffff1660e01b8152600401602060405180830381865afa158015611175573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111999190615708565b81602001516fffffffffffffffffffffffffffffffff161015611264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604b60248201527f4f7074696d69736d506f7274616c3a207769746864726177616c2074696d657360448201527f74616d70206c657373207468616e204c32204f7261636c65207374617274696e60648201527f672074696d657374616d70000000000000000000000000000000000000000000608482015260a4016101e6565b61128381602001516fffffffffffffffffffffffffffffffff16611df2565b611335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604560248201527f4f7074696d69736d506f7274616c3a2070726f76656e2077697468647261776160448201527f6c2066696e616c697a6174696f6e20706572696f6420686173206e6f7420656c60648201527f6170736564000000000000000000000000000000000000000000000000000000608482015260a4016101e6565b60365460408281015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff909116600482015260009173ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa1580156113bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e0919061559c565b825181519192501461149a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604960248201527f4f7074696d69736d506f7274616c3a206f757470757420726f6f742070726f7660448201527f656e206973206e6f74207468652073616d652061732063757272656e74206f7560648201527f7470757420726f6f740000000000000000000000000000000000000000000000608482015260a4016101e6565b6114b981602001516fffffffffffffffffffffffffffffffff16611df2565b61156b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f4f7074696d69736d506f7274616c3a206f75747075742070726f706f73616c2060448201527f66696e616c697a6174696f6e20706572696f6420686173206e6f7420656c617060648201527f7365640000000000000000000000000000000000000000000000000000000000608482015260a4016101e6565b60008381526033602052604090205460ff161561160a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206160448201527f6c7265616479206265656e2066696e616c697a6564000000000000000000000060648201526084016101e6565b603754604080517f4d0047ee000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691634d0047ee9160048083019260209291908290030181865afa15801561167a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169e919061555f565b90508073ffffffffffffffffffffffffffffffffffffffff16856040015173ffffffffffffffffffffffffffffffffffffffff1603611785576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f4f7074696d69736d20506f7274616c3a2063616e6e6f74206d616b652061206460448201527f69726563742063616c6c20746f206e617469766520746f6b656e20636f6e747260648201527f6163740000000000000000000000000000000000000000000000000000000000608482015260a4016101e6565b600084815260336020908152604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558501516032805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff00000000000000000000000000000000000000009092169190911790556060850151156119da5760408581015190517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff808316602483015283169163095ea7b391839063dd62ed3e90604401602060405180830381865afa158015611891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b59190615708565b88606001516118c49190615750565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af1158015611934573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195891906156eb565b6119be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4f7074696d69736d20617070726f7665206661696c656400000000000000000060448201526064016101e6565b8460600151603960008282546119d49190615768565b90915550505b60006119f58660400151876080015160008960a00151611e98565b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905560405190915085907fdb5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1b90611a5a90841515815260200190565b60405180910390a280158015611a705750326001145b15611afd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f7074696d69736d506f7274616c3a207769746864726177616c206661696c6560448201527f640000000000000000000000000000000000000000000000000000000000000060648201526084016101e6565b505050505050565b6000611b1282601061577f565b610eea906152086157af565b611b2e3388888888888888611ef6565b50505050505050565b600054600390610100900460ff16158015611b59575060005460ff8083169116105b611be5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016101e6565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001660ff8316176101009081179091556036805473ffffffffffffffffffffffffffffffffffffffff8088167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255603780548784169216919091179055603580548583169093027fffffffffffffffffffffff0000000000000000000000000000000000000000ff9093169290921790915560325416611cd657603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead1790555b611cde61227b565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b60008160000151826020015183604001518460600151604051602001611d81949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b80516020808301516040808501516060860151608087015160a08801519351600097611d819790969591016157db565b600080611dda8661235e565b9050611de881868686612390565b9695505050505050565b603654604080517ff4daa291000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163f4daa2919160048083019260209291908290030181865afa158015611e62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e869190615708565b611e909083615750565b421192915050565b6000806000611ea88660006123c0565b905080611ede576308c379a06000526020805278185361666543616c6c3a204e6f7420656e6f756768206761736058526064601cfd5b600080855160208701888b5af1979650505050505050565b8360005a90506000603760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634d0047ee6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f8f919061555f565b90508815611fd157611fb973ffffffffffffffffffffffffffffffffffffffff82168c308c6123de565b8860396000828254611fcb9190615750565b90915550505b851561207d5773ffffffffffffffffffffffffffffffffffffffff8a161561207d57604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f4f7074696d69736d506f7274616c3a206d7573742073656e6420746f2061646460448201527f72657373283029207768656e206372656174696e67206120636f6e747261637460648201526084016101e6565b61208684611b05565b67ffffffffffffffff168767ffffffffffffffff161015612129576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f4f7074696d69736d506f7274616c3a20676173206c696d697420746f6f20736d60448201527f616c6c000000000000000000000000000000000000000000000000000000000060648201526084016101e6565b6201d4c0841115612196576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4f7074696d69736d506f7274616c3a206461746120746f6f206c61726765000060448201526064016101e6565b8a73ffffffffffffffffffffffffffffffffffffffff811632146121cd57507311110000000000000000000000000000000011118b015b60008a8a8a8a8a8a6040516020016121ea96959493929190615832565b604051602081830303815290604052905060008c73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c328460405161225a91906153b1565b60405180910390a450505061226f8282612479565b50505050505050505050565b600054610100900460ff16612312576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016101e6565b60408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b6060818051906020012060405160200161237a91815260200190565b6040516020818303038152906040529050919050565b60006123b7846123a18786866127a6565b8051602091820120825192909101919091201490565b95945050505050565b600080603f83619c4001026040850201603f5a021015949350505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261247390859061322b565b50505050565b6001546000906124af907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1643615768565b905060006124bb61333c565b90506000816020015160ff16826000015163ffffffff166124dc91906158ba565b9050821561261357600154600090612513908390700100000000000000000000000000000000900467ffffffffffffffff16615922565b90506000836040015160ff168361252a9190615996565b60015461254a9084906fffffffffffffffffffffffffffffffff16615996565b61255491906158ba565b6001549091506000906125a59061257e9084906fffffffffffffffffffffffffffffffff16615a52565b866060015163ffffffff168760a001516fffffffffffffffffffffffffffffffff166133fd565b905060018611156125d4576125d161257e82876040015160ff1660018a6125cc9190615768565b61341a565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b60018054869190601090612646908490700100000000000000000000000000000000900467ffffffffffffffff166157af565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550816000015163ffffffff16600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff161315612729576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5265736f757263654d65746572696e673a2063616e6e6f7420627579206d6f7260448201527f6520676173207468616e20617661696c61626c6520676173206c696d6974000060648201526084016101e6565b600154600090612755906fffffffffffffffffffffffffffffffff1667ffffffffffffffff8816615ac6565b9050600061276748633b9aca0061346f565b6127719083615b03565b905060005a6127809088615768565b90508082111561279c5761279c6127978284615768565b613486565b5050505050505050565b60606000845111612813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d65726b6c65547269653a20656d707479206b6579000000000000000000000060448201526064016101e6565b600061281e846134af565b9050600061282b8661359b565b905060008460405160200161284291815260200190565b60405160208183030381529060405290506000805b845181101561319b57600085828151811061287457612874615b17565b60200260200101519050845183111561290f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201527f74616c206b6579206c656e67746800000000000000000000000000000000000060648201526084016101e6565b826000036129c8578051805160209182012060405161295d9261293792910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6129c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016101e6565b612b1f565b805151602011612a7e57805180516020918201206040516129f29261293792910190815260200190565b6129c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e60448201527f616c20686173680000000000000000000000000000000000000000000000000060648201526084016101e6565b805184516020808701919091208251919092012014612b1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f6460448201527f652068617368000000000000000000000000000000000000000000000000000060648201526084016101e6565b612b2b60106001615750565b81602001515103612d075784518303612c9f57612b658160200151601081518110612b5857612b58615b17565b60200260200101516135fe565b96506000875111612bf8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016101e6565b60018651612c069190615768565b8214612c94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016101e6565b505050505050613224565b6000858481518110612cb357612cb3615b17565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110612cde57612cde615b17565b60200260200101519050612cf18161375e565b9550612cfe600186615750565b94505050613188565b600281602001515103613100576000612d1f82613783565b9050600081600081518110612d3657612d36615b17565b016020015160f81c90506000612d4d600283615b46565b612d58906002615b68565b90506000612d69848360ff166137a7565b90506000612d778a896137a7565b90506000612d8583836137dd565b905080835114612e17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016101e6565b60ff851660021480612e2c575060ff85166003145b1561301b5780825114612ec1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016101e6565b612edb8760200151600181518110612b5857612b58615b17565b9c5060008d5111612f6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016101e6565b60018c51612f7c9190615768565b881461300a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016101e6565b505050505050505050505050613224565b60ff8516158061302e575060ff85166001145b1561306d5761305a876020015160018151811061304d5761304d615b17565b602002602001015161375e565b9950613066818a615750565b98506130f5565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f6465207769746860448201527f20616e20756e6b6e6f776e20707265666978000000000000000000000000000060648201526084016101e6565b505050505050613188565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e70617273656160448201527f626c65206e6f646500000000000000000000000000000000000000000000000060648201526084016101e6565b508061319381615b8b565b915050612857565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c6560448201527f6d656e747300000000000000000000000000000000000000000000000000000060648201526084016101e6565b9392505050565b600061328d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166138919092919063ffffffff16565b80519091501561333757808060200190518101906132ab91906156eb565b613337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016101e6565b505050565b6040805160c08082018352600080835260208301819052828401819052606083018190526080830181905260a083015260375483517fcc731b020000000000000000000000000000000000000000000000000000000081529351929373ffffffffffffffffffffffffffffffffffffffff9091169263cc731b02926004808401939192918290030181865afa1580156133d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ff9190615be8565b600061341261340c85856138a0565b836138b0565b949350505050565b6000670de0b6b3a764000061345b61343285836158ba565b61344490670de0b6b3a7640000615922565b61345685670de0b6b3a7640000615996565b6138bf565b6134659086615996565b61341291906158ba565b60008183101561347f5781613224565b5090919050565b6000805a90505b825a6134999083615768565b1015613337576134a882615b8b565b915061348d565b80516060908067ffffffffffffffff8111156134cd576134cd61507f565b60405190808252806020026020018201604052801561351257816020015b60408051808201909152606080825260208201528152602001906001900390816134eb5790505b50915060005b8181101561359457604051806040016040528085838151811061353d5761353d615b17565b6020026020010151815260200161356c86848151811061355f5761355f615b17565b60200260200101516138f0565b81525083828151811061358157613581615b17565b6020908102919091010152600101613518565b5050919050565b606080604051905082518060011b603f8101601f1916830160405280835250602084016020830160005b838110156135f3578060011b82018184015160001a8060041c8253600f8116600183015350506001016135c5565b509295945050505050565b6060600080600061360e85613903565b91945092509050600081600181111561362957613629615c87565b146136b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016101e6565b6136c08284615750565b85511461374f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527f616e20696e76616c69642072656d61696e64657200000000000000000000000060648201526084016101e6565b6123b785602001518484614370565b6060602082600001511061377a57613775826135fe565b610eea565b610eea82614404565b6060610eea6137a28360200151600081518110612b5857612b58615b17565b61359b565b6060825182106137c65750604080516020810190915260008152610eea565b61322483838486516137d89190615768565b61441a565b60008082518451106137f05782516137f3565b83515b90505b808210801561387a575082828151811061381257613812615b17565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191684838151811061385157613851615b17565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b1561388a578160010191506137f6565b5092915050565b606061341284846000856145f2565b60008183121561347f5781613224565b600081831261347f5781613224565b6000613224670de0b6b3a7640000836138d786614788565b6138e19190615996565b6138eb91906158ba565b6149cc565b6060610eea6138fe83614c0b565b614cf4565b6000806000808460000151116139c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a4016101e6565b6020840151805160001a607f81116139e6576000600160009450945094505050614369565b60b78111613bf45760006139fb608083615768565b905080876000015111613ab6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604e60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201527f2873686f727420737472696e6729000000000000000000000000000000000000608482015260a4016101e6565b6001838101517fff00000000000000000000000000000000000000000000000000000000000000169082141580613b2f57507f80000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610155b613be1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201527f73686f727420737472696e672900000000000000000000000000000000000000608482015260a4016101e6565b5060019550935060009250614369915050565b60bf8111613f42576000613c0960b783615768565b905080876000015111613cc4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605160248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527f67746820286c6f6e6720737472696e6729000000000000000000000000000000608482015260a4016101e6565b60018301517fff00000000000000000000000000000000000000000000000000000000000000166000819003613da2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e6720737472696e672900000000000000000000000000000000000000000000608482015260a4016101e6565b600184015160088302610100031c60378111613e66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f20737472696e6729000000000000000000000000000000000000000000000000608482015260a4016101e6565b613e708184615750565b895111613f25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604c60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e6720737472696e67290000000000000000000000000000000000000000608482015260a4016101e6565b613f30836001615750565b97509550600094506143699350505050565b60f78111614023576000613f5760c083615768565b905080876000015111614012576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e206c697374206c656e67746820287360648201527f686f7274206c6973742900000000000000000000000000000000000000000000608482015260a4016101e6565b600195509350849250614369915050565b600061403060f783615768565b9050808760000151116140eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201527f6820286c6f6e67206c6973742900000000000000000000000000000000000000608482015260a4016101e6565b60018301517fff000000000000000000000000000000000000000000000000000000000000001660008190036141c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e67206c69737429000000000000000000000000000000000000000000000000608482015260a4016101e6565b600184015160088302610100031c6037811161428d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604660248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f206c697374290000000000000000000000000000000000000000000000000000608482015260a4016101e6565b6142978184615750565b89511161434c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e67206c6973742900000000000000000000000000000000000000000000608482015260a4016101e6565b614357836001615750565b97509550600194506143699350505050565b9193909250565b60608167ffffffffffffffff81111561438b5761438b61507f565b6040519080825280601f01601f1916602001820160405280156143b5576020820181803683370190505b50905081156132245760006143ca8486615750565b90506020820160005b848110156143eb5782810151828201526020016143d3565b848111156143fa576000858301525b5050509392505050565b6060610eea826020015160008460000151614370565b60608182601f011015614489576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f7700000000000000000000000000000000000060448201526064016101e6565b8282840110156144f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f7700000000000000000000000000000000000060448201526064016101e6565b81830184511015614562576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e647300000000000000000000000000000060448201526064016101e6565b60608215801561458157604051915060008252602082016040526145e9565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156145ba5780518352602092830192016145a2565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b606082471015614684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016101e6565b73ffffffffffffffffffffffffffffffffffffffff85163b614702576040517f08c379a0000000000000000000000000000000000000