0 txs
24.6k calls
constructor
No constructor.
functions
committee
viewfunction committee() view returns (address)
isTransferProcessed
viewfunction isTransferProcessed(uint64 nonce) view returns (bool isProcessed)
limiter
viewfunction limiter() view returns (address)
nonces
viewfunction nonces(uint8 messageType) view returns (uint64 nonce)
paused
viewfunction paused() view returns (bool)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
vault
viewfunction vault() view returns (address)
bridgeERC20
nonpayablefunction bridgeERC20(uint8 tokenID, uint256 amount, bytes recipientAddress, uint8 destinationChainID)
bridgeETH
payablefunction bridgeETH(bytes recipientAddress, uint8 destinationChainID) payable
executeEmergencyOpWithSignatures
nonpayablefunction executeEmergencyOpWithSignatures(bytes[] signatures, tuple message)
initialize
nonpayablefunction initialize(address _committee, address _vault, address _limiter)
transferBridgedTokensWithSignatures
nonpayablefunction transferBridgedTokensWithSignatures(bytes[] signatures, tuple message)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
upgradeWithSignatures
nonpayablefunction upgradeWithSignatures(bytes[] signatures, tuple message)
events
ContractUpgraded
event ContractUpgraded(uint256 nonce, address proxy, address implementation)
EmergencyOperation
event EmergencyOperation(uint64 nonce, bool paused)
Initialized
event Initialized(uint64 version)
Paused
event Paused(address account)
TokensClaimed
event TokensClaimed(uint8 indexed sourceChainID, uint64 indexed nonce, uint8 indexed destinationChainID, uint8 tokenID, uint256 erc20AdjustedAmount, bytes senderAddress, address recipientAddress)
TokensDeposited
event TokensDeposited(uint8 indexed sourceChainID, uint64 indexed nonce, uint8 indexed destinationChainID, uint8 tokenID, uint64 suiAdjustedAmount, address senderAddress, bytes recipientAddress)
Unpaused
event Unpaused(address account)
Upgraded
event Upgraded(address indexed implementation)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
EnforcedPause
error EnforcedPause()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ExpectedPause
error ExpectedPause()
FailedInnerCall
error FailedInnerCall()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051613aca6200010460003960008181611fe50152818161200e01526121be0152613aca6000f3fe6080604052600436106100e85760003560e01c80639449ebd21161008a578063c0c53b8b11610059578063c0c53b8b146102c6578063d864e740146102e6578063fa72a6d014610306578063fbfa77cf1461032657600080fd5b80639449ebd214610235578063a6f740f614610248578063ad3cb1cc14610268578063beb0d55c146102a657600080fd5b806352d1902d116100c657806352d1902d146101755780635458ea9e146101985780635c975abb146101d857806374b87f67146101fd57600080fd5b8063212afaff146100ed5780634f1ef2861461010f5780635035bda214610122575b600080fd5b3480156100f957600080fd5b5061010d610108366004613019565b610346565b005b61010d61011d366004613099565b610a12565b34801561012e57600080fd5b5061015861013d3660046130e8565b6001602052600090815260409020546001600160401b031681565b6040516001600160401b0390911681526020015b60405180910390f35b34801561018157600080fd5b5061018a610a31565b60405190815260200161016c565b3480156101a457600080fd5b506101c86101b3366004613121565b60356020526000908152604090205460ff1681565b604051901515815260200161016c565b3480156101e457600080fd5b50600080516020613a558339815191525460ff166101c8565b34801561020957600080fd5b5060375461021d906001600160a01b031681565b6040516001600160a01b03909116815260200161016c565b61010d61024336600461313c565b610a4e565b34801561025457600080fd5b5061010d610263366004613243565b610f2f565b34801561027457600080fd5b50610299604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161016c919061336e565b3480156102b257600080fd5b5061010d6102c1366004613243565b6111eb565b3480156102d257600080fd5b5061010d6102e1366004613381565b611952565b3480156102f257600080fd5b5060005461021d906001600160a01b031681565b34801561031257600080fd5b5061010d610321366004613243565b611a9a565b34801561033257600080fd5b5060365461021d906001600160a01b031681565b61034e611dd7565b610356611e0a565b600054604080516379502c5560e01b8152905183926001600160a01b0316916379502c559160048083019260209291908290030181865afa15801561039f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c391906133cc565b604051637320953360e01b815260ff831660048201526001600160a01b039190911690637320953390602401602060405180830381865afa15801561040c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043091906133e9565b6104555760405162461bcd60e51b815260040161044c9061340b565b60405180910390fd5b82516020146104765760405162461bcd60e51b815260040161044c90613450565b60008060009054906101000a90046001600160a01b03166001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ee91906133cc565b6040516321c65a3560e11b815260ff881660048201529091506001600160a01b0382169063438cb46a90602401602060405180830381865afa158015610538573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055c91906133e9565b6105a85760405162461bcd60e51b815260206004820152601c60248201527f5375694272696467653a20556e737570706f7274656420746f6b656e00000000604482015260640161044c565b60405163e532488960e01b815260ff871660048201526000906001600160a01b0383169063e532488990602401602060405180830381865afa1580156105f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061691906133cc565b604051636eb1769f60e11b815233600482015230602482015290915086906001600160a01b0383169063dd62ed3e90604401602060405180830381865afa158015610665573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610689919061349b565b10156106e15760405162461bcd60e51b815260206004820152602160248201527f5375694272696467653a20496e73756666696369656e7420616c6c6f77616e636044820152606560f81b606482015260840161044c565b6036546040516370a0823160e01b81526001600160a01b0391821660048201526000918316906370a0823190602401602060405180830381865afa15801561072d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610751919061349b565b60365490915061076e90839033906001600160a01b03168a611e42565b6036546040516370a0823160e01b81526001600160a01b0391821660048201526000918416906370a0823190602401602060405180830381865afa1580156107ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107de919061349b565b905060006107ec83836134ca565b905060006108c6856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610831573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085591906134dd565b6040516371ceee4f60e01b815260ff8e1660048201526001600160a01b038916906371ceee4f90602401602060405180830381865afa15801561089c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c091906134dd565b84611e9c565b6000805260016020908152600080516020613a15833981519152546040805163adc879e960e01b8152905193945060ff8c16936001600160401b03909216926001600160a01b038b169263adc879e99260048082019392918290030181865afa158015610937573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095b91906134dd565b60ff167fa0f1d54820817ede8517e70a3d0a9197c015471c5360d2119b759f0359858ce68e85338f60405161099394939291906134fa565b60405180910390a460008080526001602052600080516020613a1583398151915280546001600160401b0316916109c983613536565b91906101000a8154816001600160401b0302191690836001600160401b031602179055505050505050505050610a0c6001600080516020613a7583398151915255565b50505050565b610a1a611fda565b610a238261207f565b610a2d82826120f1565b5050565b6000610a3b6121b3565b50600080516020613a3583398151915290565b610a56611dd7565b610a5e611e0a565b600054604080516379502c5560e01b8152905183926001600160a01b0316916379502c559160048083019260209291908290030181865afa158015610aa7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acb91906133cc565b604051637320953360e01b815260ff831660048201526001600160a01b039190911690637320953390602401602060405180830381865afa158015610b14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3891906133e9565b610b545760405162461bcd60e51b815260040161044c9061340b565b8251602014610b755760405162461bcd60e51b815260040161044c90613450565b60365460405134916000916001600160a01b039091169083908381818185875af1925050503d8060008114610bc6576040519150601f19603f3d011682016040523d82523d6000602084013e610bcb565b606091505b5050905080610c2f5760405162461bcd60e51b815260206004820152602a60248201527f5375694272696467653a204661696c656420746f207472616e7366657220455460448201526912081d1bc81d985d5b1d60b21b606482015260840161044c565b60008060009054906101000a90046001600160a01b03166001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca791906133cc565b60405163e532488960e01b815260026004820152909150600090610dea906001600160a01b0384169063e532488990602401602060405180830381865afa158015610cf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1a91906133cc565b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7b91906134dd565b6040516371ceee4f60e01b8152600260048201526001600160a01b038516906371ceee4f90602401602060405180830381865afa158015610dc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de491906134dd565b86611e9c565b6000805260016020908152600080516020613a15833981519152546040805163adc879e960e01b8152905193945060ff8a16936001600160401b03909216926001600160a01b0387169263adc879e99260048082019392918290030181865afa158015610e5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7f91906134dd565b60ff167fa0f1d54820817ede8517e70a3d0a9197c015471c5360d2119b759f0359858ce6600285338d604051610eb894939291906134fa565b60405180910390a460008080526001602052600080516020613a1583398151915280546001600160401b031691610eee83613536565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505050505050610a2d6001600080516020613a7583398151915255565b610f37611e0a565b80518190839060029060ff168114610f615760405162461bcd60e51b815260040161044c9061355c565b600054604051633c62252760e21b81526001600160a01b039091169063f188949c90610f9390859087906004016135a8565b60006040518083038186803b158015610fab57600080fd5b505afa158015610fbf573d6000803e3d6000fd5b5050505060ff81161561115c5760008054906101000a90046001600160a01b03166001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561101d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104191906133cc565b6001600160a01b031663adc879e96040518163ffffffff1660e01b8152600401602060405180830381865afa15801561107e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a291906134dd565b60ff16836060015160ff16146110ca5760405162461bcd60e51b815260040161044c90613656565b825160ff166000908152600160205260409081902054908401516001600160401b0390811691161461110e5760405162461bcd60e51b815260040161044c90613697565b825160ff16600090815260016020526040812080546001600160401b03169161113683613536565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b600061116b85608001516121fc565b905080156111805761117b6122d5565b611188565b611188612338565b60408086015181516001600160401b03909116815282151560208201527f0838fecaac9057733ed7f9bb6e8ecfacf0d9c68d2f9b06e84f8c7f6098814bfb910160405180910390a150505050610a2d6001600080516020613a7583398151915255565b6111f3611e0a565b80518190839060009060ff161561121c5760405162461bcd60e51b815260040161044c9061355c565b600054604051633c62252760e21b81526001600160a01b039091169063f188949c9061124e90859087906004016135a8565b60006040518083038186803b15801561126657600080fd5b505afa15801561127a573d6000803e3d6000fd5b5050505060ff8116156114175760008054906101000a90046001600160a01b03166001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112fc91906133cc565b6001600160a01b031663adc879e96040518163ffffffff1660e01b8152600401602060405180830381865afa158015611339573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135d91906134dd565b60ff16836060015160ff16146113855760405162461bcd60e51b815260040161044c90613656565b825160ff166000908152600160205260409081902054908401516001600160401b039081169116146113c95760405162461bcd60e51b815260040161044c90613697565b825160ff16600090815260016020526040812080546001600160401b0316916113f183613536565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b836060015160008054906101000a90046001600160a01b03166001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561146d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149191906133cc565b604051637320953360e01b815260ff831660048201526001600160a01b039190911690637320953390602401602060405180830381865afa1580156114da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fe91906133e9565b61151a5760405162461bcd60e51b815260040161044c9061340b565b6040808601516001600160401b031660009081526035602052205460ff16156115915760405162461bcd60e51b8152602060048201526024808201527f5375694272696467653a204d65737361676520616c72656164792070726f63656044820152631cdcd95960e21b606482015260840161044c565b60008060009054906101000a90046001600160a01b03166001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160991906133cc565b9050600061161a876080015161237e565b9050816001600160a01b031663adc879e96040518163ffffffff1660e01b8152600401602060405180830381865afa15801561165a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167e91906134dd565b60ff16816040015160ff16146116d65760405162461bcd60e51b815260206004820152601f60248201527f5375694272696467653a20496e76616c69642074617267657420636861696e00604482015260640161044c565b60a081015160405163e532488960e01b815260ff909116600482015260009061182a906001600160a01b0385169063e532488990602401602060405180830381865afa15801561172a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174e91906133cc565b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561178b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117af91906134dd565b60a08401516040516371ceee4f60e01b815260ff90911660048201526001600160a01b038616906371ceee4f90602401602060405180830381865afa1580156117fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182091906134dd565b8460c0015161270a565b905061184488606001518360a001518460800151846127b3565b6040808901516001600160401b031660009081526035602090815290829020805460ff19166001179055815163adc879e960e01b815291516001600160a01b0386169263adc879e99260048083019391928290030181865afa1580156118ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d291906134dd565b60ff1688604001516001600160401b0316896060015160ff167f933e8377dca7a8cf67d2bf865c4d8c1c45347815760900f9d2eb5655a06943af8560a00151858760200151886080015160405161192c94939291906136ce565b60405180910390a450505050505050610a2d6001600080516020613a7583398151915255565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156119975750825b90506000826001600160401b031660011480156119b35750303b155b9050811580156119c1575080155b156119df5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611a0957845460ff60401b1916600160401b1785555b611a1288612b35565b611a1a612b70565b603680546001600160a01b03808a166001600160a01b03199283161790925560378054928916929091169190911790558315611a9057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b611aa2611e0a565b80518190839060059060ff168114611acc5760405162461bcd60e51b815260040161044c9061355c565b600054604051633c62252760e21b81526001600160a01b039091169063f188949c90611afe90859087906004016135a8565b60006040518083038186803b158015611b1657600080fd5b505afa158015611b2a573d6000803e3d6000fd5b5050505060ff811615611cc75760008054906101000a90046001600160a01b03166001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bac91906133cc565b6001600160a01b031663adc879e96040518163ffffffff1660e01b8152600401602060405180830381865afa158015611be9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0d91906134dd565b60ff16836060015160ff1614611c355760405162461bcd60e51b815260040161044c90613656565b825160ff166000908152600160205260409081902054908401516001600160401b03908116911614611c795760405162461bcd60e51b815260040161044c90613697565b825160ff16600090815260016020526040812080546001600160401b031691611ca183613536565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b6000806000611cd98760800151612b80565b919450925090506001600160a01b0383163014611d4c5760405162461bcd60e51b815260206004820152602b60248201527f436f6d6d69747465655570677261646561626c653a20496e76616c696420707260448201526a6f7879206164647265737360a81b606482015260840161044c565b6002805460ff19166001179055611d638282610a12565b60408781015181516001600160401b0390911681526001600160a01b03858116602083015284168183015290517fdc69b57038334451ee12fd1742228917cea7f40dbd33cda5162e7e5754acee1c9181900360600190a1505050505050610a2d6001600080516020613a7583398151915255565b600080516020613a558339815191525460ff1615611e085760405163d93c066560e01b815260040160405180910390fd5b565b600080516020613a75833981519152805460011901611e3c57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610a0c908590612bae565b60008260ff168460ff1603611ef95760008211611ecb5760405162461bcd60e51b815260040161044c90613709565b6001600160401b03821115611ef25760405162461bcd60e51b815260040161044c90613752565b5080611fbf565b8260ff168460ff1611611f4e5760405162461bcd60e51b815260206004820181905260248201527f4272696467655574696c733a20496e76616c69642053756920646563696d616c604482015260640161044c565b6000611f5a848661379a565b611f6590600a613897565b9050611f7181846138a6565b92506001600160401b03831115611f9a5760405162461bcd60e51b815260040161044c90613752565b60008311611fba5760405162461bcd60e51b815260040161044c90613709565b829150505b9392505050565b6001600080516020613a7583398151915255565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061206157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612055600080516020613a35833981519152546001600160a01b031690565b6001600160a01b031614155b15611e085760405163703e46dd60e11b815260040160405180910390fd5b60025460ff166120e45760405162461bcd60e51b815260206004820152602a60248201527f436f6d6d69747465655570677261646561626c653a20556e617574686f72697a6044820152696564207570677261646560b01b606482015260840161044c565b506002805460ff19169055565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561214b575060408051601f3d908101601f191682019092526121489181019061349b565b60015b61217357604051634c9c8ce360e01b81526001600160a01b038316600482015260240161044c565b600080516020613a3583398151915281146121a457604051632a87526960e21b81526004810182905260240161044c565b6121ae8383612c11565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611e085760405163703e46dd60e11b815260040160405180910390fd5b6000815160011461225b5760405162461bcd60e51b815260206004820152602360248201527f4272696467655574696c733a20496e76616c6964207061796c6f6164206c656e6044820152620cee8d60eb1b606482015260840161044c565b600082600081518110612270576122706138c8565b016020015160f81c905060018111156122cb5760405162461bcd60e51b815260206004820152601c60248201527f4272696467655574696c733a20496e76616c6964206f7020636f646500000000604482015260640161044c565b60ff161592915050565b6122dd611dd7565b600080516020613a55833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258335b6040516001600160a01b03909116815260200160405180910390a150565b612340612c67565b600080516020613a55833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa3361231a565b6040805160e081018252600080825260606020830181905282840182905282018190526080820181905260a0820181905260c082015282519091146124205760405162461bcd60e51b815260206004820152603260248201527f4272696467655574696c733a20546f6b656e5472616e736665725061796c6f6160448201527164206d75737420626520363420627974657360701b606482015260840161044c565b600082600081518110612435576124356138c8565b0160209081015160f81c915081146124c65760405162461bcd60e51b815260206004820152604860248201527f4272696467655574696c733a20496e76616c69642073656e646572206164647260448201527f657373206c656e6774682c205375692061646472657373206d75737420626520606482015267333220627974657360c01b608482015260a40161044c565b6001600060ff83166001600160401b038111156124e5576124e5612f56565b6040519080825280601f01601f19166020018201604052801561250f576020820181803683370190505b50905060005b8360ff16811015612584578561252e60ff8516836138de565b8151811061253e5761253e6138c8565b602001015160f81c60f81b82828151811061255b5761255b6138c8565b60200101906001600160f81b031916908160001a9053508061257c816138f1565b915050612515565b5061258f838361390a565b91506000858361259e81613923565b945060ff16815181106125b3576125b36138c8565b016020015160f81c9050600086846125ca81613923565b955060ff16815181106125df576125df6138c8565b016020015160f81c9050601481146126705760405162461bcd60e51b815260206004820152604860248201527f4272696467655574696c733a20496e76616c696420746172676574206164647260448201527f657373206c656e6774682c2045564d2061646472657373206d75737420626520606482015267323020627974657360c01b608482015260a40161044c565b808401870151612680828661390a565b94506000888661268f81613923565b975060ff16815181106126a4576126a46138c8565b0160209081015199909601600801516040805160e08101825260ff998a1681529788019690965293871694860194909452941660608401526001600160a01b0390931660808301525060f89390931c60a08401526001600160401b031660c08301525090565b60008360ff168360ff160361272957506001600160401b038116611fbf565b8260ff168460ff161161277e5760405162461bcd60e51b815260206004820181905260248201527f4272696467655574696c733a20496e76616c69642053756920646563696d616c604482015260640161044c565b600061278a848661379a565b61279590600a613897565b90506127aa816001600160401b038516613942565b95945050505050565b6127bb611dd7565b60375460405163f7857a1960e01b815260ff808716600483015285166024820152604481018390528591859184916001600160a01b03169063f7857a1990606401602060405180830381865afa158015612819573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061283d91906133e9565b156128995760405162461bcd60e51b815260206004820152602660248201527f5375694272696467653a20416d6f756e74206578636565647320627269646765604482015265081b1a5b5a5d60d21b606482015260840161044c565b60008060009054906101000a90046001600160a01b03166001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061291191906133cc565b60405163e532488960e01b815260ff891660048201526001600160a01b03919091169063e532488990602401602060405180830381865afa15801561295a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061297e91906133cc565b90506001600160a01b0381166129d65760405162461bcd60e51b815260206004820152601c60248201527f5375694272696467653a20556e737570706f7274656420746f6b656e00000000604482015260640161044c565b60011960ff881601612a4d57603654604051637b1a490960e01b81526001600160a01b0388811660048301526024820188905290911690637b1a490990604401600060405180830381600087803b158015612a3057600080fd5b505af1158015612a44573d6000803e3d6000fd5b50505050612abc565b60365460405163276d76f960e21b81526001600160a01b03838116600483015288811660248301526044820188905290911690639db5dbe490606401600060405180830381600087803b158015612aa357600080fd5b505af1158015612ab7573d6000803e3d6000fd5b505050505b603754604051639373d39160e01b815260ff808b16600483015289166024820152604481018790526001600160a01b0390911690639373d39190606401600060405180830381600087803b158015612b1357600080fd5b505af1158015612b27573d6000803e3d6000fd5b505050505050505050505050565b612b3d612c97565b612b45612ce0565b612b4e81612cf0565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b612b78612c97565b611e08612cf8565b6000806060600080600086806020019051810190612b9e9190613959565b9199909850909650945050505050565b6000612bc36001600160a01b03841683612d19565b90508051600014158015612be8575080806020019051810190612be691906133e9565b155b156121ae57604051635274afe760e01b81526001600160a01b038416600482015260240161044c565b612c1a82612d30565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612c5f576121ae8282612d95565b610a2d612e02565b600080516020613a558339815191525460ff16611e0857604051638dfc202b60e01b815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16611e0857604051631afcd79f60e31b815260040160405180910390fd5b612ce8612c97565b611e08612e21565b612b4e612c97565b612d00612c97565b600080516020613a55833981519152805460ff19169055565b6060612d2783836000612e29565b90505b92915050565b806001600160a01b03163b600003612d6657604051634c9c8ce360e01b81526001600160a01b038216600482015260240161044c565b600080516020613a3583398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612db291906139f8565b600060405180830381855af49150503d8060008114612ded576040519150601f19603f3d011682016040523d82523d6000602084013e612df2565b606091505b50915091506127aa858383612ec6565b3415611e085760405163b398979f60e01b815260040160405180910390fd5b611fc6612c97565b606081471015612e4e5760405163cd78605960e01b815230600482015260240161044c565b600080856001600160a01b03168486604051612e6a91906139f8565b60006040518083038185875af1925050503d8060008114612ea7576040519150601f19603f3d011682016040523d82523d6000602084013e612eac565b606091505b5091509150612ebc868383612ec6565b9695505050505050565b606082612edb57612ed682612f1b565b611fbf565b8151158015612ef257506001600160a01b0384163b155b15611ef257604051639996b31560e01b81526001600160a01b038516600482015260240161044c565b805115612f2b5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b60ff81168114612f4457600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612f9457612f94612f56565b604052919050565b60006001600160401b03821115612fb557612fb5612f56565b50601f01601f191660200190565b600082601f830112612fd457600080fd5b8135612fe7612fe282612f9c565b612f6c565b818152846020838601011115612ffc57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561302f57600080fd5b843561303a81612f47565b93506020850135925060408501356001600160401b0381111561305c57600080fd5b61306887828801612fc3565b925050606085013561307981612f47565b939692955090935050565b6001600160a01b0381168114612f4457600080fd5b600080604083850312156130ac57600080fd5b82356130b781613084565b915060208301356001600160401b038111156130d257600080fd5b6130de85828601612fc3565b9150509250929050565b6000602082840312156130fa57600080fd5b8135611fbf81612f47565b80356001600160401b038116811461311c57600080fd5b919050565b60006020828403121561313357600080fd5b612d2782613105565b6000806040838503121561314f57600080fd5b82356001600160401b0381111561316557600080fd5b61317185828601612fc3565b925050602083013561318281612f47565b809150509250929050565b600060a0828403121561319f57600080fd5b60405160a081016001600160401b0382821081831117156131c2576131c2612f56565b81604052829350843591506131d682612f47565b9082526020840135906131e882612f47565b8160208401526131fa60408601613105565b60408401526060850135915061320f82612f47565b816060840152608085013591508082111561322957600080fd5b5061323685828601612fc3565b6080830152505092915050565b6000806040838503121561325657600080fd5b82356001600160401b038082111561326d57600080fd5b818501915085601f83011261328157600080fd5b813560208282111561329557613295612f56565b8160051b6132a4828201612f6c565b928352848101820192828101908a8511156132be57600080fd5b83870192505b848310156132fa578235868111156132dc5760008081fd5b6132ea8c86838b0101612fc3565b83525091830191908301906132c4565b975050508601359250508082111561331157600080fd5b506130de8582860161318d565b60005b83811015613339578181015183820152602001613321565b50506000910152565b6000815180845261335a81602086016020860161331e565b601f01601f19169290920160200192915050565b602081526000612d276020830184613342565b60008060006060848603121561339657600080fd5b83356133a181613084565b925060208401356133b181613084565b915060408401356133c181613084565b809150509250925092565b6000602082840312156133de57600080fd5b8151611fbf81613084565b6000602082840312156133fb57600080fd5b81518015158114611fbf57600080fd5b60208082526025908201527f5375694272696467653a2054617267657420636861696e206e6f7420737570706040820152641bdc9d195960da1b606082015260800190565b6020808252602b908201527f5375694272696467653a20496e76616c696420726563697069656e742061646460408201526a0e4cae6e640d8cadccee8d60ab1b606082015260800190565b6000602082840312156134ad57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115612d2a57612d2a6134b4565b6000602082840312156134ef57600080fd5b8151611fbf81612f47565b60ff851681526001600160401b03841660208201526001600160a01b0383166040820152608060608201819052600090612ebc90830184613342565b60006001600160401b03808316818103613552576135526134b4565b6001019392505050565b6020808252602c908201527f4d65737361676556657269666965723a206d65737361676520646f6573206e6f60408201526b74206d61746368207479706560a01b606082015260800190565b6000604082016040835280855180835260608501915060608160051b8601019250602080880160005b838110156135ff57605f198887030185526135ed868351613342565b955093820193908201906001016135d1565b50508584038187015260ff875116845260ff8188015116818501525050506001600160401b03604085015116604082015260ff6060850151166060820152608084015160a06080830152612ebc60a0830182613342565b60208082526021908201527f4d65737361676556657269666965723a20496e76616c696420636861696e20496040820152601160fa1b606082015260800190565b6020808252601e908201527f4d65737361676556657269666965723a20496e76616c6964206e6f6e63650000604082015260600190565b60ff851681528360208201526080604082015260006136f06080830185613342565b905060018060a01b038316606083015295945050505050565b60208082526029908201527f4272696467655574696c733a20496e73756666696369656e7420616d6f756e74604082015268081c1c9bdd9a59195960ba1b606082015260800190565b60208082526028908201527f4272696467655574696c733a20416d6f756e7420746f6f206c6172676520666f6040820152671c881d5a5b9d0d8d60c21b606082015260800190565b60ff8281168282160390811115612d2a57612d2a6134b4565b600181815b808511156137ee5781600019048211156137d4576137d46134b4565b808516156137e157918102915b93841c93908002906137b8565b509250929050565b60008261380557506001612d2a565b8161381257506000612d2a565b816001811461382857600281146138325761384e565b6001915050612d2a565b60ff841115613843576138436134b4565b50506001821b612d2a565b5060208310610133831016604e8410600b8410161715613871575081810a612d2a565b61387b83836137b3565b806000190482111561388f5761388f6134b4565b029392505050565b6000612d2760ff8416836137f6565b6000826138c357634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b80820180821115612d2a57612d2a6134b4565b600060018201613903576139036134b4565b5060010190565b60ff8181168382160190811115612d2a57612d2a6134b4565b600060ff821660ff8103613939576139396134b4565b60010192915050565b8082028115828204841417612d2a57612d2a6134b4565b60008060006060848603121561396e57600080fd5b835161397981613084565b602085015190935061398a81613084565b60408501519092506001600160401b038111156139a657600080fd5b8401601f810186136139b757600080fd5b80516139c5612fe282612f9c565b8181528760208385010111156139da57600080fd5b6139eb82602083016020860161331e565b8093505050509250925092565b60008251613a0a81846020870161331e565b919091019291505056fea6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbccd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220bf4178312bb1fbbdb63a29ce4a1818cb34b07aa81ee0380201082926da701e3864736f6c63430008140033