0 txs
1 call
constructor
constructor(address _owner, address _permit2)
functions
beneficiarySettlements
viewfunction beneficiarySettlements(address beneficiary, address router, address token) view returns (uint256 amount)
CALLDATA_EXECUTOR
viewfunction CALLDATA_EXECUTOR() view returns (address)
checkCapacity
viewfunction checkCapacity(address transmitter, address token) view returns (uint256)
EXPIRY_BUFFER
viewfunction EXPIRY_BUFFER() view returns (uint256)
FEE_COLLECTOR
viewfunction FEE_COLLECTOR() view returns (address)
getSingleOutputExtractedRequest
viewfunction getSingleOutputExtractedRequest(bytes32 requestHash) view returns (tuple)
getSingleOutputFulfilledRequest
viewfunction getSingleOutputFulfilledRequest(bytes32 requestHash) view returns (tuple)
getWhitelistedReceiver
viewfunction getWhitelistedReceiver(address router, uint256 destinationChainId) view returns (address)
isBungeeRouter
viewfunction isBungeeRouter(address router) view returns (bool)
isWhitelisted
viewfunction isWhitelisted(address router) view returns (bool whitelisted)
MOFA_SIGNER
viewfunction MOFA_SIGNER() view returns (address)
NATIVE_TOKEN_ADDRESS
viewfunction NATIVE_TOKEN_ADDRESS() view returns (address)
nominee
viewfunction nominee() view returns (address)
owner
viewfunction owner() view returns (address)
PERMIT2
viewfunction PERMIT2() view returns (address)
SINGLE_OUTPUT_IMPL_ID
viewfunction SINGLE_OUTPUT_IMPL_ID() view returns (uint8)
STAKE_VAULT
viewfunction STAKE_VAULT() view returns (address)
SWAP_EXECUTOR
viewfunction SWAP_EXECUTOR() view returns (address)
SWAP_REQUEST_IMPL_ID
viewfunction SWAP_REQUEST_IMPL_ID() view returns (uint8)
SWITCHBOARD_ROUTER
viewfunction SWITCHBOARD_ROUTER() view returns (address)
transmitterCapacity
viewfunction transmitterCapacity(address transmitter, address token) view returns (uint256 capacity)
withdrawnRequests
viewfunction withdrawnRequests(bytes32 requestHash) view returns (bool withdrawn)
claimOwner
nonpayablefunction claimOwner()
extractAndSwap
payablefunction extractAndSwap(tuple[] swapExecs, bytes mofaSignature) payable
nominateOwner
nonpayablefunction nominateOwner(address nominee_)
receiveMsg
payablefunction receiveMsg(bytes payload) payable
registerStakedRouter
nonpayablefunction registerStakedRouter(address stakedRouter)
registerTransmitterStake
payablefunction registerTransmitterStake(address token, uint256 capacity) payable
registerWhitelistedRouter
nonpayablefunction registerWhitelistedRouter(address whitelistedRouter)
rescue
nonpayablefunction rescue(address token, address to, uint256 amount)
setCalldataExecutor
nonpayablefunction setCalldataExecutor(address _calldataExecutor)
setExpiryBuffer
nonpayablefunction setExpiryBuffer(uint256 _expiryBuffer)
setFeeCollector
nonpayablefunction setFeeCollector(address _feeCollector)
setMofaSigner
nonpayablefunction setMofaSigner(address _mofaSigner)
setStakeVault
nonpayablefunction setStakeVault(address _stakeVault)
setSwapExecutor
nonpayablefunction setSwapExecutor(address _swapExecutor)
setSwitchboardRouter
nonpayablefunction setSwitchboardRouter(address _switchboardRouter)
setWhitelistedReceiver
nonpayablefunction setWhitelistedReceiver(address receiver, uint256 destinationChainId, address router)
withdrawBeneficiarySettlement
nonpayablefunction withdrawBeneficiarySettlement(address beneficiary, address router, address token)
withdrawTransmitterStake
nonpayablefunction withdrawTransmitterStake(address token, uint256 capacity)
events
OwnerClaimed
event OwnerClaimed(address indexed claimer)
OwnerNominated
event OwnerNominated(address indexed nominee)
RequestExtracted
event RequestExtracted(bytes32 indexed requestHash, uint8 implId, address transmitter, bytes execution)
RequestFulfilled
event RequestFulfilled(bytes32 indexed requestHash, uint8 implId, address fulfiller, bytes execution)
RequestSettled
event RequestSettled(bytes32 indexed requestHash)
RequestsSettledOnDestination
event RequestsSettledOnDestination(bytes32[] requestHashes, uint8 implId, address transmitter, uint256 outboundFees)
WithdrawOnDestination
event WithdrawOnDestination(bytes32 indexed requestHash, address token, uint256 amount, address to)
WithdrawOnOrigin
event WithdrawOnOrigin(bytes32 indexed requestHash, address token, uint256 amount, address to)
errors
InvalidMsg
error InvalidMsg()
InvalidMultipleNativeTokens
error InvalidMultipleNativeTokens()
InvalidStake
error InvalidStake()
MinOutputNotMet
error MinOutputNotMet()
MofaSignatureInvalid
error MofaSignatureInvalid()
OnlyNominee
error OnlyNominee()
OnlyOwner
error OnlyOwner()
RouterAlreadyRegistered
error RouterAlreadyRegistered()
RouterAlreadyWhitelisted
error RouterAlreadyWhitelisted()
TransferFailed
error TransferFailed()
WrongAffiliateFeeLength
error WrongAffiliateFeeLength()
creation bytecode
0x60a06040523480156200001157600080fd5b5060405162003b2b38038062003b2b8339810160408190526200003491620000c9565b818181620000428162000059565b506001600160a01b03166080525062000101915050565b600080546001600160a01b0383166001600160a01b0319918216811783556001805490921690915560405190917ffbe19c9b601f5ee90b44c7390f3fa2319eba01762d34ee372aeafd59b25c7f8791a250565b80516001600160a01b0381168114620000c457600080fd5b919050565b60008060408385031215620000dd57600080fd5b620000e883620000ac565b9150620000f860208401620000ac565b90509250929050565b608051613a006200012b60003960008181610520015281816116f60152611d350152613a006000f3fe60806040526004361061023b5760003560e01c80637373161f1161012e578063a42dce80116100ab578063df2ebdbb1161006f578063df2ebdbb1461074c578063e1282c5c14610774578063e9899ed2146107b8578063f36ba4d8146107d8578063f8281486146107f857600080fd5b8063a42dce80146106d0578063ae3100c0146106f0578063b746078a14610706578063bd18826014610719578063cc6dc63a1461072c57600080fd5b806380f7013e116100f257806380f7013e14610625578063823d00881461065d5780638da5cb5b14610672578063967aef08146106905780639ed0cb13146106b057600080fd5b80637373161f1461056257806374f8d3fd1461058257806376479d1b146105c5578063795d86b8146105e55780637f660b011461060557600080fd5b80633af32abf116101bc5780635b94db27116101805780635b94db271461049e5780636a0706db146104be5780636a7372da146104de5780636afdd8501461050e578063733957f81461054257600080fd5b80633af32abf146103c75780633bd1adec146103f75780633cbc7eaa1461040c5780633de408a1146104335780634c7a77321461047157600080fd5b80631e789c36116102035780631e789c361461030b57806320798eb71461035457806320f99c0a1461036957806320ff430b1461038757806331feeadd146103a757600080fd5b80630b345879146102405780630c0a0ccb1461027d5780630cb352e0146102ab5780630e4bfd6e146102cb57806312f07c25146102eb575b600080fd5b34801561024c57600080fd5b50600454610260906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561028957600080fd5b5061029d6102983660046128a4565b610818565b604051908152602001610274565b3480156102b757600080fd5b50600554610260906001600160a01b031681565b3480156102d757600080fd5b50600354610260906001600160a01b031681565b3480156102f757600080fd5b50600254610260906001600160a01b031681565b34801561031757600080fd5b506103446103263660046128d7565b6001600160a01b03166000908152600c602052604090205460ff1690565b6040519015158152602001610274565b6103676103623660046128f9565b610845565b005b34801561037557600080fd5b506001546001600160a01b0316610260565b34801561039357600080fd5b506103676103a2366004612923565b610975565b3480156103b357600080fd5b506103676103c236600461295f565b6109ab565b3480156103d357600080fd5b506103446103e23660046128d7565b600d6020526000908152604090205460ff1681565b34801561040357600080fd5b50610367610a80565b34801561041857600080fd5b50610421600181565b60405160ff9091168152602001610274565b34801561043f57600080fd5b5061029d61044e36600461295f565b601060209081526000938452604080852082529284528284209052825290205481565b34801561047d57600080fd5b5061049161048c3660046129a2565b610ab6565b6040516102749190612a0b565b3480156104aa57600080fd5b506103676104b93660046128d7565b610c60565b3480156104ca57600080fd5b506103676104d93660046128d7565b610cd5565b3480156104ea57600080fd5b506103446104f93660046129a2565b600f6020526000908152604090205460ff1681565b34801561051a57600080fd5b506102607f000000000000000000000000000000000000000000000000000000000000000081565b34801561054e57600080fd5b5061036761055d3660046128d7565b610d22565b34801561056e57600080fd5b5061036761057d3660046129a2565b610d6f565b34801561058e57600080fd5b5061026061059d3660046128f9565b6001600160a01b039182166000908152600b6020908152604080832093835292905220541690565b3480156105d157600080fd5b506103676105e03660046128d7565b610d9f565b3480156105f157600080fd5b506103676106003660046128d7565b610e6d565b34801561061157600080fd5b50600654610260906001600160a01b031681565b34801561063157600080fd5b5061029d6106403660046128a4565b600e60209081526000928352604080842090915290825290205481565b34801561066957600080fd5b50610421600281565b34801561067e57600080fd5b506000546001600160a01b0316610260565b34801561069c57600080fd5b506103676106ab3660046128f9565b610edb565b3480156106bc57600080fd5b506103676106cb366004612af6565b610f9e565b3480156106dc57600080fd5b506103676106eb3660046128d7565b611006565b3480156106fc57600080fd5b5061029d60085481565b610367610714366004612b71565b611053565b610367610727366004612bb2565b61107e565b34801561073857600080fd5b506103676107473660046128d7565b61125a565b34801561075857600080fd5b5061026073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b34801561078057600080fd5b5061079461078f3660046129a2565b6112a7565b60408051825181526020808401519082015291810151151590820152606001610274565b3480156107c457600080fd5b506103676107d33660046128d7565b61130b565b3480156107e457600080fd5b506103676107f33660046128d7565b611358565b34801561080457600080fd5b50600754610260906001600160a01b031681565b6001600160a01b038083166000908152600e60209081526040808320938516835292905220545b92915050565b336000908152600e602090815260408083206001600160a01b0386168452909152902054610874908290612c61565b336000908152600e602090815260408083206001600160a01b03871680855292529091209190915573eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed1901610955578034146108d757604051634eba4d4960e11b815260040160405180910390fd5b6007546040516000916001600160a01b03169061138890849084818181858888f193505050503d8060008114610929576040519150601f19603f3d011682016040523d82523d6000602084013e61092e565b606091505b5050905080610950576040516312171d8360e31b815260040160405180910390fd5b505050565b600754610971906001600160a01b0384811691339116846113a5565b5050565b6000546001600160a01b031633146109a057604051635fc483c560e01b815260040160405180910390fd5b61095083828461143f565b6001600160a01b03808416600090815260106020908152604080832086851684528252808320938516835292905220548015610a7a576001600160a01b038481166000818152601060209081526040808320888616808552908352818420958816808552959092528083209290925590516362524dd760e01b81526004810193909352602483018490526044830191909152906362524dd790606401600060405180830381600087803b158015610a6157600080fd5b505af1158015610a75573d6000803e3d6000fd5b505050505b50505050565b6001546001600160a01b03163314610aab57604051637c91ccdd60e01b815260040160405180910390fd5b610ab4336114f1565b565b604080516101808101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e08201839052610100820183905261012082018390526101408201929092526101608101919091526000828152600a60208181526040928390208351610180810185528154815260018201546001600160a01b0390811693820193909352600282015483169481019490945260038101548083166060860152600160a01b900463ffffffff1660808501526004810154821660a08501526005810154821660c0850152600681015490911660e0840152600781015461010084015260088101546101208401526009810154610140840152908101805461016084019190610bd790612c74565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0390612c74565b8015610c505780601f10610c2557610100808354040283529160200191610c50565b820191906000526020600020905b815481529060010190602001808311610c3357829003601f168201915b5050505050815250509050919050565b6000546001600160a01b03163314610c8b57604051635fc483c560e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce2290600090a250565b6000546001600160a01b03163314610d0057604051635fc483c560e01b815260040160405180910390fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610d4d57604051635fc483c560e01b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610d9a57604051635fc483c560e01b815260040160405180910390fd5b600855565b6000546001600160a01b03163314610dca57604051635fc483c560e01b815260040160405180910390fd5b6001600160a01b0381166000908152600d602052604090205460ff1615610e045760405163406c5bd360e01b815260040160405180910390fd5b6001600160a01b0381166000908152600c602052604090205460ff1615610e3e57604051633ba24ff960e11b815260040160405180910390fd5b6001600160a01b0381166000908152600d60205260409020805460ff19166001179055610e6a81611544565b50565b6000546001600160a01b03163314610e9857604051635fc483c560e01b815260040160405180910390fd5b6001600160a01b0381166000908152600c602052604090205460ff1615610ed257604051633ba24ff960e11b815260040160405180910390fd5b610e6a81611544565b336000908152600e602090815260408083206001600160a01b0386168452909152902054610f0a908290612cae565b336000818152600e602090815260408083206001600160a01b038881168086529190935292819020949094556007549351632385922d60e01b81526004810192909252602482018590526044820192909252911690632385922d90606401600060405180830381600087803b158015610f8257600080fd5b505af1158015610f96573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610fc957604051635fc483c560e01b815260040160405180910390fd5b6001600160a01b039081166000908152600b60209081526040808320948352939052919091208054919092166001600160a01b0319909116179055565b6000546001600160a01b0316331461103157604051635fc483c560e01b815260040160405180910390fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b0316331461097157604051631bd147a760e01b815260040160405180910390fd5b6110bf848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061156892505050565b60005b838110156112535760008585838181106110de576110de612cc1565b90506020028101906110f09190612cd7565b6110f99061316d565b90506000805b8251516101000151518110156111e157825151610120015180518290811061112957611129612cc1565b60200260200101518360200151828151811061114757611147612cc1565b6020026020010151101561116e5760405163308657c360e21b815260040160405180910390fd5b8251516101000151805173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee91908390811061119f5761119f612cc1565b60200260200101516001600160a01b0316036111d95781156111d457604051639d91bc6560e01b815260040160405180910390fd5b600191505b6001016110ff565b5060006111f183600001516115bb565b6040840151519091501561120e5761120981846116d4565b611218565b6112188184611d13565b825180516080808201519083015160208701516101009093015160a0909401516112489492939192908690611f81565b5050506001016110c2565b5050505050565b6000546001600160a01b0316331461128557604051635fc483c560e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6112cd604051806060016040528060008152602001600081526020016000151581525090565b506000908152600960209081526040918290208251606081018452815481526001820154928101929092526002015460ff1615159181019190915290565b6000546001600160a01b0316331461133657604051635fc483c560e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461138357604051635fc483c560e01b815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b60006040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b03841660248201528260448201526020600060648360008a5af13d15601f3d11600160005114161716915050806112535760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b60448201526064015b60405180910390fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038416016114dd576000816001600160a01b03168361138890604051600060405180830381858888f193505050503d80600081146114b6576040519150601f19603f3d011682016040523d82523d6000602084013e6114bb565b606091505b5050905080610a7a576040516312171d8360e31b815260040160405180910390fd5b6109506001600160a01b0384168284612067565b600080546001600160a01b0383166001600160a01b0319918216811783556001805490921690915560405190917ffbe19c9b601f5ee90b44c7390f3fa2319eba01762d34ee372aeafd59b25c7f8791a250565b6001600160a01b03166000908152600c60205260409020805460ff19166001179055565b600061157c6115778486613179565b6120e8565b9050600061158a8284612174565b6002549091506001600160a01b0380831691161461125357604051633c6ae50160e11b815260040160405180910390fd5b60006040516020016115cc906131ec565b6040516020818303038152906040526040516020016115ea906132be565b60408051601f198184030181529082905261160892916020016133f7565b6040516020818303038152906040528051906020012061162b8360000151612194565b60208085015160405161163e9201613426565b60405160208183030381529060405280519060200120846040015185606001518051906020012086608001518760a00151805190602001206040516020016116b79796959493929190968752602087019590955260408601939093526060850191909152608084015260a083015260c082015260e00190565b604051602081830303815290604052805190602001209050919050565b80515160c081015160e082015160408301516020909301516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169363137c29fe9361172b93909290919061229a565b83515160e00151600454604080518082018252600080825260209182015281518083019092526001600160a01b0390921681529081019190915284515160600151604051879061177d906020016132be565b60405160208183030381529060405260405160200161179b906131ec565b60408051601f19818403018152908290526117b992916020016133f7565b60408051601f1981840301815260608301909152602e80835290919061399d60208301396040516020016117ee929190613465565b60408051601f198184030181529082905260808901516001600160e01b031960e089901b16835261182596959493926004016134b3565b600060405180830381600087803b15801561183f57600080fd5b505af1158015611853573d6000803e3d6000fd5b50508251516101000151516000925090506001600160401b0381111561187b5761187b612cf7565b6040519080825280602002602001820160405280156118a4578160200160208202803683370190505b50905060005b825151610100015151811015611a02578251516101000151805173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee9190839081106118eb576118eb612cc1565b60200260200101516001600160a01b03160361193b57826000015160000151608001516001600160a01b03163182828151811061192a5761192a612cc1565b6020026020010181815250506119f0565b825151610100015180518290811061195557611955612cc1565b6020908102919091010151835151608001516040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa1580156119ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d19190613556565b8282815181106119e3576119e3612cc1565b6020026020010181815250505b806119fa8161356f565b9150506118aa565b508151805160e001516060909101516000918291611a2091906122fc565b9093509150508115611ab4576004805485515160c081015160e09091015160608801516040808a01516006549151631c30759960e11b81526001600160a01b0396871697633860eb3297611a7d9796959416918a918c9101613588565b600060405180830381600087803b158015611a9757600080fd5b505af1158015611aab573d6000803e3d6000fd5b50505050611b30565b6004805485515160c081015160e09091015160608801516040808a0151905163017c1d7560e31b81526001600160a01b0390951695630be0eba895611afd9594939291016135d6565b600060405180830381600087803b158015611b1757600080fd5b505af1158015611b2b573d6000803e3d6000fd5b505050505b60005b845151610100015151811015611cb1578451516101000151805160009173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee9184908110611b7657611b76612cc1565b60200260200101516001600160a01b031603611ba35750845151608001516001600160a01b031631611c3c565b8551516101000151805183908110611bbd57611bbd612cc1565b6020908102919091010151865151608001516040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015611c15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c399190613556565b90505b85602001518281518110611c5257611c52612cc1565b6020026020010151858381518110611c6c57611c6c612cc1565b602002602001015182611c7f9190612cae565b1015611c9e5760405163308657c360e21b815260040160405180910390fd5b5080611ca98161356f565b915050611b33565b50847fd83e4fbd120e768f3bb813ecfa1a2b16c323fa7dfa07db1cd6434b3cbc97bc7560023387604051602001611ce89190613687565b60408051601f1981840301815290829052611d04939291613863565b60405180910390a25050505050565b80515160c081015160e082015160408301516020909301516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169363137c29fe93611d6a93909290919061229a565b83515160e00151604080518082018252600080825260209182015281518083018352308152808201939093528651516060015191518891611dab91016132be565b604051602081830303815290604052604051602001611dc9906131ec565b60408051601f1981840301815290829052611de792916020016133f7565b60408051601f1981840301815260608301909152602e80835290919061399d6020830139604051602001611e1c929190613465565b60408051601f198184030181529082905260808901516001600160e01b031960e089901b168352611e5396959493926004016134b3565b600060405180830381600087803b158015611e6d57600080fd5b505af1158015611e81573d6000803e3d6000fd5b50508251805160e00151606090910151600093508392508291611ea3916122fc565b919450925090508115611ec25783515160c00151611ec2908383612399565b60005b846020015151811015611f325784515161010001518051611f2a919083908110611ef157611ef1612cc1565b60200260200101513387602001518481518110611f1057611f10612cc1565b602002602001015188600001516000015160800151612425565b600101611ec5565b5083515160c0015160a0850151611f4b9190859061143f565b847fd83e4fbd120e768f3bb813ecfa1a2b16c323fa7dfa07db1cd6434b3cbc97bc7560023387604051602001611ce89190613687565b80511580611f9657506001600160a01b038616155b80611fa957506001600160a01b03861630145b610f9657600084838584604051602401611fc69493929190613899565b60408051601f198184030181529181526020820180516001600160e01b0316636bf9b1d160e01b17905260055490516337a8727d60e11b81529192506001600160a01b031690636f50e4fa90612024908a9085908b906004016138e3565b6020604051808303816000875af1158015612043573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a759190613917565b600060405163a9059cbb60e01b81526001600160a01b0384166004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080610a7a5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401611436565b60007fc746f6e6da790dff84d0c9f6e755a8d7633f3ee530ccaed5b82aa1d0ccec224f815b835181101561216d578161213985838151811061212c5761212c612cc1565b60200260200101516124de565b60408051602081019390935282015260600160408051601f198184030181529190528051602090910120915060010161210d565b5092915050565b60008061218084612698565b905061218c81846126d3565b949350505050565b60006040516020016121a5906132be565b604051602081830303815290604052805190602001204683602001518460400151856060015186608001518760a001518860c001518960e001518a61010001516040516020016121f59190613426565b604051602081830303815290604052805190602001208b61012001516040516020016122219190613939565b60408051601f1981840301815282825280516020918201209083019c909c52810199909952606089019790975260808801959095526001600160a01b0393841660a088015291831660c0870152821660e086015216610100840152610120830152610140820152610160810191909152610180016116b7565b6040805160a0810182526000606082018181526080830182905282526020820181905291810191909152506040805160a0810182526001600160a01b039590951660608601908152608086019490945292845260208401919091529082015290565b6000806000806000808651111561238e5760008651601a1461233157604051634115207f60e01b815260040160405180910390fd5b61233c876014612752565b90506123498760006127af565b925065ffffffffffff81161561238c57662386f26fc1000061237365ffffffffffff83168a613963565b61237d919061397a565b91506123898289612cae565b97505b505b959690945092505050565b6006546123b290849084906001600160a01b031661143f565b60065460405163404e3d4960e01b81526001600160a01b0383811660048301526024820185905285811660448301529091169063404e3d4990606401600060405180830381600087803b15801561240857600080fd5b505af115801561241c573d6000803e3d6000fd5b50505050505050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038516016124c9576000816001600160a01b03168361138890604051600060405180830381858888f193505050503d806000811461249c576040519150601f19603f3d011682016040523d82523d6000602084013e6124a1565b606091505b50509050806124c3576040516312171d8360e31b815260040160405180910390fd5b50610a7a565b610a7a6001600160a01b0385168483856113a5565b604051680a6eec2e08af0cac6560bb1b60208201526f14995c5d595cdd081c995c5d595cdd0b60821b60298201527f75696e743235365b5d2066756c66696c416d6f756e74732c0000000000000000603982015271189e5d195cc81cddd85c14185e5b1bd8590b60721b6051820152721859191c995cdcc81cddd85c149bdd5d195c8b606a1b606382015273189e5d195cc81d5cd95c94da59db985d1d5c994b60621b607682015273616464726573732062656e65666963696172792960601b608a820152600090609e016040516020818303038152906040526040516020016125c7906131ec565b60408051601f19818403018152908290526125e592916020016133f7565b6040516020818303038152906040528051906020012061260883600001516115bb565b60208085015160405161261b9201613939565b60408051601f198184030181528282528051602091820120878301518051908301206060808a01516080808c015180519087012060a0808e0151978a019b909b529688019890985290860192909252948401949094526001600160a01b039384169483019490945260c0820152911660e0820152610100016116b7565b6040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c016116b7565b6000806000806126e285612814565b6040805160008152602081018083528b905260ff8316918101919091526060810184905260808101839052929550909350915060019060a0016020604051602081039080840390855afa15801561273d573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b600061275f826006612c61565b835110156127a65760405162461bcd60e51b8152602060048201526014602482015273746f55696e7434385f6f75744f66426f756e647360601b6044820152606401611436565b50016006015190565b60006127bc826014612c61565b835110156128045760405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606401611436565b500160200151600160601b900490565b6000806000835160411461286a5760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964207369676e6174757265206c656e67746800000000000000006044820152606401611436565b50505060208101516040820151606090920151909260009190911a90565b80356001600160a01b038116811461289f57600080fd5b919050565b600080604083850312156128b757600080fd5b6128c083612888565b91506128ce60208401612888565b90509250929050565b6000602082840312156128e957600080fd5b6128f282612888565b9392505050565b6000806040838503121561290c57600080fd5b61291583612888565b946020939093013593505050565b60008060006060848603121561293857600080fd5b61294184612888565b925061294f60208501612888565b9150604084013590509250925092565b60008060006060848603121561297457600080fd5b61297d84612888565b925061298b60208501612888565b915061299960408501612888565b90509250925092565b6000602082840312156129b457600080fd5b5035919050565b60005b838110156129d65781810151838201526020016129be565b50506000910152565b600081518084526129f78160208601602086016129bb565b601f01601f19169290920160200192915050565b602081528151602082015260006020830151612a3260408401826001600160a01b03169052565b5060408301516001600160a01b03811660608401525060608301516001600160a01b038116608084015250608083015163ffffffff811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e0830151610100612ab5818501836001600160a01b03169052565b84015161012084810191909152840151610140808501919091528401516101608085019190915284015161018080850152905061218c6101a08401826129df565b600080600060608486031215612b0b57600080fd5b612b1484612888565b92506020840135915061299960408501612888565b60008083601f840112612b3b57600080fd5b5081356001600160401b03811115612b5257600080fd5b602083019150836020828501011115612b6a57600080fd5b9250929050565b60008060208385031215612b8457600080fd5b82356001600160401b03811115612b9a57600080fd5b612ba685828601612b29565b90969095509350505050565b60008060008060408587031215612bc857600080fd5b84356001600160401b0380821115612bdf57600080fd5b818701915087601f830112612bf357600080fd5b813581811115612c0257600080fd5b8860208260051b8501011115612c1757600080fd5b602092830196509450908601359080821115612c3257600080fd5b50612c3f87828801612b29565b95989497509550505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561083f5761083f612c4b565b600181811c90821680612c8857607f821691505b602082108103612ca857634e487b7160e01b600052602260045260246000fd5b50919050565b8181038181111561083f5761083f612c4b565b634e487b7160e01b600052603260045260246000fd5b6000823560be19833603018112612ced57600080fd5b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b60405161014081016001600160401b0381118282101715612d3057612d30612cf7565b60405290565b60405160c081016001600160401b0381118282101715612d3057612d30612cf7565b604051601f8201601f191681016001600160401b0381118282101715612d8057612d80612cf7565b604052919050565b60006001600160401b03821115612da157612da1612cf7565b5060051b60200190565b600082601f830112612dbc57600080fd5b81356020612dd1612dcc83612d88565b612d58565b82815260059290921b84018101918181019086841115612df057600080fd5b8286015b84811015612e1257612e0581612888565b8352918301918301612df4565b509695505050505050565b600082601f830112612e2e57600080fd5b81356020612e3e612dcc83612d88565b82815260059290921b84018101918181019086841115612e5d57600080fd5b8286015b84811015612e125780358352918301918301612e61565b60006101408284031215612e8b57600080fd5b612e93612d0d565b9050813581526020820135602082015260408201356040820152612eb960608301612888565b6060820152612eca60808301612888565b6080820152612edb60a08301612888565b60a0820152612eec60c08301612888565b60c082015260e082013560e0820152610100808301356001600160401b0380821115612f1757600080fd5b612f2386838701612dab565b83850152610120925082850135915080821115612f3f57600080fd5b50612f4c85828601612e1d565b82840152505092915050565b600082601f830112612f6957600080fd5b81356001600160401b03811115612f8257612f82612cf7565b612f95601f8201601f1916602001612d58565b818152846020838601011115612faa57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215612fd957600080fd5b612fe1612d36565b905081356001600160401b0380821115612ffa57600080fd5b61300685838601612e78565b8352602084013591508082111561301c57600080fd5b61302885838601612dab565b602084015260408401356040840152606084013591508082111561304b57600080fd5b61305785838601612f58565b60608401526080840135608084015260a084013591508082111561307a57600080fd5b5061308784828501612f58565b60a08301525092915050565b600060c082840312156130a557600080fd5b6130ad612d36565b905081356001600160401b03808211156130c657600080fd5b6130d285838601612fc7565b835260208401359150808211156130e857600080fd5b6130f485838601612e1d565b6020840152604084013591508082111561310d57600080fd5b61311985838601612f58565b604084015261312a60608501612888565b6060840152608084013591508082111561314357600080fd5b5061315084828501612f58565b60808301525061316260a08301612888565b60a082015292915050565b600061083f3683613093565b6000613187612dcc84612d88565b80848252602080830192508560051b8501368111156131a557600080fd5b855b818110156131e05780356001600160401b038111156131c65760008081fd5b6131d236828a01613093565b8652509382019382016131a7565b50919695505050505050565b670a4cae2eacae6e8560c31b81527510985cda58d4995c5d595cdd0818985cda58d4995c4b60521b60088201527f616464726573735b5d206578636c75736976655472616e736d6974746572732c601e82015270189e5d195ccccc881b595d1859185d184b607a1b603e82015273189e5d195cc81859999a5b1a585d195199595ccb60621b604f820152721d5a5b9d0c8d4d881b5a5b91195cdd11d85ccb606a1b60638201527f62797465732064657374696e6174696f6e5061796c6f616429000000000000006076820152608f0190565b6c084c2e6d2c6a4cae2eacae6e85609b1b81526f1d5a5b9d0c8d4d8818da185a5b92590b60821b600d820152701d5a5b9d0c8d4d88191958591b1a5b994b607a1b601d8201526d1d5a5b9d0c8d4d881b9bdb98d94b60921b602e8201526e1859191c995cdcc81cd95b99195c8b608a1b603c820152701859191c995cdcc81c9958d95a5d995c8b607a1b604b820152751859191c995cdcc8189d5b99d95951d85d195dd85e4b60521b605c820152721859191c995cdcc81a5b9c1d5d151bdad95b8b606a1b6072820152731d5a5b9d0c8d4d881a5b9c1d5d105b5bdd5b9d0b60621b60858201527f616464726573735b5d206f7574707574546f6b656e732c00000000000000000060998201527f75696e743235365b5d206d696e4f7574707574416d6f756e747329000000000060b082015260cb0190565b600083516134098184602088016129bb565b83519083019061341d8183602088016129bb565b01949350505050565b815160009082906020808601845b838110156134595781516001600160a01b031685529382019390820190600101613434565b50929695505050505050565b6f52657175657374207769746e6573732960801b8152600083516134908160108501602088016129bb565b8351908301906134a78160108401602088016129bb565b01601001949350505050565b60006101406134d6838a5180516001600160a01b03168252602090810151910152565b602089015160408401526040890151606084015261350a608084018980516001600160a01b03168252602090810151910152565b6001600160a01b03871660c084015260e083018690526101008301819052613534818401866129df565b905082810361012084015261354981856129df565b9998505050505050505050565b60006020828403121561356857600080fd5b5051919050565b60006001820161358157613581612c4b565b5060010190565b600060018060a01b03808a168352886020840152808816604084015260e060608401526135b860e08401886129df565b95811660808401529390931660a082015260c0015250949350505050565b6001600160a01b0385811682526020820185905283166040820152608060608201819052600090613609908301846129df565b9695505050505050565b600081518084526020808501945080840160005b8381101561364c5781516001600160a01b031687529582019590820190600101613627565b509495945050505050565b600081518084526020808501945080840160005b8381101561364c5781518752958201959082019060010161366b565b602081526000825160c06020840152805160c060e085015280516101a085015260208101516101c085015260408101516101e085015260608101516136d86102008601826001600160a01b03169052565b5060808101516001600160a01b0390811661022086015260a0820151811661024086015260c08201511661026085015260e0810151610280850152610100808201516101406102a087018190526137336102e0880183613613565b6101209485015188820361019f19016102c08a0152949092506137568386613657565b94506020860151925060df198089870301858a01526137758685613613565b95506040870151828a0152606087015194508089870301838a015261379a86866129df565b955060808701516101608a015260a0870151965080898703016101808a015250505050506137c881836129df565b9150506020840151601f19808584030160408601526137e78383613657565b9250604086015191508085840301606086015261380483836129df565b92506060860151915061382260808601836001600160a01b03169052565b60808601519150808584030160a08601525061383e82826129df565b91505060a084015161385b60c08501826001600160a01b03169052565b509392505050565b60ff841681526001600160a01b0383166020820152606060408201819052600090613890908301846129df565b95945050505050565b6080815260006138ac6080830187613657565b85602084015282810360408401526138c48186613613565b905082810360608401526138d881856129df565b979650505050505050565b6001600160a01b0384168152606060208201819052600090613907908301856129df565b9050826040830152949350505050565b60006020828403121561392957600080fd5b815180151581146128f257600080fd5b815160009082906020808601845b8381101561345957815185529382019390820190600101613947565b808202811582820484141761083f5761083f612c4b565b60008261399757634e487b7160e01b600052601260045260246000fd5b50049056fe546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e7429a2646970667358221220b90dc8994937944c080df2a20a2bd0073ea81b4e76cac3cf05d2cc5fd5f9a03864736f6c63430008130033000000000000000000000000a5acba07788f16b4790fcbb09ca3b7fc8dd053a2000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3