use alloy::{
primitives::{bytes, Bytes},
providers::Provider,
};
use signet_constants::test_utils::{RU_ORDERS, RU_PASSAGE};
use signet_zenith::{RollupOrders, RollupPassage};
/// Get an instance of the pre-deployed Rollup Passage contract, deployed at the local testing address [`RU_PASSAGE`].
pub fn passage<P: Provider>(p: P) -> RollupPassage::RollupPassageInstance<P> {
RollupPassage::RollupPassageInstance::new(RU_PASSAGE, p)
}
/// Get an instance of the pre-deployed Rollup Orders contract, deployed at the local testing address [`RU_ORDERS`].
pub fn orders<P: Provider>(p: P) -> RollupOrders::RollupOrdersInstance<P> {
RollupOrders::RollupOrdersInstance::new(RU_ORDERS, p)
}
/// Rollup passage bytecode, from pecorino genesis.
pub const RU_PASSAGE_BYTECODE: Bytes = bytes!("0x60806040526004361061004d575f3560e01c80633930e39114610066578063685114a21461009b578063b269a425146100ba578063b42652e9146100d9578063eba1f981146100ec5761005d565b3661005d5761005b3361010b565b005b61005b3361010b565b348015610071575f80fd5b5061008561008036600461076c565b61015b565b60405161009291906107c4565b60405180910390f35b3480156100a6575f80fd5b5061005b6100b53660046107f0565b61021a565b3480156100c5575f80fd5b5061005b6100d436600461082a565b61024f565b61005b6100e736600461087b565b61010b565b3480156100f7575f80fd5b5061008561010636600461087b565b610290565b345f036101155750565b806001600160a01b03167f22d324652c93739755cf4581508b60875ebdd78c20c0cff5cf8e23452b2996313460405161015091815260200190565b60405180910390a250565b604080518082019091525f8152606060208201527fc5d03356b54a64d088070694ab907941e70a5ea4ae772ff6df7f162d054037b66040518060400160405280858152602001846001600160a01b03168152506040516020016101de929190918252805160208084019190915201516001600160a01b0316604082015260600190565b60408051601f1981840301815291815281516020928301208352805160a08101909152607e80825290916109db90830139602082015292915050565b610222610338565b6102376001600160a01b0383163330846103a7565b610242838383610407565b61024a6104ba565b505050565b610257610338565b61026961026383610290565b826104e4565b6102848261027a602084018461087b565b6020840135610407565b61028c6104ba565b5050565b604080518082019091525f81526060602082015260408051602080820183526001600160a01b038516825291516102fd927fa91a2bac0243280e19cfd0a3ae9d7639a15fa41d49eab3e0bf320c8485cc66a9929101918252516001600160a01b0316602082015260400190565b60408051601f1981840301815291815281516020928301208352805160a0810190915260648082529091610a59908301396020820152919050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c1561037857604051633ee5aeb560e01b815260040160405180910390fd5b6103a560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b906105ab565b565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526104019085906105b2565b50505050565b805f0361041357505050565b604051630852cd8d60e31b8152600481018290526001600160a01b038316906342966c68906024015f604051808303815f87803b158015610452575f80fd5b505af1158015610464573d5f803e3d5ffd5b50505050816001600160a01b0316836001600160a01b03167f4203bbd8ffd310b1341275d3ad6597e60a1ab2843f84e28c79e88d6f5da1c94d836040516104ad91815260200190565b60405180910390a3505050565b6103a55f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0061039f565b6001600160a01b037f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba31663137c29fe82610534602082013560408051808201909152308152602081019190915290565b61054460a086016080870161087b565b8651602088015161055860a0890189610894565b6040518863ffffffff1660e01b815260040161057a9796959493929190610906565b5f604051808303815f87803b158015610591575f80fd5b505af11580156105a3573d5f803e3d5ffd5b505050505050565b80825d5050565b5f6105c66001600160a01b03841683610618565b905080515f141580156105ea5750808060200190518101906105e891906109a5565b155b1561024a57604051635274afe760e01b81526001600160a01b03841660048201526024015b60405180910390fd5b606061062583835f61062c565b9392505050565b6060814710156106585760405163cf47918160e01b81524760048201526024810183905260440161060f565b5f80856001600160a01b0316848660405161067391906109c4565b5f6040518083038185875af1925050503d805f81146106ad576040519150601f19603f3d011682016040523d82523d5f602084013e6106b2565b606091505b50915091506106c28683836106cc565b9695505050505050565b6060826106e1576106dc82610728565b610625565b81511580156106f857506001600160a01b0384163b155b1561072157604051639996b31560e01b81526001600160a01b038516600482015260240161060f565b5080610625565b8051156107385780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b80356001600160a01b0381168114610767575f80fd5b919050565b5f806040838503121561077d575f80fd5b8235915061078d60208401610751565b90509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60208152815160208201525f60208301516040808401526107e86060840182610796565b949350505050565b5f805f60608486031215610802575f80fd5b61080b84610751565b925061081960208501610751565b929592945050506040919091013590565b5f806040838503121561083b575f80fd5b61084483610751565b9150602083013567ffffffffffffffff81111561085f575f80fd5b830160c08186031215610870575f80fd5b809150509250929050565b5f6020828403121561088b575f80fd5b61062582610751565b5f808335601e198436030181126108a9575f80fd5b83018035915067ffffffffffffffff8211156108c3575f80fd5b6020019150368190038213156108d7575f80fd5b9250929050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b0361091789610751565b168152602088810135818301526040808a0135908301526060808a01359083015287516001600160a01b0316608083015287015160a08201525f61096660c08301886001600160a01b03169052565b8560e0830152610140610100830152610983610140830186610796565b8281036101208401526109978185876108de565b9a9950505050505050505050565b5f602082840312156109b5575f80fd5b81518015158114610625575f80fd5b5f82518060208501845e5f92019182525091905056fe456e7465725769746e657373207769746e65737329456e7465725769746e6573732875696e7432353620726f6c6c7570436861696e49642c6164647265737320726f6c6c7570526563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e7429457869745769746e657373207769746e65737329457869745769746e657373286164647265737320686f7374526563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e7429a2646970667358221220a82b6f2ece68ba16cfccd79784985d20b0e5014e516fcd73930a3c56f491887b64736f6c634300081a0033");
/// Rollup orders, from pecorino genesis.
pub const RU_ORDERS_BYTECODE: Bytes = bytes!("0x608060405260043610610054575f3560e01c80630828f139146100585780631bbf03a81461008d57806362c06767146100ae578063897bc0d6146100cd5780639181004e146100e0578063f9c50441146100ff575b5f80fd5b348015610063575f80fd5b50610077610072366004610fe9565b610112565b6040516100849190611050565b60405180910390f35b348015610098575f80fd5b506100ac6100a736600461108a565b61024e565b005b3480156100b9575f80fd5b506100ac6100c83660046110ed565b6102c8565b6100ac6100db366004610fe9565b610364565b3480156100eb575f80fd5b506100ac6100fa366004611127565b6103b7565b6100ac61010d366004611199565b610453565b604080518082019091525f81526060602082015281515f816001600160401b0381111561014157610141610e5c565b60405190808252806020026020018201604052801561016a578160200160208202803683370190505b5090505f5b828110156101fe577f988262d9186cf8a1cd1dd5e2cc7bfa353f55a542d86db1fcd06e076a6544250d8582815181106101aa576101aa61127d565b60200260200101516040516020016101c39291906112c8565b604051602081830303815290604052805190602001208282815181106101eb576101eb61127d565b602090810291909101015260010161016f565b508060405160200161021091906112dc565b60408051601f1981840301815291815281516020928301208552805160c081019091526084808252909161168f908301396020840152509092915050565b6102566104b8565b61028561026283610112565b61027f846102708580611311565b61027a908061132f565b610527565b83610709565b7f14b3027353aba71f468d178fdede9ac211a25ae484028823bce1e6700e58e624826040516102b491906113c0565b60405180910390a16102c46107bb565b5050565b6102d06104b8565b6001600160a01b0382166102f6576102f16001600160a01b038416826107e5565b61030a565b61030a6001600160a01b0383168483610884565b816001600160a01b0316836001600160a01b03167fed679328aebf74ede77ae09efcf36e90244f83643dadac1c2d9f0b21a46f6ab78360405161034f91815260200190565b60405180910390a361035f6107bb565b505050565b61036c6104b8565b610375816108e3565b7f14b3027353aba71f468d178fdede9ac211a25ae484028823bce1e6700e58e624816040516103a491906113c0565b60405180910390a16103b46107bb565b50565b6103bf6104b8565b6103e86103cb83610112565b61027f856103d98580611311565b6103e3908061132f565b610a28565b7f80c9b8738a5ff299b770efb55e4372a5fc655294aca7145b3c529c2d89732d626104138280611311565b604001356104336104248480611311565b61042e908061132f565b610af1565b84604051610443939291906113d2565b60405180910390a161035f6107bb565b61045b6104b8565b8242111561047c576040516362b439dd60e11b815260040160405180910390fd5b61048582610be8565b7f80c9b8738a5ff299b770efb55e4372a5fc655294aca7145b3c529c2d89732d62838383604051610443939291906113d2565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c156104f857604051633ee5aeb560e01b815260040160405180910390fd5b61052560017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b90610c78565b565b8251606090821461054e576040516001621398b960e31b0319815260040160405180910390fd5b816001600160401b0381111561056657610566610e5c565b6040519080825280602002602001820160405280156105aa57816020015b604080518082019091525f80825260208201528152602001906001900390816105845790505b5090505f5b82811015610701578481815181106105c9576105c961127d565b60200260200101515f01516001600160a01b03168484838181106105ef576105ef61127d565b6106059260206040909202019081019150611450565b6001600160a01b03161461062c57604051635f670cf360e11b815260040160405180910390fd5b84818151811061063e5761063e61127d565b60200260200101516020015184848381811061065c5761065c61127d565b905060400201602001351461068457604051635f670cf360e11b815260040160405180910390fd5b60405180604001604052808683815181106106a1576106a161127d565b6020026020010151604001516001600160a01b031681526020018683815181106106cd576106cd61127d565b6020026020010151602001518152508282815181106106ee576106ee61127d565b60209081029190910101526001016105af565b509392505050565b6001600160a01b037f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba31663fe8ec1a76107428380611311565b846107536040860160208701611450565b875160208901516107676040890189611469565b6040518863ffffffff1660e01b81526004016107899796959493929190611521565b5f604051808303815f87803b1580156107a0575f80fd5b505af11580156107b2573d5f803e3d5ffd5b50505050505050565b6105255f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0061051f565b804710156108145760405163cf47918160e01b8152476004820152602481018290526044015b60405180910390fd5b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f811461085d576040519150601f19603f3d011682016040523d82523d5f602084013e610862565b606091505b505090508061035f5760405163d6bda27560e01b815260040160405180910390fd5b6040516001600160a01b0383811660248301526044820183905261035f91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050610c7f565b345f5b825181101561035f575f6001600160a01b031683828151811061090b5761090b61127d565b60200260200101515f01516001600160a01b0316036109aa578281815181106109365761093661127d565b6020026020010151602001518261094d919061163a565b91506109a58382815181106109645761096461127d565b6020026020010151602001518483815181106109825761098261127d565b6020026020010151604001516001600160a01b03166107e590919063ffffffff16565b610a20565b610a20338483815181106109c0576109c061127d565b6020026020010151604001518584815181106109de576109de61127d565b6020026020010151602001518685815181106109fc576109fc61127d565b60200260200101515f01516001600160a01b0316610ce0909392919063ffffffff16565b6001016108e6565b6060816001600160401b03811115610a4257610a42610e5c565b604051908082528060200260200182016040528015610a8657816020015b604080518082019091525f8082526020820152815260200190600190039081610a605790505b5090505f5b82811015610701576040518060400160405280866001600160a01b03168152602001858584818110610abf57610abf61127d565b90506040020160200135815250828281518110610ade57610ade61127d565b6020908102919091010152600101610a8b565b6060816001600160401b03811115610b0b57610b0b610e5c565b604051908082528060200260200182016040528015610b4f57816020015b604080518082019091525f8082526020820152815260200190600190039081610b295790505b5090505f5b82811015610be1576040518060400160405280858584818110610b7957610b7961127d565b610b8f9260206040909202019081019150611450565b6001600160a01b03168152602001858584818110610baf57610baf61127d565b90506040020160200135815250828281518110610bce57610bce61127d565b6020908102919091010152600101610b54565b5092915050565b345f5b825181101561035f575f6001600160a01b0316838281518110610c1057610c1061127d565b60200260200101515f01516001600160a01b031603610c5957828181518110610c3b57610c3b61127d565b60200260200101516020015182610c52919061163a565b9150610c70565b610c7033308584815181106109de576109de61127d565b600101610beb565b80825d5050565b5f610c936001600160a01b03841683610d1f565b905080515f14158015610cb7575080806020019051810190610cb59190611659565b155b1561035f57604051635274afe760e01b81526001600160a01b038416600482015260240161080b565b6040516001600160a01b038481166024830152838116604483015260648201839052610d199186918216906323b872dd906084016108b1565b50505050565b6060610d2c83835f610d35565b90505b92915050565b606081471015610d615760405163cf47918160e01b81524760048201526024810183905260440161080b565b5f80856001600160a01b03168486604051610d7c9190611678565b5f6040518083038185875af1925050503d805f8114610db6576040519150601f19603f3d011682016040523d82523d5f602084013e610dbb565b606091505b5091509150610dcb868383610dd7565b925050505b9392505050565b606082610dec57610de782610e33565b610dd0565b8151158015610e0357506001600160a01b0384163b155b15610e2c57604051639996b31560e01b81526001600160a01b038516600482015260240161080b565b5080610dd0565b805115610e435780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715610e9257610e92610e5c565b60405290565b604080519081016001600160401b0381118282101715610e9257610e92610e5c565b604051601f8201601f191681016001600160401b0381118282101715610ee257610ee2610e5c565b604052919050565b5f6001600160401b03821115610f0257610f02610e5c565b5060051b60200190565b80356001600160a01b0381168114610f22575f80fd5b919050565b5f82601f830112610f36575f80fd5b8135610f49610f4482610eea565b610eba565b8082825260208201915060208360071b860101925085831115610f6a575f80fd5b602085015b83811015610fdf5760808188031215610f86575f80fd5b610f8e610e70565b610f9782610f0c565b815260208281013590820152610faf60408301610f0c565b6040820152606082013563ffffffff81168114610fca575f80fd5b60608201528352602090920191608001610f6f565b5095945050505050565b5f60208284031215610ff9575f80fd5b81356001600160401b0381111561100e575f80fd5b61101a84828501610f27565b949350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60208152815160208201525f602083015160408084015261101a6060840182611022565b5f60608284031215611084575f80fd5b50919050565b5f806040838503121561109b575f80fd5b82356001600160401b038111156110b0575f80fd5b6110bc85828601610f27565b92505060208301356001600160401b038111156110d7575f80fd5b6110e385828601611074565b9150509250929050565b5f805f606084860312156110ff575f80fd5b61110884610f0c565b925061111660208501610f0c565b929592945050506040919091013590565b5f805f60608486031215611139575f80fd5b61114284610f0c565b925060208401356001600160401b0381111561115c575f80fd5b61116886828701610f27565b92505060408401356001600160401b03811115611183575f80fd5b61118f86828701611074565b9150509250925092565b5f805f606084860312156111ab575f80fd5b8335925060208401356001600160401b038111156111c7575f80fd5b8401601f810186136111d7575f80fd5b80356111e5610f4482610eea565b8082825260208201915060208360061b850101925088831115611206575f80fd5b6020840193505b82841015611254576040848a031215611224575f80fd5b61122c610e98565b61123585610f0c565b815260208581013581830152908352604090940193919091019061120d565b945050505060408401356001600160401b03811115611271575f80fd5b61118f86828701610f27565b634e487b7160e01b5f52603260045260245ffd5b80516001600160a01b039081168352602080830151908401526040808301519091169083015260609081015163ffffffff16910152565b82815260a08101610dd06020830184611291565b81515f90829060208501835b828110156113065781518452602093840193909101906001016112e8565b509195945050505050565b5f8235605e19833603018112611325575f80fd5b9190910192915050565b5f808335601e19843603018112611344575f80fd5b8301803591506001600160401b0382111561135d575f80fd5b6020019150600681901b3603821315611374575f80fd5b9250929050565b5f8151808452602084019350602083015f5b828110156113b6576113a0868351611291565b608095909501946020919091019060010161138d565b5093949350505050565b602081525f610d2c602083018461137b565b5f60608201858352606060208401528085518083526080850191506020870192505f5b818110156114315761141b83855180516001600160a01b03168252602090810151910152565b60209390930192604092909201916001016113f5565b50508381036040850152611445818661137b565b979650505050505050565b5f60208284031215611460575f80fd5b610d2c82610f0c565b5f808335601e1984360301811261147e575f80fd5b8301803591506001600160401b03821115611497575f80fd5b602001915036819003821315611374575f80fd5b5f8151808452602084019350602083015f5b828110156113b6576114e386835180516001600160a01b03168252602090810151910152565b60409590950194602091909101906001016114bd565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60c081525f61012082018935601e198b360301811261153e575f80fd5b8a016020810190356001600160401b03811115611559575f80fd5b8060061b360382131561156a575f80fd5b606060c086015291829052905f9061014085015b818310156115b7576001600160a01b0361159785610f0c565b16815260208481013590820152604093840193600193909301920161157e565b60208d81013560e088015260408e013561010088018190528783039188019190915293506115e5818d6114ab565b93505050506115ff60408401896001600160a01b03169052565b86606084015282810360808401526116178187611022565b905082810360a084015261162c8185876114f9565b9a9950505050505050505050565b81810381811115610d2f57634e487b7160e01b5f52601160045260245ffd5b5f60208284031215611669575f80fd5b81518015158114610dd0575f80fd5b5f82518060208501845e5f92019182525091905056fe4f75747075745b5d206f757470757473294f7574707574286164647265737320746f6b656e2c75696e7432353620616d6f756e742c6164647265737320726563697069656e742c75696e74333220636861696e496429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e7429a2646970667358221220322fe8b32453c17a0efd4f702e415163224990591aefcb85e698039547a4393764736f6c634300081a0033");
/// The HostOrders contract bytecode.
pub const HOST_ORDERS_BYTECODE: Bytes = bytes!("0x608060405260043610610033575f3560e01c80630828f139146100375780631bbf03a814610073578063897bc0d61461009b575b5f80fd5b348015610042575f80fd5b5061005d60048036038101906100589190610d0e565b6100b7565b60405161006a9190610e07565b60405180910390f35b34801561007e575f80fd5b5061009960048036038101906100949190610e49565b6101ff565b005b6100b560048036038101906100b09190610d0e565b610282565b005b6100bf610a24565b5f825190505f8167ffffffffffffffff8111156100df576100de610a93565b5b60405190808252806020026020018201604052801561010d5781602001602082028036833780820191505090505b5090505f5b828110156101a7577f988262d9186cf8a1cd1dd5e2cc7bfa353f55a542d86db1fcd06e076a6544250d85828151811061014e5761014d610ebf565b5b6020026020010151604051602001610167929190610f7b565b604051602081830303815290604052805190602001208282815181106101905761018f610ebf565b5b602002602001018181525050806001019050610112565b50806040516020016101b99190611053565b60405160208183030381529060405280519060200120835f0181815250506040518060c00160405280608481526020016117286084913983602001819052505050919050565b6102076102d5565b61023f610213836100b7565b6102398484805f01906102269190611075565b805f0190610234919061109c565b610302565b8361055f565b7f14b3027353aba71f468d178fdede9ac211a25ae484028823bce1e6700e58e6248260405161026e91906111f9565b60405180910390a161027e61062b565b5050565b61028a6102d5565b6102938161064f565b7f14b3027353aba71f468d178fdede9ac211a25ae484028823bce1e6700e58e624816040516102c291906111f9565b60405180910390a16102d261062b565b50565b6102dd6107dd565b61030060016102f26102ed61081e565b610847565b61085090919063ffffffff16565b565b606083518383905014610341576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8282905067ffffffffffffffff81111561035e5761035d610a93565b5b60405190808252806020026020018201604052801561039757816020015b610384610a40565b81526020019060019003908161037c5790505b5090505f5b83839050811015610557578481815181106103ba576103b9610ebf565b5b60200260200101515f015173ffffffffffffffffffffffffffffffffffffffff168484838181106103ee576103ed610ebf565b5b9050604002015f0160208101906104059190611219565b73ffffffffffffffffffffffffffffffffffffffff1614610452576040517fbece19e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84818151811061046557610464610ebf565b5b60200260200101516020015184848381811061048457610483610ebf565b5b90506040020160200135146104c5576040517fbece19e600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180604001604052808683815181106104e3576104e2610ebf565b5b60200260200101516040015173ffffffffffffffffffffffffffffffffffffffff16815260200186838151811061051d5761051c610ebf565b5b60200260200101516020015181525082828151811061053f5761053e610ebf565b5b6020026020010181905250808060010191505061039c565b509392505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fe8ec1a782805f01906105aa9190611075565b848460200160208101906105be9190611219565b875f015188602001518780604001906105d79190611244565b6040518863ffffffff1660e01b81526004016105f997969594939291906115fb565b5f604051808303815f87803b158015610610575f80fd5b505af1158015610622573d5f803e3d5ffd5b50505050505050565b61064d5f61063f61063a61081e565b610847565b61085090919063ffffffff16565b565b5f3490505f5b82518110156107d8575f73ffffffffffffffffffffffffffffffffffffffff1683828151811061068857610687610ebf565b5b60200260200101515f015173ffffffffffffffffffffffffffffffffffffffff1603610744578281815181106106c1576106c0610ebf565b5b602002602001015160200151826106d891906116a5565b915061073f8382815181106106f0576106ef610ebf565b5b60200260200101516020015184838151811061070f5761070e610ebf565b5b60200260200101516040015173ffffffffffffffffffffffffffffffffffffffff1661085790919063ffffffff16565b6107cb565b6107ca3384838151811061075b5761075a610ebf565b5b60200260200101516040015185848151811061077a57610779610ebf565b5b60200260200101516020015186858151811061079957610798610ebf565b5b60200260200101515f015173ffffffffffffffffffffffffffffffffffffffff1661090e909392919063ffffffff16565b5b8080600101915050610655565b505050565b6107e5610963565b1561081c576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005f1b905090565b5f819050919050565b80825d5050565b8047101561089e5747816040517fcf4791810000000000000000000000000000000000000000000000000000000081526004016108959291906116e7565b60405180910390fd5b6108b7828260405180602001604052805f815250610981565b61090a575f6108c4610997565b11156108d7576108d261099e565b610909565b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5050565b61091c8484848460016109a9565b61095d57836040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401610954919061170e565b60405180910390fd5b50505050565b5f61097c61097761097261081e565b610847565b610a1a565b905090565b5f805f83516020850186885af190509392505050565b5f3d905090565b6040513d5f823e3d81fd5b5f806323b872dd60e01b9050604051815f525f1960601c87166004525f1960601c86166024528460445260205f60645f808c5af1925060015f51148316610a075783831516156109fb573d5f823e3d81fd5b5f883b113d1516831692505b806040525f606052505095945050505050565b5f815c9050919050565b60405180604001604052805f8019168152602001606081525090565b60405180604001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81525090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610ac982610a83565b810181811067ffffffffffffffff82111715610ae857610ae7610a93565b5b80604052505050565b5f610afa610a6e565b9050610b068282610ac0565b919050565b5f67ffffffffffffffff821115610b2557610b24610a93565b5b602082029050602081019050919050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610b6782610b3e565b9050919050565b610b7781610b5d565b8114610b81575f80fd5b50565b5f81359050610b9281610b6e565b92915050565b5f819050919050565b610baa81610b98565b8114610bb4575f80fd5b50565b5f81359050610bc581610ba1565b92915050565b5f63ffffffff82169050919050565b610be381610bcb565b8114610bed575f80fd5b50565b5f81359050610bfe81610bda565b92915050565b5f60808284031215610c1957610c18610b3a565b5b610c236080610af1565b90505f610c3284828501610b84565b5f830152506020610c4584828501610bb7565b6020830152506040610c5984828501610b84565b6040830152506060610c6d84828501610bf0565b60608301525092915050565b5f610c8b610c8684610b0b565b610af1565b90508083825260208201905060808402830185811115610cae57610cad610b36565b5b835b81811015610cd75780610cc38882610c04565b845260208401935050608081019050610cb0565b5050509392505050565b5f82601f830112610cf557610cf4610a7f565b5b8135610d05848260208601610c79565b91505092915050565b5f60208284031215610d2357610d22610a77565b5b5f82013567ffffffffffffffff811115610d4057610d3f610a7b565b5b610d4c84828501610ce1565b91505092915050565b5f819050919050565b610d6781610d55565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f610d9f82610d6d565b610da98185610d77565b9350610db9818560208601610d87565b610dc281610a83565b840191505092915050565b5f604083015f830151610de25f860182610d5e565b5060208301518482036020860152610dfa8282610d95565b9150508091505092915050565b5f6020820190508181035f830152610e1f8184610dcd565b905092915050565b5f80fd5b5f60608284031215610e4057610e3f610e27565b5b81905092915050565b5f8060408385031215610e5f57610e5e610a77565b5b5f83013567ffffffffffffffff811115610e7c57610e7b610a7b565b5b610e8885828601610ce1565b925050602083013567ffffffffffffffff811115610ea957610ea8610a7b565b5b610eb585828601610e2b565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b610ef581610d55565b82525050565b610f0481610b5d565b82525050565b610f1381610b98565b82525050565b610f2281610bcb565b82525050565b608082015f820151610f3c5f850182610efb565b506020820151610f4f6020850182610f0a565b506040820151610f626040850182610efb565b506060820151610f756060850182610f19565b50505050565b5f60a082019050610f8e5f830185610eec565b610f9b6020830184610f28565b9392505050565b5f81519050919050565b5f81905092915050565b5f819050602082019050919050565b610fce81610d55565b82525050565b5f610fdf8383610fc5565b60208301905092915050565b5f602082019050919050565b5f61100182610fa2565b61100b8185610fac565b935061101683610fb6565b805f5b8381101561104657815161102d8882610fd4565b975061103883610feb565b925050600181019050611019565b5085935050505092915050565b5f61105e8284610ff7565b915081905092915050565b5f80fd5b5f80fd5b5f80fd5b5f823560016060038336030381126110905761108f611069565b5b80830191505092915050565b5f80833560016020038436030381126110b8576110b7611069565b5b80840192508235915067ffffffffffffffff8211156110da576110d961106d565b5b6020830192506040820236038313156110f6576110f5611071565b5b509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b608082015f82015161113b5f850182610efb565b50602082015161114e6020850182610f0a565b5060408201516111616040850182610efb565b5060608201516111746060850182610f19565b50505050565b5f6111858383611127565b60808301905092915050565b5f602082019050919050565b5f6111a7826110fe565b6111b18185611108565b93506111bc83611118565b805f5b838110156111ec5781516111d3888261117a565b97506111de83611191565b9250506001810190506111bf565b5085935050505092915050565b5f6020820190508181035f830152611211818461119d565b905092915050565b5f6020828403121561122e5761122d610a77565b5b5f61123b84828501610b84565b91505092915050565b5f80833560016020038436030381126112605761125f611069565b5b80840192508235915067ffffffffffffffff8211156112825761128161106d565b5b60208301925060018202360383131561129e5761129d611071565b5b509250929050565b5f80fd5b5f80fd5b5f80fd5b5f80833560016020038436030381126112ce576112cd6112ae565b5b83810192508235915060208301925067ffffffffffffffff8211156112f6576112f56112a6565b5b60408202360383131561130c5761130b6112aa565b5b509250929050565b5f82825260208201905092915050565b5f819050919050565b5f61133b6020840184610b84565b905092915050565b5f6113516020840184610bb7565b905092915050565b604082016113695f83018361132d565b6113755f850182610efb565b506113836020830183611343565b6113906020850182610f0a565b50505050565b5f6113a18383611359565b60408301905092915050565b5f82905092915050565b5f604082019050919050565b5f6113ce8385611314565b93506113d982611324565b805f5b85811015611411576113ee82846113ad565b6113f88882611396565b9750611403836113b7565b9250506001810190506113dc565b5085925050509392505050565b5f6060830161142f5f8401846112b2565b8583035f8701526114418382846113c3565b925050506114526020840184611343565b61145f6020860182610f0a565b5061146d6040840184611343565b61147a6040860182610f0a565b508091505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b604082015f8201516114c25f850182610efb565b5060208201516114d56020850182610f0a565b50505050565b5f6114e683836114ae565b60408301905092915050565b5f602082019050919050565b5f61150882611485565b611512818561148f565b935061151d8361149f565b805f5b8381101561154d57815161153488826114db565b975061153f836114f2565b925050600181019050611520565b5085935050505092915050565b61156381610b5d565b82525050565b5f82825260208201905092915050565b5f61158382610d6d565b61158d8185611569565b935061159d818560208601610d87565b6115a681610a83565b840191505092915050565b5f82825260208201905092915050565b828183375f83830152505050565b5f6115da83856115b1565b93506115e78385846115c1565b6115f083610a83565b840190509392505050565b5f60c0820190508181035f830152611613818a61141e565b9050818103602083015261162781896114fe565b9050611636604083018861155a565b6116436060830187610eec565b81810360808301526116558186611579565b905081810360a083015261166a8184866115cf565b905098975050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6116af82610b98565b91506116ba83610b98565b92508282039050818111156116d2576116d1611678565b5b92915050565b6116e181610b98565b82525050565b5f6040820190506116fa5f8301856116d8565b61170760208301846116d8565b9392505050565b5f6020820190506117215f83018461155a565b9291505056fe4f75747075745b5d206f757470757473294f7574707574286164647265737320746f6b656e2c75696e7432353620616d6f756e742c6164647265737320726563697069656e742c75696e74333220636861696e496429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e7429a26469706673582212204184dbeabea50eb3ba11a8c8ef767e5223cdcc29a0ad181391654235ea7fda5164736f6c634300081a0033");
/// The Host Passage contract bytecode.
pub const HOST_PASSAGE_BYTECODE: Bytes = bytes!("0x6080604052600436106100aa575f3560e01c8063b32ed95e11610063578063b32ed95e14610221578063b7e1917c14610249578063d014c01f14610273578063d9caed121461028f578063ea3b9ba1146102b7578063eba1f981146102d3576100db565b806322ac3885146101075780633930e3911461012f578063416ef5a81461016b5780634f8b4a3c14610193578063942c39db146101cf57806395577b72146101f7576100db565b366100db576100d97f00000000000000000000000000000000000000000000000000000000000000003361030f565b005b6101057f00000000000000000000000000000000000000000000000000000000000000003361030f565b005b348015610112575f80fd5b5061012d60048036038101906101289190610f72565b61036b565b005b34801561013a575f80fd5b5061015560048036038101906101509190610fd6565b6103ba565b60405161016291906110d6565b60405180910390f35b348015610176575f80fd5b50610191600480360381019061018c91906110f6565b610464565b005b34801561019e575f80fd5b506101b960048036038101906101b49190611146565b610495565b6040516101c6919061118b565b60405180910390f35b3480156101da575f80fd5b506101f560048036038101906101f091906111c6565b6104b1565b005b348015610202575f80fd5b5061020b610502565b6040516102189190611241565b60405180910390f35b34801561022c575f80fd5b5061024760048036038101906102429190611284565b610526565b005b348015610254575f80fd5b5061025d61060d565b60405161026a91906112d1565b60405180910390f35b61028d60048036038101906102889190611146565b610631565b005b34801561029a575f80fd5b506102b560048036038101906102b091906110f6565b61065e565b005b6102d160048036038101906102cc9190610fd6565b61030f565b005b3480156102de575f80fd5b506102f960048036038101906102f49190611146565b6107ea565b60405161030691906110d6565b60405180910390f35b5f340315610367578073ffffffffffffffffffffffffffffffffffffffff16827f5f67e0a44fbb8ec0f3794c6687c657244a50a7da2411d14707aa219d86b854923460405161035e9190611241565b60405180910390a35b5050565b61037361088d565b6103a03330838573ffffffffffffffffffffffffffffffffffffffff166108ba909392919063ffffffff16565b6103ac8484848461090f565b6103b4610a0e565b50505050565b6103c2610e93565b7fc5d03356b54a64d088070694ab907941e70a5ea4ae772ff6df7f162d054037b660405180604001604052808581526020018473ffffffffffffffffffffffffffffffffffffffff1681525060405160200161041f929190611344565b60405160208183030381529060405280519060200120815f0181815250506040518060a00160405280607e815260200161163e607e9139816020018190525092915050565b6104907f000000000000000000000000000000000000000000000000000000000000000084848461036b565b505050565b5f602052805f5260405f205f915054906101000a900460ff1681565b6104b961088d565b6104cc6104c684846103ba565b82610a32565b6104f58383835f015f015f0160208101906104e79190611146565b845f015f016020013561090f565b6104fd610a0e565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105ab576040517f21dba17e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8015155f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151514610609576106088282610b01565b5b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b61065b7f00000000000000000000000000000000000000000000000000000000000000008261030f565b50565b61066661088d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106eb576040517f21dba17e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361074c57610747818373ffffffffffffffffffffffffffffffffffffffff16610b9e90919063ffffffff16565b610778565b61077782828573ffffffffffffffffffffffffffffffffffffffff16610c559092919063ffffffff16565b5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f2717ead6b9200dd235aad468c9809ea400fe33ac69b5bfaa6d3e90fc922b6398836040516107d59190611241565b60405180910390a36107e5610a0e565b505050565b6107f2610e93565b7fa91a2bac0243280e19cfd0a3ae9d7639a15fa41d49eab3e0bf320c8485cc66a960405180602001604052808473ffffffffffffffffffffffffffffffffffffffff16815250604051602001610849929190611385565b60405160208183030381529060405280519060200120815f0181815250506040518060a00160405280606481526020016116bc606491398160200181905250919050565b610895610ca8565b6108b860016108aa6108a5610ce9565b610d12565b610d1b90919063ffffffff16565b565b6108c8848484846001610d22565b61090957836040517f5274afe700000000000000000000000000000000000000000000000000000000815260040161090091906112d1565b60405180910390fd5b50505050565b5f810315610a08575f808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166109a157816040517f087fe76b00000000000000000000000000000000000000000000000000000000815260040161099891906112d1565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f918d96675770fc73e96feacdd04b31ed125e0e5e0223938cd0043a42228a49e4846040516109ff9190611241565b60405180910390a45b50505050565b610a305f610a22610a1d610ce9565b610d12565b610d1b90919063ffffffff16565b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663137c29fe825f01610a82845f015f0160200135610d93565b846080016020810190610a959190611146565b865f01518760200151878060a00190610aae91906113b8565b6040518863ffffffff1660e01b8152600401610ad097969594939291906115a4565b5f604051808303815f87803b158015610ae7575f80fd5b505af1158015610af9573d5f803e3d5ffd5b505050505050565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f2f8601534249821eb3b2cf9f1d88960ce5b7feb89b9e4a117d2ac7725c56539360405160405180910390a35050565b80471015610be55747816040517fcf479181000000000000000000000000000000000000000000000000000000008152600401610bdc929190611616565b60405180910390fd5b610bfe828260405180602001604052805f815250610de1565b610c51575f610c0b610df7565b1115610c1e57610c19610dfe565b610c50565b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5050565b610c628383836001610e09565b610ca357826040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401610c9a91906112d1565b60405180910390fd5b505050565b610cb0610e6b565b15610ce7576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005f1b905090565b5f819050919050565b80825d5050565b5f806323b872dd60e01b9050604051815f525f1960601c87166004525f1960601c86166024528460445260205f60645f808c5af1925060015f51148316610d80578383151615610d74573d5f823e3d81fd5b5f883b113d1516831692505b806040525f606052505095945050505050565b610d9b610eaf565b30815f019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081816020018181525050919050565b5f805f83516020850186885af190509392505050565b5f3d905090565b6040513d5f823e3d81fd5b5f8063a9059cbb60e01b9050604051815f525f1960601c86166004528460245260205f60445f808b5af1925060015f51148316610e5d578383151615610e51573d5f823e3d81fd5b5f873b113d1516831692505b806040525050949350505050565b5f610e84610e7f610e7a610ce9565b610d12565b610e89565b905090565b5f815c9050919050565b60405180604001604052805f8019168152602001606081525090565b60405180604001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81525090565b5f80fd5b5f80fd5b5f819050919050565b610ef781610ee5565b8114610f01575f80fd5b50565b5f81359050610f1281610eee565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610f4182610f18565b9050919050565b610f5181610f37565b8114610f5b575f80fd5b50565b5f81359050610f6c81610f48565b92915050565b5f805f8060808587031215610f8a57610f89610edd565b5b5f610f9787828801610f04565b9450506020610fa887828801610f5e565b9350506040610fb987828801610f5e565b9250506060610fca87828801610f04565b91505092959194509250565b5f8060408385031215610fec57610feb610edd565b5b5f610ff985828601610f04565b925050602061100a85828601610f5e565b9150509250929050565b5f819050919050565b61102681611014565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61106e8261102c565b6110788185611036565b9350611088818560208601611046565b61109181611054565b840191505092915050565b5f604083015f8301516110b15f86018261101d565b50602083015184820360208601526110c98282611064565b9150508091505092915050565b5f6020820190508181035f8301526110ee818461109c565b905092915050565b5f805f6060848603121561110d5761110c610edd565b5b5f61111a86828701610f5e565b935050602061112b86828701610f5e565b925050604061113c86828701610f04565b9150509250925092565b5f6020828403121561115b5761115a610edd565b5b5f61116884828501610f5e565b91505092915050565b5f8115159050919050565b61118581611171565b82525050565b5f60208201905061119e5f83018461117c565b92915050565b5f80fd5b5f60c082840312156111bd576111bc6111a4565b5b81905092915050565b5f805f606084860312156111dd576111dc610edd565b5b5f6111ea86828701610f04565b93505060206111fb86828701610f5e565b925050604084013567ffffffffffffffff81111561121c5761121b610ee1565b5b611228868287016111a8565b9150509250925092565b61123b81610ee5565b82525050565b5f6020820190506112545f830184611232565b92915050565b61126381611171565b811461126d575f80fd5b50565b5f8135905061127e8161125a565b92915050565b5f806040838503121561129a57611299610edd565b5b5f6112a785828601610f5e565b92505060206112b885828601611270565b9150509250929050565b6112cb81610f37565b82525050565b5f6020820190506112e45f8301846112c2565b92915050565b6112f381611014565b82525050565b61130281610ee5565b82525050565b61131181610f37565b82525050565b604082015f82015161132b5f8501826112f9565b50602082015161133e6020850182611308565b50505050565b5f6060820190506113575f8301856112ea565b6113646020830184611317565b9392505050565b602082015f82015161137f5f850182611308565b50505050565b5f6040820190506113985f8301856112ea565b6113a5602083018461136b565b9392505050565b5f80fd5b5f80fd5b5f80fd5b5f80833560016020038436030381126113d4576113d36113ac565b5b80840192508235915067ffffffffffffffff8211156113f6576113f56113b0565b5b602083019250600182023603831315611412576114116113b4565b5b509250929050565b5f82905092915050565b5f6114326020840184610f5e565b905092915050565b5f6114486020840184610f04565b905092915050565b604082016114605f830183611424565b61146c5f850182611308565b5061147a602083018361143a565b61148760208501826112f9565b50505050565b6080820161149d5f83018361141a565b6114a95f850182611450565b506114b7604083018361143a565b6114c460408501826112f9565b506114d2606083018361143a565b6114df60608501826112f9565b50505050565b604082015f8201516114f95f850182611308565b50602082015161150c60208501826112f9565b50505050565b5f82825260208201905092915050565b5f61152c8261102c565b6115368185611512565b9350611546818560208601611046565b61154f81611054565b840191505092915050565b5f82825260208201905092915050565b828183375f83830152505050565b5f611583838561155a565b935061159083858461156a565b61159983611054565b840190509392505050565b5f610140820190506115b85f83018a61148d565b6115c560808301896114e5565b6115d260c08301886112c2565b6115df60e08301876112ea565b8181036101008301526115f28186611522565b9050818103610120830152611608818486611578565b905098975050505050505050565b5f6040820190506116295f830185611232565b6116366020830184611232565b939250505056fe456e7465725769746e657373207769746e65737329456e7465725769746e6573732875696e7432353620726f6c6c7570436861696e49642c6164647265737320726f6c6c7570526563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e7429457869745769746e657373207769746e65737329457869745769746e657373286164647265737320686f7374526563697069656e7429546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e7429a2646970667358221220500ef88c22eec3ae76b6ccee7042f4fe83ba0d0b849aeab36565f5186d511c8164736f6c634300081a0033");